Mercurial > ~dholland > hg > ag > index.cgi
diff tests/agcl/contrib/good/yabasic.c @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/agcl/contrib/good/yabasic.c Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,5737 @@ +/* + YABASIC --- a tiny integrated Basic Compiler/Interpreter + + BISON - part + + this Program is subject to the GNU General Public License; + see the file yabasic.c for details. +*/ + + +//#undef WINDOWS +#include "yabasic.h" /* definitions of yabasic */ +#include <malloc.h> + +#if HAVE_ALLOCA_H +#include <alloca.h> +#endif + +void __yy_bcopy(char *,char *,int); /* prototype missing */ + +int yylineno=1; +int yylex(void); + +char *popString(int); +void pushChar(int); + + +/* + * AnaGram, A System for Syntax Directed Programming + * File generated by: ... + * + * AnaGram Parsing Engine + * Copyright 1993-2002 Parsifal Software. All Rights Reserved. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef YABASIC_H +#include "yabasic.h" +#endif + +#ifndef YABASIC_H +#error Mismatched header file +#endif + +#include <ctype.h> +#include <stdio.h> + +#define RULE_CONTEXT (&((PCB).cs[(PCB).ssx])) +#define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx]) +#define CONTEXT ((PCB).cs[(PCB).ssx]) + + + +parseBasic_pcb_type parseBasic_pcb; +#define PCB parseBasic_pcb + +#line - "yabasic.syn" +#define CHAR_STACK_LENGTH 500 + +static char charStack[CHAR_STACK_LENGTH+1]; +static char *charStackTop = charStack; + +/* Define an error record */ +typedef struct { + char *message; /* identifies error */ + int line; /* location of error */ + int column; +} ErrorRecord; + +ErrorRecord errorRecord; /* define an error record */ + +void diagnoseError(char *msg) { + if (parseBasic_pcb.exit_flag == AG_RUNNING_CODE) + parseBasic_pcb.exit_flag = AG_SEMANTIC_ERROR_CODE; /* stop parse */ + errorRecord.message = msg; + errorRecord.line = parseBasic_pcb.line; + errorRecord.column = parseBasic_pcb.column; +} + +void pushChar(int c) { /* append char to name string */ + if (charStackTop < charStack+CHAR_STACK_LENGTH) { + *charStackTop++ = (char) c; + return; + } + /* buffer overflow, kill parse and issue diagnostic */ + diagnoseError("Character Stack Overflow"); +} + +static char *popString(int nChars) { /* get string */ + *charStackTop = 0; + return charStackTop -= nChars; +} + +FILE *parserInputFile; +void switch_to_my_file(FILE *inputfile) /* switches lex input to given file */ +{ + parserInputFile = inputfile; + return; +} + +#define GET_INPUT ((PCB).input_code = fgetc(parserInputFile)) + +int yyparse() { + parseBasic(); + return !(PCB.exit_flag == AG_SUCCESS_CODE); +} + + +#line - "yabasic.c" + +#ifndef CONVERT_CASE + +static const char agCaseTable[31] = { + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 +}; + +static int agConvertCase(int c) { + if (c >= 'a' && c <= 'z') return c ^= 0x20; + if (c >= 0xe0 && c < 0xff) c ^= agCaseTable[c-0xe0]; + return c; +} + +#define CONVERT_CASE(c) agConvertCase(c) + +#endif + + +#ifndef TAB_SPACING +#define TAB_SPACING 8 +#endif + +static void ag_rp_1(void) { +#line - "yabasic.syn" + yylineno++; + if (interactive) PCB.exit_flag = AG_SUCCESS_CODE; + return; + +#line - "yabasic.c" +} + +#define ag_rp_2(x, e) (x*pow(10,e)) + +#define ag_rp_3(x, e) (x*pow(10,-e)) + +#define ag_rp_4(i, f) (i+f) + +#define ag_rp_5(f) (f) + +#define ag_rp_6(d) (d-'0') + +#define ag_rp_7(x, d) (10*x + d-'0') + +#define ag_rp_8(d) ((d-'0')/10.) + +#define ag_rp_9(d, f) ((d-'0' + f)/10.) + +#define ag_rp_10(d) (d-'0') + +#define ag_rp_11(x, d) (10*x + d-'0') + +#define ag_rp_12(c) (pushChar(c), 1) + +#define ag_rp_13(k, c) (pushChar(c), k+1) + +#define ag_rp_14(k) (strdup(popString(k))) + +#define ag_rp_15(k) (pushChar('$'), strdup(popString(k+1))) + +#define ag_rp_16(k) (strdup(popString(k))) + +#define ag_rp_17(d) (pushChar(d), 1) + +#define ag_rp_18(k, d) (pushChar(d), k+1) + +#define ag_rp_19(k) (strdup(popString(k))) + +#define ag_rp_20(k) (strdup(popString(k))) + +#define ag_rp_21() (0) + +#define ag_rp_22(k, c) (pushChar(c), k+1) + +#define ag_rp_23(k) (pushChar('"'), k+1) + +#define ag_rp_24() (end_of_file = TRUE) + +#define ag_rp_25(s) (create_label(s)) + +#define ag_rp_26(s) (create_label(s)) + +static void ag_rp_27(char * s) { +#line - "yabasic.syn" +create_goto(s); +#line - "yabasic.c" +} + +static void ag_rp_28(char * s) { +#line - "yabasic.syn" +create_gosub(s); +#line - "yabasic.c" +} + +static void ag_rp_29(void) { +#line - "yabasic.syn" +create_exception(TRUE); +#line - "yabasic.c" +} + +static void ag_rp_30(void) { +#line - "yabasic.syn" +create_exception(FALSE); +#line - "yabasic.c" +} + +static void ag_rp_31(void) { +#line - "yabasic.syn" +create_skipper(); +#line - "yabasic.c" +} + +static void ag_rp_32(void) { +#line - "yabasic.syn" +create_nop(); +#line - "yabasic.c" +} + +static void ag_rp_33(void) { +#line - "yabasic.syn" +create_skipper(); +#line - "yabasic.c" +} + +static void ag_rp_34(void) { +#line - "yabasic.syn" +create_nop(); +#line - "yabasic.c" +} + +static void ag_rp_35(int n) { +#line - "yabasic.syn" +create_myopen(n,'+'); +#line - "yabasic.c" +} + +static void ag_rp_36(int n) { +#line - "yabasic.syn" +create_myopen(n,'-'); +#line - "yabasic.c" +} + +static void ag_rp_37(int n) { +#line - "yabasic.syn" +create_myclose(n); +#line - "yabasic.c" +} + +static void ag_rp_38(void) { +#line - "yabasic.syn" +create_revert(FALSE); +#line - "yabasic.c" +} + +#define ag_rp_39() (lastinput->args=0) + +#define ag_rp_40() (create_restore("")) + +#define ag_rp_41(s) (create_restore(s)) + +static void ag_rp_42(void) { +#line - "yabasic.syn" +create_return(); +#line - "yabasic.c" +} + +#define ag_rp_43() (create_openwin(FALSE)) + +static void ag_rp_44(void) { +#line - "yabasic.syn" +create_openwin(TRUE); +#line - "yabasic.c" +} + +#define ag_rp_45() (create_dot()) + +#define ag_rp_46() (create_line('l')) + +#define ag_rp_47() (create_circle()) + +#define ag_rp_48() (create_text(TRUE)) + +#define ag_rp_49() (create_text(FALSE)) + +#define ag_rp_50() (create_makemap()) + +#define ag_rp_51() (create_line('a')) + +#define ag_rp_52() (create_tick(1)) + +#define ag_rp_53() (create_tick(3)) + +#define ag_rp_54() (create_tick(0)) + +#define ag_rp_55() (create_tick(2)) + +#define ag_rp_56() (create_closewin()) + +#define ag_rp_57() (create_clearwin()) + +#define ag_rp_58() (create_clearscreen()) + +#define ag_rp_59() (create_openprinter(0)) + +#define ag_rp_60() (create_openprinter(1)) + +#define ag_rp_61() (create_closeprinter()) + +#define ag_rp_62() (create_mywait()) + +#define ag_rp_63() (create_bell()) + +static void ag_rp_64(void) { +#line - "yabasic.syn" +create_function(MYINKEY); create_popstrsym(NULL); +#line - "yabasic.c" +} + +static void ag_rp_65(void) { +#line - "yabasic.syn" +create_function(MYSYSTEM2); + create_popdblsym(NULL); +#line - "yabasic.c" +} + +static void ag_rp_66(void) { +#line - "yabasic.syn" +create_poke('s'); +#line - "yabasic.c" +} + +static void ag_rp_67(void) { +#line - "yabasic.syn" +create_poke('d'); +#line - "yabasic.c" +} + +static void ag_rp_68(void) { +#line - "yabasic.syn" +create_myend(); +#line - "yabasic.c" +} + +static void ag_rp_69(char * s) { +#line - "yabasic.syn" +create_popstrsym(s); +#line - "yabasic.c" +} + +static void ag_rp_70(char * s) { +#line - "yabasic.syn" +create_pushstrptr(s); +#line - "yabasic.c" +} + +static void ag_rp_71(char * s) { +#line - "yabasic.syn" +create_changestring(MYMID); +#line - "yabasic.c" +} + +static void ag_rp_72(char * s) { +#line - "yabasic.syn" +create_pushstrptr(s); +#line - "yabasic.c" +} + +static void ag_rp_73(char * s) { +#line - "yabasic.syn" +create_changestring(MYLEFT); +#line - "yabasic.c" +} + +static void ag_rp_74(char * s) { +#line - "yabasic.syn" +create_pushstrptr(s); +#line - "yabasic.c" +} + +static void ag_rp_75(char * s) { +#line - "yabasic.syn" +create_changestring(MYRIGHT); +#line - "yabasic.c" +} + +static void ag_rp_76(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_77(char * s) { +#line - "yabasic.syn" +create_doarray(s,ASSIGNSTRINGARRAY); +#line - "yabasic.c" +} + +static void ag_rp_78(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_79(char * s) { +#line - "yabasic.syn" +create_doarray(s,GETSTRINGPOINTER); +#line - "yabasic.c" +} + +static void ag_rp_80(char * s) { +#line - "yabasic.syn" +create_changestring(MYMID); +#line - "yabasic.c" +} + +static void ag_rp_81(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_82(char * s) { +#line - "yabasic.syn" +create_doarray(s,GETSTRINGPOINTER); +#line - "yabasic.c" +} + +static void ag_rp_83(char * s) { +#line - "yabasic.syn" +create_changestring(MYLEFT); +#line - "yabasic.c" +} + +static void ag_rp_84(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_85(char * s) { +#line - "yabasic.syn" +create_doarray(s,GETSTRINGPOINTER); +#line - "yabasic.c" +} + +static void ag_rp_86(char * s) { +#line - "yabasic.syn" +create_changestring(MYRIGHT); +#line - "yabasic.c" +} + +static void ag_rp_87(void) { +#line - "yabasic.syn" +create_concat(); +#line - "yabasic.c" +} + +static void ag_rp_88(char * s) { +#line - "yabasic.syn" +create_pushstrsym(s); +#line - "yabasic.c" +} + +static void ag_rp_89(char * s) { +#line - "yabasic.syn" +if (s==NULL) {error(ERROR,"String not terminated");create_pushstr("");} else {create_pushstr(s);} +#line - "yabasic.c" +} + +static void ag_rp_90(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_91(char * s) { +#line - "yabasic.syn" +create_doarray(s,CALLSTRINGARRAY); +#line - "yabasic.c" +} + +static void ag_rp_92(void) { +#line - "yabasic.syn" +create_function(MYLEFT); +#line - "yabasic.c" +} + +static void ag_rp_93(void) { +#line - "yabasic.syn" +create_function(MYRIGHT); +#line - "yabasic.c" +} + +static void ag_rp_94(void) { +#line - "yabasic.syn" +create_function(MYMID); +#line - "yabasic.c" +} + +static void ag_rp_95(void) { +#line - "yabasic.syn" +create_function(MYSTR); +#line - "yabasic.c" +} + +static void ag_rp_96(void) { +#line - "yabasic.syn" +create_function(MYSTR2); +#line - "yabasic.c" +} + +static void ag_rp_97(void) { +#line - "yabasic.syn" +create_function(MYINKEY); +#line - "yabasic.c" +} + +static void ag_rp_98(void) { +#line - "yabasic.syn" +create_function(MYCHR); +#line - "yabasic.c" +} + +static void ag_rp_99(void) { +#line - "yabasic.syn" +create_function(MYUPPER); +#line - "yabasic.c" +} + +static void ag_rp_100(void) { +#line - "yabasic.syn" +create_function(MYLOWER); +#line - "yabasic.c" +} + +static void ag_rp_101(void) { +#line - "yabasic.syn" +create_function(MYLTRIM); +#line - "yabasic.c" +} + +static void ag_rp_102(void) { +#line - "yabasic.syn" +create_function(MYRTRIM); +#line - "yabasic.c" +} + +static void ag_rp_103(void) { +#line - "yabasic.syn" +create_function(MYTRIM); +#line - "yabasic.c" +} + +static void ag_rp_104(void) { +#line - "yabasic.syn" +create_function(MYSYSTEM); +#line - "yabasic.c" +} + +static void ag_rp_105(void) { +#line - "yabasic.syn" +create_function(MYDATE); +#line - "yabasic.c" +} + +static void ag_rp_106(void) { +#line - "yabasic.syn" +create_function(MYTIME); +#line - "yabasic.c" +} + +static void ag_rp_107(void) { +#line - "yabasic.syn" +create_function(MYPEEK2); +#line - "yabasic.c" +} + +static void ag_rp_108(char * s) { +#line - "yabasic.syn" +create_popdblsym(s); +#line - "yabasic.c" +} + +static void ag_rp_109(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_110(char * s) { +#line - "yabasic.syn" +create_doarray(s,ASSIGNARRAY); +#line - "yabasic.c" +} + +#define ag_rp_111(n) (create_pushdbl(n)) + +#define ag_rp_112(s) (create_pushdblsym(s)) + +#define ag_rp_113(s) (pushcounter()) + +static void ag_rp_114(char * s) { +#line - "yabasic.syn" +create_doarray(s,CALLARRAY); +#line - "yabasic.c" +} + +static void ag_rp_115(void) { +#line - "yabasic.syn" +create_negate(); +#line - "yabasic.c" +} + +static void ag_rp_116(void) { +#line - "yabasic.syn" +create_dblbin('^'); +#line - "yabasic.c" +} + +static void ag_rp_117(void) { +#line - "yabasic.syn" +create_dblbin('*'); +#line - "yabasic.c" +} + +static void ag_rp_118(void) { +#line - "yabasic.syn" +create_dblbin('/'); +#line - "yabasic.c" +} + +static void ag_rp_119(void) { +#line - "yabasic.syn" +create_dblbin('+'); +#line - "yabasic.c" +} + +static void ag_rp_120(void) { +#line - "yabasic.syn" +create_dblbin('-'); +#line - "yabasic.c" +} + +static void ag_rp_121(void) { +#line - "yabasic.syn" +create_map(); +#line - "yabasic.c" +} + +static void ag_rp_122(void) { +#line - "yabasic.syn" +create_function(MYSIN); +#line - "yabasic.c" +} + +static void ag_rp_123(void) { +#line - "yabasic.syn" +create_function(MYASIN); +#line - "yabasic.c" +} + +static void ag_rp_124(void) { +#line - "yabasic.syn" +create_function(MYCOS); +#line - "yabasic.c" +} + +static void ag_rp_125(void) { +#line - "yabasic.syn" +create_function(MYACOS); +#line - "yabasic.c" +} + +static void ag_rp_126(void) { +#line - "yabasic.syn" +create_function(MYTAN); +#line - "yabasic.c" +} + +static void ag_rp_127(void) { +#line - "yabasic.syn" +create_function(MYATAN); +#line - "yabasic.c" +} + +static void ag_rp_128(void) { +#line - "yabasic.syn" +create_function(MYATAN2); +#line - "yabasic.c" +} + +static void ag_rp_129(void) { +#line - "yabasic.syn" +create_function(MYEXP); +#line - "yabasic.c" +} + +static void ag_rp_130(void) { +#line - "yabasic.syn" +create_function(MYLOG); +#line - "yabasic.c" +} + +static void ag_rp_131(void) { +#line - "yabasic.syn" +create_function(MYSQRT); +#line - "yabasic.c" +} + +static void ag_rp_132(void) { +#line - "yabasic.syn" +create_function(MYINT); +#line - "yabasic.c" +} + +static void ag_rp_133(void) { +#line - "yabasic.syn" +create_function(MYFRAC); +#line - "yabasic.c" +} + +static void ag_rp_134(void) { +#line - "yabasic.syn" +create_function(MYMOD); +#line - "yabasic.c" +} + +static void ag_rp_135(void) { +#line - "yabasic.syn" +create_function(MYRAN); +#line - "yabasic.c" +} + +static void ag_rp_136(void) { +#line - "yabasic.syn" +create_function(MYRAN2); +#line - "yabasic.c" +} + +static void ag_rp_137(void) { +#line - "yabasic.syn" +create_function(MYMIN); +#line - "yabasic.c" +} + +static void ag_rp_138(void) { +#line - "yabasic.syn" +create_function(MYMAX); +#line - "yabasic.c" +} + +static void ag_rp_139(void) { +#line - "yabasic.syn" +create_function(MYXMAP); +#line - "yabasic.c" +} + +static void ag_rp_140(void) { +#line - "yabasic.syn" +create_function(MYYMAP); +#line - "yabasic.c" +} + +static void ag_rp_141(void) { +#line - "yabasic.syn" +create_function(MYLEN); +#line - "yabasic.c" +} + +static void ag_rp_142(void) { +#line - "yabasic.syn" +create_function(MYVAL); +#line - "yabasic.c" +} + +static void ag_rp_143(void) { +#line - "yabasic.syn" +create_function(MYASC); +#line - "yabasic.c" +} + +static void ag_rp_144(void) { +#line - "yabasic.syn" +create_function(MYINSTR); +#line - "yabasic.c" +} + +static void ag_rp_145(void) { +#line - "yabasic.syn" +create_function(MYSYSTEM2); +#line - "yabasic.c" +} + +static void ag_rp_146(void) { +#line - "yabasic.syn" +create_function(MYPEEK); +#line - "yabasic.c" +} + +#define ag_rp_147(n) (n) + +#define ag_rp_148(n) (n) + +#define ag_rp_149(n) (-n) + +#define ag_rp_150(d) (atoi(d)) + +#define ag_rp_151(s) (s) + +#define ag_rp_152(s) (s) + +static void ag_rp_153(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_154(char * s) { +#line - "yabasic.syn" +create_dim(s,'d'); +#line - "yabasic.c" +} + +static void ag_rp_155(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_156(char * s) { +#line - "yabasic.syn" +create_dim(s,'d'); +#line - "yabasic.c" +} + +static void ag_rp_157(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_158(char * s) { +#line - "yabasic.syn" +create_dim(s,'s'); +#line - "yabasic.c" +} + +static void ag_rp_159(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_160(char * s) { +#line - "yabasic.syn" +create_dim(s,'s'); +#line - "yabasic.c" +} + +static void ag_rp_161(void) { +#line - "yabasic.syn" +inccounter(); +#line - "yabasic.c" +} + +static void ag_rp_162(void) { +#line - "yabasic.syn" +inccounter(); +#line - "yabasic.c" +} + +static void ag_rp_163(char * s) { +#line - "yabasic.syn" +pushname(s);create_popdblsym(s);pushgoto(); + create_pushdblsym(s); +#line - "yabasic.c" +} + +static void ag_rp_164(char * s, double p) { +#line - "yabasic.syn" + create_dblrelop((p>0)?'{':'}'); + create_decide(); + pushlabel(); +#line - "yabasic.c" +} + +static void ag_rp_165(char * s, double p) { +#line - "yabasic.syn" + create_pushdbl(p); + create_pushdblsym(s); + create_dblbin('+'); + create_popdblsym(s); + swap();popgoto();poplabel(); +#line - "yabasic.c" +} + +static void ag_rp_166(char * s, double p) { +#line - "yabasic.syn" +/* cookie*/ +#line - "yabasic.c" +} + +static void ag_rp_167(void) { +#line - "yabasic.syn" +end_of_file=TRUE; + error(ERROR,"'next'-statement is missing"); PCB.exit_flag = AG_SYNTAX_ERROR_CODE; +#line - "yabasic.c" +} + +#define ag_rp_168() (1.0) + +#define ag_rp_169(v) (v) + +static void ag_rp_170(void) { +#line - "yabasic.syn" +pop(); +#line - "yabasic.c" +} + +static void ag_rp_171(char * s) { +#line - "yabasic.syn" +if (strcmp(pop()->pointer,s)) + {error(ERROR,"'for' and 'next' do not match"); PCB.exit_flag = AG_SYNTAX_ERROR_CODE;} + +#line - "yabasic.c" +} + +static void ag_rp_172(void) { +#line - "yabasic.syn" +create_decide();pushlabel(); +#line - "yabasic.c" +} + +static void ag_rp_173(void) { +#line - "yabasic.syn" +pushlabel();swap();poplabel(); +#line - "yabasic.c" +} + +static void ag_rp_174(void) { +#line - "yabasic.syn" +poplabel(); +#line - "yabasic.c" +} + +static void ag_rp_175(void) { +#line - "yabasic.syn" +end_of_file=TRUE; + error(ERROR,"'endif'-statement is missing"); PCB.exit_flag = AG_SYNTAX_ERROR_CODE; +#line - "yabasic.c" +} + +static void ag_rp_176(void) { +#line - "yabasic.syn" +create_boole('|'); +#line - "yabasic.c" +} + +static void ag_rp_177(void) { +#line - "yabasic.syn" +create_boole('&'); +#line - "yabasic.c" +} + +static void ag_rp_178(void) { +#line - "yabasic.syn" +create_strrelop('='); +#line - "yabasic.c" +} + +static void ag_rp_179(void) { +#line - "yabasic.syn" +create_strrelop('!'); +#line - "yabasic.c" +} + +static void ag_rp_180(void) { +#line - "yabasic.syn" +create_strrelop('<'); +#line - "yabasic.c" +} + +static void ag_rp_181(void) { +#line - "yabasic.syn" +create_strrelop('{'); +#line - "yabasic.c" +} + +static void ag_rp_182(void) { +#line - "yabasic.syn" +create_strrelop('>'); +#line - "yabasic.c" +} + +static void ag_rp_183(void) { +#line - "yabasic.syn" +create_strrelop('}'); +#line - "yabasic.c" +} + +static void ag_rp_184(void) { +#line - "yabasic.syn" +create_dblrelop('='); +#line - "yabasic.c" +} + +static void ag_rp_185(void) { +#line - "yabasic.syn" +create_dblrelop('!'); +#line - "yabasic.c" +} + +static void ag_rp_186(void) { +#line - "yabasic.syn" +create_dblrelop('<'); +#line - "yabasic.c" +} + +static void ag_rp_187(void) { +#line - "yabasic.syn" +create_dblrelop('{'); +#line - "yabasic.c" +} + +static void ag_rp_188(void) { +#line - "yabasic.syn" +create_dblrelop('>'); +#line - "yabasic.c" +} + +static void ag_rp_189(void) { +#line - "yabasic.syn" +create_dblrelop('}'); +#line - "yabasic.c" +} + +static void ag_rp_190(char * s) { +#line - "yabasic.syn" +create_myread('d');create_popdblsym(s); +#line - "yabasic.c" +} + +static void ag_rp_191(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_192(char * s) { +#line - "yabasic.syn" +create_myread('d');create_doarray(s,ASSIGNARRAY); +#line - "yabasic.c" +} + +static void ag_rp_193(char * s) { +#line - "yabasic.syn" +create_myread('s');create_popstrsym(s); +#line - "yabasic.c" +} + +static void ag_rp_194(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_195(char * s) { +#line - "yabasic.syn" +create_myread('s');create_doarray(s,ASSIGNSTRINGARRAY); +#line - "yabasic.c" +} + +static void ag_rp_196(char * s) { +#line - "yabasic.syn" +create_readdata('d');create_popdblsym(s); +#line - "yabasic.c" +} + +static void ag_rp_197(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_198(char * s) { +#line - "yabasic.syn" +create_readdata('d');create_doarray(s,ASSIGNARRAY); +#line - "yabasic.c" +} + +static void ag_rp_199(char * s) { +#line - "yabasic.syn" +create_readdata('s');create_popstrsym(s); +#line - "yabasic.c" +} + +static void ag_rp_200(char * s) { +#line - "yabasic.syn" +pushcounter(); +#line - "yabasic.c" +} + +static void ag_rp_201(char * s) { +#line - "yabasic.syn" +create_readdata('s');create_doarray(s,ASSIGNSTRINGARRAY); +#line - "yabasic.c" +} + +static void ag_rp_202(char * s) { +#line - "yabasic.syn" +create_strdata(s); +#line - "yabasic.c" +} + +static void ag_rp_203(double v) { +#line - "yabasic.syn" +create_dbldata(v); +#line - "yabasic.c" +} + +static void ag_rp_204(char * s) { +#line - "yabasic.syn" +create_strdata(s); +#line - "yabasic.c" +} + +static void ag_rp_205(double v) { +#line - "yabasic.syn" +create_dbldata(v); +#line - "yabasic.c" +} + +static void ag_rp_206(void) { +#line - "yabasic.syn" +create_print('d'); +#line - "yabasic.c" +} + +static void ag_rp_207(void) { +#line - "yabasic.syn" +create_print('d'); +#line - "yabasic.c" +} + +static void ag_rp_208(void) { +#line - "yabasic.syn" +create_print('s'); +#line - "yabasic.c" +} + +static void ag_rp_209(void) { +#line - "yabasic.syn" +create_print('s'); +#line - "yabasic.c" +} + +static void ag_rp_210(void) { +#line - "yabasic.syn" +create_myswitch(0);create_readline(NULL); +#line - "yabasic.c" +} + +static void ag_rp_211(void) { +#line - "yabasic.syn" +create_myswitch(0);create_readline(NULL); +#line - "yabasic.c" +} + +static void ag_rp_212(void) { +#line - "yabasic.syn" +create_myswitch(0); +#line - "yabasic.c" +} + +static void ag_rp_213(void) { +#line - "yabasic.syn" +create_myswitch(0); +#line - "yabasic.c" +} + +static void ag_rp_214(void) { +#line - "yabasic.syn" +create_myswitch(0); +#line - "yabasic.c" +} + +static void ag_rp_215(void) { +#line - "yabasic.syn" +create_revert(TRUE);create_myswitch(0); +#line - "yabasic.c" +} + +static void ag_rp_216(void) { +#line - "yabasic.syn" +create_myswitch(0); +#line - "yabasic.c" +} + +static void ag_rp_217(void) { +#line - "yabasic.syn" +create_revert(TRUE);create_myswitch(0); +#line - "yabasic.c" +} + +static void ag_rp_218(char * s) { +#line - "yabasic.syn" +create_readline(s); +#line - "yabasic.c" +} + +static void ag_rp_219(void) { +#line - "yabasic.syn" +create_mymove(); +#line - "yabasic.c" +} + +static void ag_rp_220(int n) { +#line - "yabasic.syn" +create_myswitch(n); +#line - "yabasic.c" +} + +#define ag_rp_221(n) (n) + +#define ag_rp_222(n) (n) + +static void ag_rp_223(void) { +#line - "yabasic.syn" +create_print('n'); +#line - "yabasic.c" +} + +static void ag_rp_224(char * s) { +#line - "yabasic.syn" +create_goto(s);create_findnop(); +#line - "yabasic.c" +} + +static void ag_rp_225(char * s) { +#line - "yabasic.syn" +create_goto(s);create_findnop(); +#line - "yabasic.c" +} + +static void ag_rp_226(char * s) { +#line - "yabasic.syn" +create_gosub(s);create_findnop(); +#line - "yabasic.c" +} + +static void ag_rp_227(char * s) { +#line - "yabasic.syn" +create_gosub(s);create_findnop(); +#line - "yabasic.c" +} + + +#define READ_COUNTS +#define WRITE_COUNTS +#undef V +#define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i])) +#undef VS +#define VS(i) (PCB).vs[(PCB).ssx + i] + +#ifndef GET_CONTEXT +#define GET_CONTEXT CONTEXT = (PCB).input_context +#endif + +typedef enum { + ag_action_1, + ag_action_2, + ag_action_3, + ag_action_4, + ag_action_5, + ag_action_6, + ag_action_7, + ag_action_8, + ag_action_9, + ag_action_10, + ag_action_11, + ag_action_12 +} ag_parser_action; + + +#ifndef NULL_VALUE_INITIALIZER +#define NULL_VALUE_INITIALIZER = { 0 } +#endif + +static parseBasic_vs_type const ag_null_value NULL_VALUE_INITIALIZER; + +static const unsigned char ag_rpx[] = { + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 3, 4, 0, 0, 0, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 0, 0, 0, 25, 26, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 0, 39, 0, 0, 40, 41, 42, 0, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 0, 87, 88, 0, 89, 90, 91, 0, 92, 93, 94, 95, 96, 97, 98, + 99,100,101,102,103,104,105,106,107,108,109,110,111, 0,112,113,114, 0, + 115, 0,116, 0,117,118, 0,119,120, 0,121,122,123,124,125,126,127,128, + 129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146, + 147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164, + 165,166, 0,167,168,169,170,171,172,173,174, 0, 0,175, 0,176, 0,177, + 0, 0, 0,178,179,180,181,182,183,184,185,186,187,188,189, 0, 0, 0, + 0,190,191,192,193,194,195, 0, 0,196,197,198,199,200,201,202,203,204, + 205, 0,206,207,208,209,210, 0,211,212, 0,213, 0,214, 0,215,216,217, + 218,219,220,221,222,223, 0,224,225,226,227 +}; + +static const unsigned char ag_key_itt[] = { + 0 +}; + +static const unsigned short ag_key_pt[] = { +0 +}; + +static const unsigned char ag_key_ch[] = { + 0, 82,255, 61, 62,255, 67, 73,255, 65,255, 67, 78, 82, 83, 84,255, 69, + 82,255, 69, 79,255, 78, 83,255, 72, 73, 76, 79,255, 65, 69,255, 84,255, + 65, 73, 79,255, 73,255, 68,255, 76, 78, 88,255, 79, 82,255, 83, 84,255, + 79,255, 69,255, 75, 80, 83, 84,255, 70, 78,255, 70, 78,255, 71, 87,255, + 65, 69, 73, 79, 84,255, 80, 88,255, 68, 78,255, 65, 73, 79,255, 69, 79, + 255, 78, 80, 82,255, 50,255, 75,255, 69,255, 69,255, 84,255, 78,255, 73, + 255, 69, 79, 82,255, 65, 77, 83, 84, 86,255, 65, 69, 73, 84,255, 69, 82, + 255, 50,255, 77,255, 69,255, 84,255, 83,255, 67, 73, 81, 84, 89,255, 65, + 69, 72, 73, 79, 82,255, 65, 73,255, 77, 84,255, 77, 84,255, 60, 62, 65, + 66, 67, 68, 69, 70, 71, 73, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, + 88, 89,255, 69, 79,255, 73, 76,255, 65, 73, 79,255, 73,255, 68,255, 76, + 78,255, 83, 84,255, 79,255, 75, 80,255, 70, 78,255, 65, 69, 73,255, 65, + 73,255, 78, 80,255, 79, 82,255, 65, 77, 83, 84,255, 69, 73,255, 65, 66, + 67, 68, 69, 70, 71, 73, 76, 77, 78, 79, 80, 82, 83, 84, 87, 88, 89,255, + 67, 73,255, 67, 83, 84,255, 83, 84,255, 78,255, 69, 79,255, 65, 73, 79, + 255, 73, 81, 89,255, 65, 67, 69, 70, 73, 76, 77, 80, 82, 83, 84, 86, 88, + 89,255, 67, 73,255, 67, 83, 84,255, 72, 79,255, 75, 83, 84,255, 78,255, + 70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73, 79,255, 50, + 255, 75,255, 69,255, 69,255, 65, 73, 84,255, 50,255, 77,255, 69,255, 84, + 255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68, 69, 70, 73, + 76, 77, 80, 82, 83, 84, 85, 86, 88, 89,255, 76, 78,255, 69, 78, 82,255, + 67, 73,255, 67, 83, 84,255, 72, 79,255, 75, 83, 84,255, 78,255, 70, 78, + 255, 71, 87,255, 69, 79, 84,255, 80, 88,255, 68, 78,255, 65, 73, 79,255, + 50,255, 75,255, 69,255, 69,255, 65, 73, 84,255, 50,255, 77,255, 69,255, + 84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68, 69, 70, + 73, 76, 77, 80, 82, 83, 84, 85, 86, 88, 89,255, 61, 62,255, 67, 73,255, + 67, 78, 83, 84,255, 72, 79,255, 76, 78, 88,255, 83, 84,255, 79,255, 75, + 83, 84,255, 78,255, 70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, + 65, 73, 79,255, 50,255, 75,255, 69,255, 69,255, 65, 69, 73, 84,255, 69, + 82,255, 50,255, 77,255, 69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65, + 72, 73, 79, 82,255, 60, 62, 65, 67, 68, 69, 70, 71, 73, 76, 77, 78, 79, + 80, 82, 83, 84, 85, 86, 88, 89,255, 67, 73,255, 67, 83, 84,255, 72, 79, + 255, 75, 83, 84,255, 78,255, 70, 78,255, 71, 87,255, 69, 79, 84,255, 68, + 78,255, 65, 73, 79,255, 50,255, 75,255, 69,255, 69,255, 65, 73, 84,255, + 50,255, 77,255, 69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82, + 255, 65, 67, 68, 69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89, + 255, 67, 73,255, 67, 82, 83, 84,255, 69, 79,255, 72, 73, 76, 79,255, 65, + 69,255, 84,255, 65, 73, 79,255, 73,255, 68,255, 76, 78, 88,255, 79, 82, + 255, 83, 84,255, 79,255, 75, 80, 83, 84,255, 70, 78,255, 70, 78,255, 71, + 87,255, 69, 73, 79, 84,255, 80, 88,255, 68, 78,255, 65, 73, 79,255, 78, + 80,255, 50,255, 75,255, 69,255, 69, 79, 82,255, 65, 77, 83, 84,255, 65, + 69, 73, 84,255, 50,255, 77,255, 69,255, 84,255, 83,255, 73, 81, 84, 89, + 255, 65, 69, 73, 82,255, 77, 84,255, 77, 84,255, 65, 66, 67, 68, 69, 70, + 71, 73, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 89,255, 69, 79, + 255, 73, 76,255, 65, 73, 79,255, 73,255, 68,255, 76, 78,255, 83, 84,255, + 79,255, 75, 80,255, 70, 78,255, 69, 73,255, 65, 73,255, 78, 80,255, 79, + 82,255, 65, 77, 83, 84,255, 69, 73,255, 65, 66, 67, 68, 69, 70, 71, 73, + 76, 77, 78, 79, 80, 82, 83, 84, 87, 88, 89,255, 61, 62,255, 60, 62,255, + 61, 62,255, 76, 78,255, 60, 62, 65, 69, 78, 79, 82, 84,255, 69, 79, 84, + 255, 73, 84,255, 84, 89,255, 73, 82,255, 67, 68, 73, 76, 77, 80, 82, 83, + 84, 85,255, 83, 87,255, 67, 73,255, 67, 83, 84,255, 83, 84,255, 78,255, + 69, 79,255, 80, 88,255, 65, 73, 79,255, 73, 81, 89,255, 65, 67, 69, 70, + 73, 76, 77, 80, 82, 83, 84, 86, 88, 89,255, 65,255, 67, 73,255, 65,255, + 67, 83, 84,255, 72, 79,255, 76, 78, 88,255, 75, 83, 84,255, 78,255, 70, + 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73, 79,255, 50,255, + 75,255, 69,255, 69,255, 77, 86,255, 65, 69, 73, 84,255, 50,255, 77,255, + 69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68, + 69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89,255, 80, 87,255, + 67, 73,255, 67, 83, 84,255, 69,255, 83, 84,255, 78,255, 69, 79,255, 65, + 73, 79,255, 73, 81, 89,255, 65, 67, 69, 70, 73, 76, 77, 80, 82, 83, 84, + 86, 88, 89,255, 61, 62,255, 76, 78,255, 83, 84,255, 79,255, 72, 79,255, + 60, 62, 65, 69, 71, 78, 79, 82, 83, 84,255, 61, 62,255, 83, 84,255, 79, + 255, 72, 79,255, 60, 62, 65, 71, 78, 79, 82, 83, 84,255, 92,255, 65, 79, + 84,255, 79, 84,255, 67, 73,255, 67, 83, 84,255, 76, 78, 88,255, 83, 84, + 255, 78,255, 69, 79,255, 65, 73, 79,255, 65, 69,255, 73, 81, 89,255, 65, + 67, 69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 86, 88, 89,255, 84,255, 67, + 73,255, 65,255, 67, 83, 84,255, 72, 79,255, 76, 78, 88,255, 75, 83, 84, + 255, 78,255, 70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73, + 79,255, 50,255, 75,255, 69,255, 69,255, 65, 69, 73, 84,255, 50,255, 77, + 255, 69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, + 68, 69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89,255, 67, 73, + 255, 67, 83, 84,255, 72, 79,255, 76, 78, 88,255, 75, 83, 84,255, 78,255, + 70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73, 79,255, 50, + 255, 75,255, 69,255, 69,255, 65, 69, 73, 84,255, 50,255, 77,255, 69,255, + 84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68, 69, 70, + 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89,255, 76, 78,255, 69, 79, + 84,255, 69, 73, 84,255, 84, 89,255, 73, 82,255, 67, 68, 69, 73, 76, 77, + 78, 80, 82, 83, 84, 85,255, 83, 84,255, 79,255, 71,255, 66, 67,255, 79, + 255, 84,255, 76, 78,255, 69, 82,255, 76, 78,255, 69, 78, 82, 84,255, 76, + 78,255, 69,255, 69, 82,255, 69,255, 82, 83,255, 78, 82,255, 78,255 +}; + +static const unsigned char ag_key_act[] = { + 0,3,4,0,0,4,0,3,4,3,4,3,3,3,2,1,4,3,3,4,3,3,4,3,0,4,3,3,2,2,4,0,0,4,2, + 4,2,3,3,4,3,4,1,4,3,2,3,4,3,3,4,3,3,4,2,4,3,4,3,3,3,1,4,0,2,4,3,0,4,0, + 3,4,3,2,3,2,3,4,0,0,4,0,0,4,2,2,3,4,3,3,4,0,3,0,4,0,4,1,4,2,4,3,4,1,4, + 2,4,2,4,2,3,2,4,3,0,3,3,3,4,3,2,3,3,4,3,0,4,0,4,1,4,2,4,2,4,2,4,3,3,3, + 2,2,4,3,3,3,3,0,3,4,3,3,4,3,3,4,3,3,4,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,3,3,2,2,2,4,3,3,4,3,2,4,3,3,3,4,3,4,1,4,3,2,4,3,3,4,2,4,3,3,4,0,2, + 4,3,3,3,4,3,3,4,0,3,4,3,3,4,3,0,3,3,4,2,3,4,3,3,2,2,2,3,2,2,2,2,3,2,2, + 2,3,3,3,3,3,4,0,3,4,3,2,3,4,3,0,4,2,4,3,3,4,3,3,3,4,3,3,3,4,2,3,3,3,2, + 2,2,3,3,2,3,3,3,3,4,0,3,4,3,2,3,4,3,3,4,3,3,0,4,2,4,3,0,4,0,3,4,2,2,3, + 4,0,0,4,3,2,3,4,0,4,1,4,2,4,2,4,3,3,3,4,0,4,1,4,2,4,2,4,2,4,3,3,3,2,4, + 3,3,3,4,2,2,3,3,3,2,2,2,2,2,2,2,3,3,3,3,4,3,3,4,2,3,3,4,0,3,4,3,2,3,4, + 3,3,4,3,3,0,4,2,4,3,0,4,0,3,4,2,2,3,4,0,0,4,0,0,4,2,2,3,4,0,4,1,4,2,4, + 2,4,3,3,3,4,0,4,1,4,2,4,2,4,2,4,3,3,3,2,4,3,3,3,4,2,2,3,3,3,2,2,2,2,2, + 2,2,3,3,3,3,4,0,0,4,0,3,4,3,3,2,3,4,3,3,4,3,3,3,4,3,3,4,2,4,3,3,0,4,2, + 4,3,0,4,0,3,4,2,2,3,4,0,0,4,3,2,3,4,0,4,1,4,2,4,2,4,3,3,3,3,4,3,0,4,0, + 4,1,4,2,4,2,4,2,4,3,3,2,2,4,3,3,3,0,3,4,2,3,2,2,3,2,3,2,2,2,2,3,3,2,2, + 2,2,3,3,3,3,4,0,3,4,3,2,3,4,3,3,4,3,3,0,4,2,4,3,0,4,0,3,4,2,2,3,4,0,0, + 4,3,2,3,4,0,4,1,4,2,4,2,4,3,3,3,4,0,4,1,4,2,4,2,4,2,4,3,3,3,2,4,3,3,3, + 4,2,2,3,3,3,2,2,2,3,2,2,2,2,3,3,3,3,4,0,3,4,3,3,2,3,4,3,3,4,3,3,2,3,4, + 0,0,4,2,4,2,3,3,4,3,4,1,4,3,2,3,4,3,3,4,3,3,4,2,4,3,3,3,0,4,0,2,4,3,0, + 4,0,3,4,2,3,2,3,4,0,0,4,0,0,4,2,2,3,4,0,3,4,0,4,1,4,2,4,2,3,3,4,3,0,3, + 3,4,3,2,3,3,4,0,4,1,4,2,4,2,4,2,4,3,3,3,2,4,3,3,3,3,4,3,3,4,3,3,4,2,3, + 2,2,2,2,2,2,2,2,3,2,2,2,2,2,3,3,3,2,2,4,3,3,4,3,2,4,3,3,3,4,3,4,1,4,3, + 2,4,3,3,4,2,4,3,3,4,0,2,4,3,3,4,3,3,4,0,3,4,3,3,4,3,0,3,3,4,2,3,4,3,3, + 2,2,2,3,2,2,2,2,3,2,2,2,3,3,3,3,3,4,0,0,4,2,3,4,0,0,4,3,3,4,2,3,3,2,3, + 3,3,3,4,3,3,3,4,3,3,4,3,3,4,3,3,4,3,3,3,2,3,3,2,2,2,3,4,3,3,4,0,3,4,3, + 2,3,4,3,0,4,2,4,3,3,4,0,0,4,2,3,3,4,3,3,3,4,2,3,3,3,2,2,2,3,3,2,3,3,3, + 3,4,3,4,0,3,4,3,4,3,2,1,4,3,3,4,3,3,3,4,3,3,0,4,2,4,3,0,4,0,3,4,2,2,3, + 4,0,0,4,3,2,3,4,0,4,1,4,2,4,2,4,0,3,4,3,2,3,3,4,0,4,1,4,2,4,2,4,2,4,3, + 3,3,2,4,3,3,3,4,2,2,3,2,3,2,2,2,3,2,2,2,2,3,3,3,3,4,3,3,4,0,3,4,3,2,3, + 4,3,4,3,1,4,2,4,3,3,4,3,3,3,4,3,3,3,4,2,3,3,3,2,2,2,3,3,2,3,3,3,3,4,0, + 0,4,3,3,4,3,3,4,2,4,3,0,4,2,3,3,2,2,3,3,3,3,2,4,0,0,4,3,3,4,2,4,3,0,4, + 2,3,3,2,3,3,3,3,2,4,3,4,3,3,3,4,3,3,4,0,3,4,3,2,3,4,3,3,3,4,3,0,4,2,4, + 3,3,4,3,3,3,4,3,3,4,3,3,3,4,2,3,2,3,2,2,2,3,3,2,2,3,3,3,3,4,3,4,0,3,4, + 3,4,3,2,1,4,3,3,4,3,3,3,4,3,3,0,4,2,4,3,0,4,0,3,4,2,2,3,4,0,0,4,3,2,3, + 4,0,4,1,4,2,4,2,4,3,3,3,3,4,0,4,1,4,2,4,2,4,2,4,3,3,3,2,4,3,3,3,4,2,2, + 3,2,3,2,2,2,3,2,2,2,2,3,3,3,3,4,0,3,4,3,2,3,4,3,3,4,3,3,3,4,3,3,0,4,2, + 4,3,0,4,0,3,4,2,2,3,4,0,0,4,3,2,3,4,0,4,1,4,2,4,2,4,3,3,3,3,4,0,4,1,4, + 2,4,2,4,2,4,3,3,3,2,4,3,3,3,4,2,2,3,2,3,2,2,2,3,2,2,2,2,3,3,3,3,4,3,3, + 4,3,3,3,4,3,3,3,4,3,3,4,3,3,4,3,3,2,3,2,3,3,3,2,2,2,3,4,3,3,4,2,4,2,4, + 3,3,4,3,4,3,4,3,3,4,2,3,4,3,3,4,2,3,3,3,4,3,3,4,2,4,3,3,4,3,4,3,3,4,3, + 3,4,3,4 +}; + +static const unsigned short ag_key_parm[] = { + 0,214, 0,312,310, 0,298,280, 0,284, 0,282,308,242, 0,317, 0,249, + 221, 0,245,227, 0,224,281, 0,264,239, 0, 0, 0,231,271, 0, 0, 0, + 0,234,236, 0,306, 0,255, 0,315, 0,285, 0,301,289, 0,220,219, 0, + 0, 0,222, 0,250,229,299,288, 0,305, 0, 0,259,296, 0,286,266, 0, + 218, 0,238, 0,267, 0,241,293, 0,258,292, 0, 0, 0,290, 0,302,309, + 0,223,226,307, 0,273, 0,300, 0, 0, 0,247, 0,228, 0, 0, 0, 0, + 0, 0,254, 0, 0,230,214,232,233,316, 0,291, 0,260,268, 0,303,263, + 0,253, 0,270, 0, 0, 0, 0, 0, 0, 0,246,279,287, 0, 0, 0,283, + 240,304,272,237,269, 0,248,235, 0,294,243, 0,295,244, 0, 0,314, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,265,297, 0, + 0, 0, 0,245,227, 0,239, 0, 0,231,234,236, 0,306, 0,255, 0,315, + 0, 0,220,219, 0, 0, 0,250,229, 0,305, 0, 0,218,259,238, 0,241, + 258, 0,223,226, 0,254,228, 0,230,214,232,233, 0, 0,260, 0,242,249, + 0, 0, 0,301, 0, 0, 0, 0,302, 0, 0, 0,253,240,248,243,244, 0, + 298,280, 0,282, 0,284, 0,299,288, 0, 0, 0,296,286, 0,293,292,290, + 0,279,287,253, 0, 0,281,285,289, 0, 0, 0,300,291, 0,283,297,294, + 295, 0,298,280, 0,282, 0,284, 0,264,281, 0,250,299,288, 0, 0, 0, + 259,296, 0,286,266, 0, 0, 0,267, 0,258,292, 0,293, 0,290, 0,273, + 0,300, 0, 0, 0, 0, 0,291,260,268, 0,253, 0,270, 0, 0, 0, 0, + 0, 0, 0,279,287,263, 0, 0,283,272,269, 0, 0, 0,271,285,289, 0, + 0, 0, 0, 0, 0, 0,265,297,294,295, 0,315,306, 0, 0,302,214, 0, + 298,280, 0,282, 0,284, 0,264,281, 0,250,299,288, 0, 0, 0,259,296, + 0,286,266, 0, 0, 0,267, 0,241,293, 0,258,292, 0, 0, 0,290, 0, + 273, 0,300, 0, 0, 0, 0, 0,291,260,268, 0,253, 0,270, 0, 0, 0, + 0, 0, 0, 0,279,287,263, 0, 0,283,272,269, 0, 0, 0,271,285,289, + 0, 0, 0, 0, 0, 0, 0,265,297,294,295, 0,312,310, 0,298,280, 0, + 282,308, 0,284, 0,264,281, 0,315,306,285, 0,220,219, 0, 0, 0,250, + 299,288, 0, 0, 0,259,296, 0,286,266, 0, 0, 0,267, 0,258,292, 0, + 293, 0,290, 0,273, 0,300, 0, 0, 0, 0, 0,291,214,260,268, 0,303, + 263, 0,253, 0,270, 0, 0, 0, 0, 0, 0, 0,279,287, 0, 0, 0,283, + 304,272,237,269, 0, 0,314, 0, 0,271, 0,289, 0, 0, 0, 0,302,307, + 0, 0, 0, 0,265,297,294,295, 0,298,280, 0,282, 0,284, 0,264,281, + 0,250,299,288, 0, 0, 0,259,296, 0,286,266, 0, 0, 0,267, 0,258, + 292, 0,293, 0,290, 0,273, 0,300, 0, 0, 0, 0, 0,291,260,268, 0, + 253, 0,270, 0, 0, 0, 0, 0, 0, 0,279,287,263, 0, 0,283,272,269, + 0, 0, 0,271,285,289, 0, 0, 0,309, 0, 0, 0, 0,265,297,294,295, + 0,298,280, 0,282,242, 0,284, 0,245,227, 0,264,239, 0,281, 0,231, + 271, 0, 0, 0, 0,234,236, 0,306, 0,255, 0,315, 0,285, 0,301,289, + 0,220,219, 0, 0, 0,250,229,299,288, 0,305, 0, 0,259,296, 0,286, + 266, 0, 0,238, 0,267, 0,241,293, 0,258,292, 0, 0, 0,290, 0,223, + 226, 0,273, 0,300, 0, 0, 0, 0,254,228, 0,230,214,232,233, 0,291, + 0,260,268, 0,253, 0,270, 0, 0, 0, 0, 0, 0, 0,279,287,263, 0, + 0,283,240,272,269, 0,294,243, 0,295,244, 0, 0,249, 0, 0, 0, 0, + 0, 0, 0, 0,302, 0, 0, 0, 0, 0,265,297,248, 0, 0, 0,245,227, + 0,239, 0, 0,231,234,236, 0,306, 0,255, 0,315, 0, 0,220,219, 0, + 0, 0,250,229, 0,305, 0, 0,259,238, 0,241,258, 0,223,226, 0,254, + 228, 0,230,214,232,233, 0, 0,260, 0,242,249, 0, 0, 0,301, 0, 0, + 0, 0,302, 0, 0, 0,253,240,248,243,244, 0,312,310, 0, 0,314, 0, + 312,310, 0,315,306, 0, 0,314,308, 0,302,307,214,304, 0,259,266,267, + 0,260,268, 0,263,270, 0,272,269, 0,264,271,250, 0,258,273, 0, 0, + 0,265, 0,246,235, 0,298,280, 0,282, 0,284, 0,299,288, 0, 0, 0, + 296,286, 0,241,293, 0, 0,292,290, 0,279,287,253, 0, 0,281,285,289, + 0, 0, 0,300,291, 0,283,297,294,295, 0,317, 0,298,280, 0,284, 0, + 282, 0,317, 0,264,281, 0,315,306,285, 0,250,299,288, 0, 0, 0,259, + 296, 0,286,266, 0, 0, 0,267, 0,258,292, 0,293, 0,290, 0,273, 0, + 300, 0, 0, 0, 0, 0,214,316, 0,291, 0,260,268, 0,253, 0,270, 0, + 0, 0, 0, 0, 0, 0,279,287,263, 0, 0,283,272,269, 0, 0, 0,271, + 0,289, 0, 0, 0,302, 0, 0, 0, 0,265,297,294,295, 0,247,235, 0, + 298,280, 0,282, 0,284, 0,222, 0,299,288, 0, 0, 0,296,286, 0,293, + 292,290, 0,279,287,253, 0, 0,281,285,289, 0, 0, 0,300,291, 0,283, + 297,294,295, 0,312,310, 0,315,306, 0,220,219, 0, 0, 0,304,237, 0, + 0,314,308, 0, 0,302,307,214,303, 0, 0,312,310, 0,220,219, 0, 0, + 0,304,237, 0, 0,314,308, 0,302,307,214,303, 0, 0, 33, 0,308,307, + 304, 0,307,304, 0,298,280, 0,282, 0,284, 0,315,306,285, 0,299,288, + 0, 0, 0,296,286, 0,293,292,290, 0,291,214, 0,279,287,253, 0, 0, + 281, 0,289, 0, 0, 0,302,300, 0, 0,283,297,294,295, 0,237, 0,298, + 280, 0,284, 0,282, 0,317, 0,264,281, 0,315,306,285, 0,250,299,288, + 0, 0, 0,259,296, 0,286,266, 0, 0, 0,267, 0,258,292, 0,293, 0, + 290, 0,273, 0,300, 0, 0, 0, 0, 0,291,214,260,268, 0,253, 0,270, + 0, 0, 0, 0, 0, 0, 0,279,287,263, 0, 0,283,272,269, 0, 0, 0, + 271, 0,289, 0, 0, 0,302, 0, 0, 0, 0,265,297,294,295, 0,298,280, + 0,282, 0,284, 0,264,281, 0,315,306,285, 0,250,299,288, 0, 0, 0, + 259,296, 0,286,266, 0, 0, 0,267, 0,258,292, 0,293, 0,290, 0,273, + 0,300, 0, 0, 0, 0, 0,291,214,260,268, 0,253, 0,270, 0, 0, 0, + 0, 0, 0, 0,279,287,263, 0, 0,283,272,269, 0, 0, 0,271, 0,289, + 0, 0, 0,302, 0, 0, 0, 0,265,297,294,295, 0,315,306, 0,259,266, + 267, 0,214,260,268, 0,263,270, 0,272,269, 0,264,271, 0,250, 0,258, + 302,273, 0, 0, 0,265, 0,220,219, 0, 0, 0, 0, 0,221,224, 0,307, + 0,304, 0,315,306, 0, 0,214, 0,315,306, 0, 0,302,214,237, 0,315, + 306, 0, 0, 0,306,214, 0,306, 0,214,303, 0,302,214, 0,302, 0 +}; + +static const unsigned short ag_key_jmp[] = { + 0, 0, 0, 0, 0, 0, 0, 14, 0, 16, 0, 5, 8, 10, 6, 9, 0, 18, + 21, 0, 32, 35, 0, 38, 0, 0, 25, 27, 20, 23, 0, 0, 0, 0, 31, 0, + 34, 44, 46, 0, 51, 0, 40, 0, 48, 42, 53, 0, 55, 57, 0, 60, 63, 0, + 51, 0, 74, 0, 65, 68, 71, 56, 0, 0, 58, 0, 84, 0, 0, 0, 89, 0, + 80, 66, 86, 69, 92, 0, 0, 0, 0, 0, 0, 0, 78, 81, 96, 0, 98,101, + 0, 0,103, 0, 0, 0, 0, 95, 0, 97, 0,109, 0,101, 0,103, 0,105, + 0, 99,106,107, 0,113, 0,115,120,124, 0,111,113,129,133, 0,147, 0, + 0, 0, 0,127, 0,129, 0,131, 0,133, 0,137,142,144,124,135, 0,149, + 151,154,157, 0,160, 0,171,174, 0,179,182, 0,186,189, 0, 3, 3, 11, + 17, 26, 36, 44, 48, 54, 63, 72, 84, 88, 91,109,119,137,143,163,168,150, + 153,156, 0,207,210, 0,202,183, 0,213,216,218, 0,223, 0,193, 0,220, + 195, 0,228,231, 0,200, 0,233,236, 0, 0,205, 0,239,243,246, 0,249, + 251, 0, 0,257, 0,260,263, 0,267, 0,269,274, 0,224,278, 0,193,198, + 186,189,197,225,203,208,211,215,253,218,221,229,282,289,293,297,302, 0, + 0,310, 0,307,252,312, 0,325, 0, 0,259, 0,328,330, 0,332,334,336, + 0,345,347,350, 0,255,315,318,321,262,264,267,338,342,271,356,359,362, + 366, 0, 0,373, 0,370,290,375, 0,378,380, 0,393,396, 0, 0,300, 0, + 399, 0, 0, 0,401, 0,306,309,404, 0, 0, 0, 0,408,316,410, 0, 0, + 0,323, 0,325, 0,327, 0,412,414,418, 0, 0, 0,335, 0,337, 0,339, + 0,341, 0,422,424,427,343, 0,429,431,434, 0,293,297,382,386,389,304, + 312,319,329,331,345,350,437,442,445,449, 0,453,456, 0,371,460,464, 0, + 0,470, 0,467,378,472, 0,475,477, 0,490,493, 0, 0,388, 0,496, 0, + 0, 0,498, 0,394,397,501, 0, 0, 0, 0, 0, 0, 0,404,407,505, 0, + 0, 0,414, 0,416, 0,418, 0,507,509,513, 0, 0, 0,426, 0,428, 0, + 430, 0,432, 0,517,519,522,434, 0,524,526,529, 0,381,385,479,483,486, + 392,400,410,420,422,436,441,532,537,540,544, 0, 0, 0, 0, 0,555, 0, + 550,553,465,557, 0,560,562, 0,568,571,575, 0,581,584, 0,480, 0,586, + 589, 0, 0,485, 0,592, 0, 0, 0,594, 0,491,494,597, 0, 0, 0, 0, + 601,501,603, 0, 0, 0,508, 0,510, 0,512, 0,611,613,615,619, 0,628, + 0, 0, 0, 0,524, 0,526, 0,528, 0,530, 0,623,625,521,532, 0,630, + 632,635, 0,638, 0,462,548,468,473,564,476,577,483,489,497,504,605,609, + 514,516,534,539,641,646,649,653, 0, 0,660, 0,657,567,662, 0,665,667, + 0,680,683, 0, 0,577, 0,686, 0, 0, 0,688, 0,583,586,691, 0, 0, + 0, 0,695,593,697, 0, 0, 0,600, 0,602, 0,604, 0,702,704,708, 0, + 0, 0,612, 0,614, 0,616, 0,618, 0,712,714,717,620, 0,719,721,724, + 0,570,574,669,673,676,581,589,596,699,606,608,622,627,727,732,735,739, + 0, 0,750, 0,743,746,649,752, 0,766,769, 0,759,761,657,772, 0, 0, + 0, 0,665, 0,668,774,776, 0,781, 0,674, 0,778,676,783, 0,785,787, + 0,790,793, 0,685, 0,795,798,801, 0, 0, 0,690, 0,804, 0, 0, 0, + 809, 0,698,806,701,812, 0, 0, 0, 0, 0, 0, 0,709,712,816, 0, 0, + 822, 0, 0, 0,722, 0,724, 0,726,825,828, 0,834, 0,836,841, 0,832, + 732,845,849, 0, 0, 0,742, 0,744, 0,746, 0,748, 0,853,855,858,750, + 0,860,862,865,868, 0,883,886, 0,890,893, 0,652,755,660,670,678,682, + 688,695,704,715,818,719,728,737,752,757,871,876,879,762,765, 0,911,914, + 0,906,790, 0,917,920,922, 0,927, 0,800, 0,924,802, 0,932,935, 0, + 807, 0,937,940, 0, 0,812, 0,943,946, 0,949,951, 0, 0,957, 0,960, + 963, 0,967, 0,969,974, 0,830,978, 0,897,902,793,796,804,929,810,815, + 818,821,953,824,827,835,982,989,993,997,1002, 0, 0, 0, 0,858,1007, + 0, 0, 0, 0,1014,1017, 0,864,1009,1011,867,1021,1025,1027,1030, 0, + 1046,1049,1053, 0,1065,1069, 0,1073,1075, 0,1080,1083, 0,1034,1037, + 1041,879,1057,1060,883,886,889,1086, 0,1091,1097, 0, 0,1106, 0,1103, + 906,1108, 0,1121, 0, 0,913, 0,1124,1126, 0, 0, 0, 0,921,1128,1130, + 0,1139,1141,1144, 0,909,1111,1114,1117,916,918,924,1132,1136,928,1150, + 1153,1156,1160, 0,1164, 0, 0,1169, 0,1171, 0,1166,949,952, 0,1173, + 1175, 0,1181,1184,1188, 0,1194,1197, 0, 0,965, 0,1200, 0, 0, 0, + 1202, 0,971,974,1205, 0, 0, 0, 0,1209,981,1211, 0, 0, 0,988, 0, + 990, 0,992, 0, 0,1219, 0,1217,996,1224,1228, 0, 0, 0,1004, 0,1006, + 0,1008, 0,1010, 0,1232,1234,1237,1012, 0,1239,1241,1244, 0,954,958, + 1177,961,1190,969,977,984,1213,994,999,1014,1019,1247,1252,1255,1259, 0, + 1263,1270, 0, 0,1279, 0,1276,1044,1281, 0,1297, 0,1294,1051, 0,1053, + 0,1303,1305, 0,1307,1309,1311, 0,1320,1322,1325, 0,1047,1284,1287, + 1290,1056,1058,1061,1313,1317,1065,1331,1334,1337,1341, 0, 0, 0, 0, + 1350,1353, 0,1357,1360, 0,1090, 0,1375, 0, 0,1084,1345,1347,1087, + 1093,1362,1366,1368,1371,1095, 0, 0, 0, 0,1383,1386, 0,1112, 0,1401, + 0, 0,1109,1378,1380,1115,1388,1392,1394,1397,1117, 0,1404, 0,1406, + 1409,1411, 0,1415,1417, 0, 0,1424, 0,1421,1139,1426, 0,1432,1435, + 1439, 0,1445, 0, 0,1150, 0,1448,1450, 0,1452,1454,1456, 0,1466,1468, + 0,1470,1472,1475, 0,1142,1429,1146,1441,1153,1155,1158,1458,1462,1162, + 1165,1481,1484,1487,1491, 0,1495, 0, 0,1500, 0,1502, 0,1497,1187, + 1190, 0,1504,1506, 0,1512,1515,1519, 0,1525,1528, 0, 0,1203, 0,1531, + 0, 0, 0,1533, 0,1209,1212,1536, 0, 0, 0, 0,1540,1219,1542, 0, + 0, 0,1226, 0,1228, 0,1230, 0,1548,1550,1552,1556, 0, 0, 0,1239, + 0,1241, 0,1243, 0,1245, 0,1560,1562,1565,1247, 0,1567,1569,1572, + 0,1192,1196,1508,1199,1521,1207,1215,1222,1544,1232,1234,1249,1254,1575, + 1580,1583,1587, 0, 0,1594, 0,1591,1276,1596, 0,1599,1601, 0,1607, + 1610,1614, 0,1620,1623, 0, 0,1290, 0,1626, 0, 0, 0,1628, 0,1296, + 1299,1631, 0, 0, 0, 0,1635,1306,1637, 0, 0, 0,1313, 0,1315, 0, + 1317, 0,1643,1645,1647,1651, 0, 0, 0,1326, 0,1328, 0,1330, 0,1332, + 0,1655,1657,1660,1334, 0,1662,1664,1667, 0,1279,1283,1603,1286,1616, + 1294,1302,1309,1639,1319,1321,1336,1341,1670,1675,1678,1682, 0,1693,1696, + 0,1705,1708,1712, 0,1728,1730,1734, 0,1738,1740, 0,1745,1748, 0, + 1686,1689,1363,1700,1366,1716,1719,1723,1370,1374,1377,1751, 0,1756,1759, + 0,1393, 0,1396, 0,1761,1766, 0,1774, 0,1776, 0,1780,1783, 0,1407, + 1787, 0,1790,1793, 0,1413,1797,1801,1804, 0,1806,1809, 0,1421, 0, + 1813,1818, 0,1821, 0,1826,1829, 0,1833,1837, 0,1840, 0 +}; + +static const unsigned short ag_key_index[] = { + 1,159, 1, 1, 0, 0, 0,232,275, 0, 0,354,354,354,374, 0,275, 0, + 275,445,354,275,545,631, 0, 0, 0, 0, 0,232,768, 0, 0,838,861,631, + 0, 0, 0, 0,870,374,892, 0,870,374,275,903,932,932,932,275,445,932, + 932,932, 0,374,374, 0, 0,947,1023,1041,1041,1069, 0, 0,631, 0, 0, + 0, 0, 0, 0,892, 0,275,903,932,932,932,275,445,932,932,932, 0,374, + 0, 0,947,1023,1041,1041,1069, 0, 0,861, 0,1098, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1120, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,1098,275,1098,1130, 0,870,870, 0, 0, 0, 0, 0, + 0, 0, 0,870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1098,870, + 1098,631,861,861,631,631,1132,1136, 0,275,275, 0, 0, 0,275,892, 0, + 892, 0,892,275,374,374,1169, 0, 0,374,374,1185, 0, 0,354, 0, 0, + 1185, 0, 0,374, 0, 0,374,374,374,374, 0, 0, 0, 0, 0, 0,1258, + 1258,1345,1380, 0,1380,275, 0,1398,1400,1400,1098,1098, 0,892,892,892, + 892,892,892,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275, + 275,275,275,1130,892,892,892,892,892,892,892,275,275,892,892,892,275,275, + 275,275,354,275,275,354,275,275,354,275,275,275,275,892,892,892,892,892, + 892,892,1403,861,861,631,631,631,631,1405,275,275,374, 0, 0, 0,275, + 374, 0,354, 0, 0,275,275,892,892,932,932,275,892,932,275,932,275,275, + 0, 0,275,275, 0,275, 0,374,374,374,374,374,374,374, 0,892, 0, 0, + 374,374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,275, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,275,1098,1098,1132,1132,1132,1132,1132,1132,1098,1098, + 1132,1132,1132,1132,1132,1132,1132,1410,1410,1185, 0, 0,275, 0,275, + 0,275, 0, 0,374,374, 0,1416,374,374, 0,374,374,275,275, 0, 0,275, + 275, 0,275,275, 0,354,374,275,374, 0, 0,1098,1098,892,275,275,275, + 275, 0,892,275,275,275, 0,1410,1185,275, 0,275,275,275,275,275,275, + 0,275,275, 0, 0,275,275, 0, 0,275,275,275,374,374,374,892,374,374, + 0, 0, 0, 0, 0, 0, 0, 0, 0,1424,275, 0,275, 0, 0, 0, 0, 0, + 0,892, 0, 0,275,275, 0, 0, 0,892,374, 0, 0,275,1426,1426,1429, + 1431,374, 0, 0, 0, 0, 0,275,374,275, 0, 0,374, 0,1426,1429, 0, + 0, 1, 0,892, 0,892, 0, 0,1185,374, 1,275,374,275,374,275, 0,275, + 1434, 0, 0, 0,892, 0,1434, 0, 0,275,374,275,1437,892,892, 0, 0, + 374,374,374,374, 0,275,892, 0,374,275,374 +}; + +static const unsigned char ag_key_ends[] = { +69,77,0, 61,0, 79,83,0, 68,0, 82,79,87,0, 78,0, 78,0, +76,76,0, 69,65,75,0, 82,0, 82,67,76,69,0, 65,82,0, 83,69,0, +84,73,78,85,69,0, 77,0, 84,0, 83,69,0, 70,0, 80,0, 82,0, +65,67,0, 85,66,0, 79,0, 69,89,0, 85,84,0, 84,82,0, +82,82,85,80,84,0, 66,69,76,0, 84,0, 78,69,0, 69,82,0, +82,73,77,0, 68,0, 88,84,0, 84,0, 69,78,0, 75,69,0, 82,0, 78,0, +68,0, 84,79,82,69,0, 85,82,78,0, 69,82,83,69,0, 71,72,84,0, +82,73,77,0, 82,69,69,78,0, 78,0, 82,84,0, 80,0, 78,0, 88,84,0, +69,78,0, 77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 73,84,0, +78,68,79,87,0, 65,80,0, 73,67,75,0, 65,80,0, 73,67,75,0, +82,82,79,87,0, 69,76,76,0, 82,67,76,69,0, 65,82,0, 83,69,0, +84,65,0, 77,0, 84,0, 83,69,0, 70,0, 79,82,0, 85,66,0, 79,0, +69,89,0, 85,84,0, 66,69,76,0, 70,84,0, 78,69,0, 80,0, 68,0, +69,88,84,0, 69,78,0, 75,69,0, 73,78,84,0, 68,0, 84,79,82,69,0, +85,82,78,0, 71,72,84,0, 89,83,84,69,77,50,0, 69,88,84,0, +65,73,84,0, 84,73,67,75,0, 84,73,67,75,0, 79,83,0, 78,0, +65,78,0, 79,83,0, 88,80,0, 82,65,67,0, 84,82,0, 78,0, 71,0, +88,0, 78,0, 68,0, 69,69,75,0, 65,78,0, 78,0, 82,84,0, +83,84,69,77,50,0, 65,78,0, 65,76,0, 77,65,80,0, 77,65,80,0, +79,83,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 88,80,0, +82,65,67,0, 69,89,0, 84,82,0, 84,0, 69,82,0, 82,73,77,0, 88,0, +68,0, 78,0, 71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, +77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, +77,65,80,0, 83,69,0, 68,73,70,0, 69,88,84,0, 69,77,0, 79,83,0, +78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 88,80,0, 82,65,67,0, +69,89,0, 84,82,0, 84,0, 69,82,0, 82,73,77,0, 68,0, 78,0, +71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 77,69,0, +73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 77,65,80,0, 61,0, +79,83,0, 68,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 83,69,0, +68,73,70,0, 80,0, 82,65,67,0, 85,66,0, 79,0, 69,89,0, 84,82,0, +84,0, 69,82,0, 82,73,77,0, 88,0, 68,0, 69,88,84,0, 82,0, 78,0, +77,0, 71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 80,0, 78,0, +69,78,0, 77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, +77,65,80,0, 79,83,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, +88,80,0, 82,65,67,0, 69,89,0, 84,82,0, 84,0, 69,82,0, +82,73,77,0, 88,0, 68,0, 79,84,0, 78,0, 71,72,84,0, 82,73,77,0, +78,0, 82,84,0, 82,0, 78,0, 77,69,0, 73,77,0, 80,80,69,82,0, +65,76,0, 77,65,80,0, 77,65,80,0, 79,83,0, 82,79,87,0, 78,0, +65,78,0, 69,76,76,0, 82,0, 82,67,76,69,0, 65,82,0, 83,69,0, +83,0, 77,0, 84,0, 83,69,0, 70,0, 80,0, 82,0, 65,67,0, +85,66,0, 79,0, 69,89,0, 85,84,0, 84,82,0, 84,0, 78,69,0, +69,82,0, 82,73,77,0, 68,0, 69,88,84,0, 69,78,0, 75,69,0, +73,78,84,0, 78,0, 68,0, 84,79,82,69,0, 85,82,78,0, 71,72,84,0, +82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 88,84,0, 77,69,0, +73,77,0, 80,80,69,82,0, 65,76,0, 65,73,84,0, 65,80,0, +73,67,75,0, 65,80,0, 73,67,75,0, 82,82,79,87,0, 69,76,76,0, +82,67,76,69,0, 65,82,0, 83,69,0, 84,65,0, 77,0, 84,0, 83,69,0, +70,0, 79,82,0, 85,66,0, 79,0, 69,89,0, 85,84,0, 70,84,0, +78,69,0, 80,0, 68,0, 69,88,84,0, 69,78,0, 75,69,0, 73,78,84,0, +68,0, 84,79,82,69,0, 85,82,78,0, 71,72,84,0, 89,83,84,69,77,50,0, +69,88,84,0, 65,73,84,0, 84,73,67,75,0, 84,73,67,75,0, 61,0, +61,0, 78,68,0, 83,69,0, 68,73,70,0, 69,88,84,0, 82,0, 69,77,0, +72,69,78,0, 72,82,0, 65,84,69,0, 78,75,69,89,0, 70,84,0, +87,69,82,0, 82,73,77,0, 73,68,0, 69,69,75,50,0, 71,72,84,0, +82,73,77,0, 82,0, 83,84,69,77,0, 77,69,0, 73,77,0, +80,80,69,82,0, 67,82,69,69,78,0, 73,78,68,79,87,0, 79,83,0, 78,0, +65,78,0, 79,83,0, 88,80,0, 82,65,67,0, 84,82,0, 78,0, 71,0, +78,0, 68,0, 69,69,75,0, 65,78,0, 78,0, 82,84,0, +83,84,69,77,50,0, 65,78,0, 65,76,0, 77,65,80,0, 77,65,80,0, +84,0, 79,83,0, 78,0, 78,0, 82,0, 83,0, 65,84,69,0, 83,69,0, +68,73,70,0, 80,0, 82,65,67,0, 69,89,0, 84,82,0, 84,0, 69,82,0, +82,73,77,0, 88,0, 68,0, 69,88,84,0, 78,0, 69,82,83,69,0, +71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 77,69,0, +73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 77,65,80,0, +82,73,78,84,69,82,0, 73,78,68,79,87,0, 79,83,0, 78,0, 65,78,0, +79,83,0, 88,80,0, 82,65,67,0, 84,82,0, 82,82,85,80,84,0, 78,0, +71,0, 88,0, 78,0, 68,0, 69,69,75,0, 65,78,0, 78,0, 82,84,0, +83,84,69,77,50,0, 65,78,0, 65,76,0, 77,65,80,0, 77,65,80,0, +61,0, 78,68,0, 83,69,0, 68,73,70,0, 85,66,0, 79,0, 69,88,84,0, +82,0, 69,77,0, 84,69,80,0, 69,78,0, 61,0, 78,68,0, 85,66,0, +79,0, 69,88,84,0, 82,0, 69,77,0, 84,69,80,0, 69,78,0, 34,0, +78,68,0, 82,0, 72,69,78,0, 82,0, 72,69,78,0, 79,83,0, 78,0, +65,78,0, 79,83,0, 83,69,0, 68,73,70,0, 80,0, 82,65,67,0, +84,82,0, 78,0, 71,0, 88,0, 78,0, 68,0, 69,88,84,0, 69,69,75,0, +78,0, 77,0, 78,0, 82,84,0, 83,84,69,77,50,0, 65,78,0, 65,76,0, +77,65,80,0, 77,65,80,0, 79,0, 79,83,0, 78,0, 78,0, 82,0, 83,0, +65,84,69,0, 83,69,0, 68,73,70,0, 80,0, 82,65,67,0, 69,89,0, +84,82,0, 84,0, 69,82,0, 82,73,77,0, 88,0, 68,0, 69,88,84,0, +78,0, 77,0, 71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, +77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, +77,65,80,0, 79,83,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, +83,69,0, 68,73,70,0, 80,0, 82,65,67,0, 69,89,0, 84,82,0, 84,0, +69,82,0, 82,73,77,0, 88,0, 68,0, 69,88,84,0, 78,0, 77,0, +71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 77,69,0, +73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 77,65,80,0, +72,82,0, 65,84,69,0, 83,69,0, 68,73,70,0, 78,75,69,89,0, +70,84,0, 87,69,82,0, 82,73,77,0, 73,68,0, 69,88,84,0, +69,69,75,50,0, 77,0, 71,72,84,0, 82,73,77,0, 82,0, +83,84,69,77,0, 77,69,0, 73,77,0, 80,80,69,82,0, 85,66,0, 79,0, +82,69,65,75,0, 79,78,84,73,78,85,69,0, 82,0, 72,69,78,0, 83,69,0, +68,73,70,0, 69,77,0, 83,69,0, 68,73,70,0, 69,88,84,0, 69,77,0, +79,0, 83,69,0, 68,73,70,0, 78,68,73,70,0, 69,77,0, +78,68,73,70,0, 69,77,0, 84,69,80,0, 69,88,84,0, 69,77,0, +69,88,84,0, +}; +#define AG_TCV(x) (((int)(x) >= -1 && (int)(x) <= 255) ? ag_tcv[(x) + 1] : 0) + +static const unsigned short ag_tcv[] = { + 36, 36,320,320,320,320,320,320,320,320, 1,215,320,320,320,320,320,320, + 320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, 1,320,321, + 318,322,320,320,320,252,251,277,261,225,275,323,278,324,324,324,324,324, + 324,324,324,324,324,320,319,311,256,313,320,320,325,325,325,325,326,325, + 325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325, + 325,325,320,320,320,276,320,320,325,325,325,325,326,325,325,325,325,325, + 325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,320,320, + 320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, + 320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, + 320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, + 320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, + 320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, + 320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, + 320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, + 320,320,320,320,320 +}; + +#ifndef SYNTAX_ERROR +#define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \ + (PCB).error_message, (PCB).line, (PCB).column) +#endif + +#ifndef FIRST_LINE +#define FIRST_LINE 1 +#endif + +#ifndef FIRST_COLUMN +#define FIRST_COLUMN 1 +#endif + +#ifndef PARSER_STACK_OVERFLOW +#define PARSER_STACK_OVERFLOW {fprintf(stderr, \ + "\nParser stack overflow, line %d, column %d\n",\ + (PCB).line, (PCB).column);} +#endif + +#ifndef REDUCTION_TOKEN_ERROR +#define REDUCTION_TOKEN_ERROR {fprintf(stderr, \ + "\nReduction token error, line %d, column %d\n", \ + (PCB).line, (PCB).column);} +#endif + + +typedef enum + {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key, + ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words; + +#ifndef GET_INPUT +#define GET_INPUT ((PCB).input_code = getchar()) +#endif + + +static int ag_look_ahead(void) { + if ((PCB).rx < (PCB).fx) { + return CONVERT_CASE((PCB).lab[(PCB).rx++]); + } + GET_INPUT; + (PCB).fx++; + return CONVERT_CASE((PCB).lab[(PCB).rx++] = (PCB).input_code); +} + +static void ag_get_key_word(int ag_k) { + int save_index = (PCB).rx; + const unsigned char *sp; + int ag_ch; + while (1) { + switch (ag_key_act[ag_k]) { + case ag_cf_end_key: + sp = ag_key_ends + ag_key_jmp[ag_k]; + do { + if ((ag_ch = *sp++) == 0) { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + if (ag_key_itt[ag_k2 + ag_look_ahead()]) goto ag_fail; + (PCB).rx--; + (PCB).token_number = (parseBasic_token_type) ag_key_pt[ag_k1 + 1]; + return; + } + } while (ag_look_ahead() == ag_ch); + goto ag_fail; + case ag_end_key: + sp = ag_key_ends + ag_key_jmp[ag_k]; + do { + if ((ag_ch = *sp++) == 0) { + (PCB).token_number = (parseBasic_token_type) ag_key_parm[ag_k]; + return; + } + } while (ag_look_ahead() == ag_ch); + case ag_no_match_key: +ag_fail: + (PCB).rx = save_index; + return; + case ag_cf_set_key: { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + ag_k = ag_key_jmp[ag_k]; + if (ag_key_itt[ag_k2 + (ag_ch = ag_look_ahead())]) break; + save_index = --(PCB).rx; + (PCB).token_number = (parseBasic_token_type) ag_key_pt[ag_k1+1]; + break; + } + case ag_set_key: + save_index = (PCB).rx; + (PCB).token_number = (parseBasic_token_type) ag_key_parm[ag_k]; + case ag_jmp_key: + ag_k = ag_key_jmp[ag_k]; + ag_ch = ag_look_ahead(); + break; + case ag_accept_key: + (PCB).token_number = (parseBasic_token_type) ag_key_parm[ag_k]; + return; + case ag_cf_accept_key: { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + if (ag_key_itt[ag_k2 + ag_look_ahead()]) (PCB).rx = save_index; + else { + (PCB).rx--; + (PCB).token_number = (parseBasic_token_type) ag_key_pt[ag_k1+1]; + } + return; + } + default: + /* not reachable; here to suppress compiler warnings */ + goto ag_fail; + } + if (ag_ch <= 255) while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_ch > 255 || ag_key_ch[ag_k] != ag_ch) { + (PCB).rx = save_index; + return; + } + } +} + + +#ifndef AG_NEWLINE +#define AG_NEWLINE 10 +#endif + +#ifndef AG_RETURN +#define AG_RETURN 13 +#endif + +#ifndef AG_FORMFEED +#define AG_FORMFEED 12 +#endif + +#ifndef AG_TABCHAR +#define AG_TABCHAR 9 +#endif + +static void ag_track(void) { + int ag_k = 0; + while (ag_k < (PCB).rx) { + int ag_ch = (PCB).lab[ag_k++]; + switch (ag_ch) { + case AG_NEWLINE: + (PCB).column = 1, (PCB).line++; + case AG_RETURN: + case AG_FORMFEED: + break; + case AG_TABCHAR: + (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING); + break; + default: + (PCB).column++; + } + } + ag_k = 0; + while ((PCB).rx < (PCB).fx) (PCB).lab[ag_k++] = (PCB).lab[(PCB).rx++]; + (PCB).fx = ag_k; + (PCB).rx = 0; +} + + +static void ag_prot(void) { + int ag_k; + ag_k = 128 - ++(PCB).btsx; + if (ag_k <= (PCB).ssx) { + (PCB).exit_flag = AG_STACK_ERROR_CODE; + PARSER_STACK_OVERFLOW; + return; + } + (PCB).bts[(PCB).btsx] = (PCB).sn; + (PCB).bts[ag_k] = (PCB).ssx; + (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx]; + (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx]; +} + +static void ag_undo(void) { + if ((PCB).drt == -1) return; + while ((PCB).btsx) { + int ag_k = 128 - (PCB).btsx; + (PCB).sn = (PCB).bts[(PCB).btsx--]; + (PCB).ssx = (PCB).bts[ag_k]; + (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k]; + (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k]; + } + (PCB).token_number = (parseBasic_token_type) (PCB).drt; + (PCB).ssx = (PCB).dssx; + (PCB).sn = (PCB).dsn; + (PCB).drt = -1; +} + + +static const unsigned short ag_tstt[] = { +215,214,36,1,0,212,213, +1,0, +215,214,36,0,34,35, +215,214,36,0,7,8,12, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,0,10,11,15,16,19,21,24,28,30,58,95,96,99,133,135,136,190,192, + 208,209,210,211, +215,0,13, +326,325,324,315,306,305,302,301,260,259,258,255,254,253,250,249,248,245,244, + 243,242,241,240,239,238,236,234,233,232,231,230,229,228,227,226,223,220, + 219,218,215,214,36,0,2,3,5,27,29,37,38,39,40,41,42,43,44,46,47,56,60,61, + 66,69,71,73,74,75,78,80,82,83,84,85,86,87,88,91,92,93,94,97,98,100,102, + 104,165,174,216,217,257, +326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293, + 292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275, + 261,256,253,252,251,225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293, + 292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275, + 273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252, + 251,250,225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293, + 292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275, + 273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252, + 251,250,225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293, + 292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275, + 273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252, + 251,250,225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,315,313,311,306,302,278,277,276,275,261, + 256,252,251,225,215,214,36,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293, + 292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275, + 261,256,253,252,251,225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293, + 292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275, + 261,256,253,252,251,225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293, + 292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275, + 273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252, + 251,250,241,225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293, + 292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275, + 273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252, + 251,250,225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293, + 292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275, + 261,256,253,252,251,225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,315,314,313,312,311,310,308,307,306,304, + 303,302,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,285, + 284,283,282,281,280,279,278,277,276,275,273,272,271,270,269,268,267,266, + 265,264,263,261,260,259,258,256,253,252,251,250,237,225,220,219,215,214, + 36,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,309,300,299,298,297,296,295,294, + 293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276, + 275,273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253, + 252,251,250,225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,1,0,212,213, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,0,15,16,19,21,24,28,30,58,95,96,99,133,135,136,190,192,208,209,210, + 211, +326,325,324,315,306,305,302,301,260,259,258,255,254,253,250,249,248,245,244, + 243,242,241,240,239,238,236,234,233,232,231,230,229,228,227,226,223,220, + 219,218,215,214,36,1,0,212,213, +326,325,324,323,321,319,315,306,305,302,301,300,299,298,297,296,295,294,293, + 292,291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,271, + 270,269,268,267,266,265,264,263,260,259,258,255,254,253,252,250,249,248, + 245,244,243,242,241,240,239,238,236,234,233,232,231,230,229,228,227,226, + 225,223,220,219,215,214,36,1,0,212,213, +326,325,1,0,212,213, +326,325,0,3,27,216, +326,325,315,306,305,302,301,260,259,258,255,254,253,250,249,248,245,244,243, + 242,241,240,239,238,236,234,233,232,231,230,229,228,227,226,223,220,219, + 215,214,36,0,3,5,27,37,40,41,42,43,44,46,47,56,60,61,66,69,71,73,74,75, + 78,80,82,83,84,85,86,87,88,91,92,93,94,97,98,100,102,104,165,174,216, + 257, +326,325,324,322,319,314,313,312,311,310,278,277,276,275,261,256,252,251,225, + 215,36,1,0,212,213, +326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288, + 287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266, + 265,264,263,260,259,258,253,252,250,1,0,212,213, +326,325,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +319,315,314,313,312,311,310,308,307,306,304,302,261,256,252,251,225,215,214, + 36,1,0,212,213, +315,306,302,215,214,36,1,0,212,213, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 1,0,212,213, +252,1,0,212,213, +319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215,214,36, + 1,0,212,213, +315,306,302,215,214,36,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,1,0,212,213, +246,235,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,1,0,212,213, +326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287, + 286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265, + 264,263,260,259,258,253,252,250,241,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,1,0,212,213, +326,325,1,0,212,213, +315,306,302,215,214,36,1,0,212,213, +326,325,324,315,306,302,215,214,36,1,0,212,213, +324,323,321,275,261,1,0,212,213, +326,325,1,0,212,213, +326,325,321,318,317,1,0,212,213, +326,325,324,323,321,319,318,317,316,315,306,302,300,299,298,297,296,295,294, + 293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272, + 271,270,269,268,267,266,265,264,263,260,259,258,253,252,250,225,215,214, + 36,1,0,212,213, +324,318,247,235,1,0,212,213, +324,318,247,235,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,222,1,0,212,213, +326,325,324,1,0,212,213, +326,325,324,1,0,212,213, +326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288, + 287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266, + 265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94, + 95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,175,183,185,187,188,216,257,262,274, +326,325,0,3,27,216, +256,252,0,95,99, +252,0,95, +252,0,95, +252,0,95, +256,252,0,95,99, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +252,0,95, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +246,235,0,77,89, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84, + 94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148, + 149,150,151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84, + 94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148, + 149,150,151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84, + 94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148, + 149,150,151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287, + 286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265, + 264,263,260,259,258,253,252,250,241,0,3,4,5,6,14,19,20,27,51,59,79,84, + 93,94,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126, + 127,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149, + 150,151,152,153,154,155,156,157,158,216,257,262,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84, + 94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148, + 149,150,151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84, + 94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148, + 149,150,151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84, + 94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148, + 149,150,151,152,153,154,155,156,157,158,216,274, +326,325,0,3,5,27,76,216,257, +326,325,324,0,2,3,27,29,45,216,217, +324,323,321,275,261,0,4,6,14,16,19,20,72,159,262,274, +326,325,0,3,5,27,70,198,216,257, +326,325,321,318,317,0,67,201,202,203,207,208, +326,325,324,323,321,319,318,317,316,315,306,302,300,299,298,297,296,295,294, + 293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272, + 271,270,269,268,267,266,265,264,263,260,259,258,253,252,250,225,215,214, + 36,0,62,201,202,206,207,208, +324,318,247,235,0,2,29,57,77,90,160,208,217, +324,318,247,235,0,2,29,57,77,90,160,208,217, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,222,0,3,6,14,19,20,27,48,51,94, + 95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149, + 150,151,152,153,154,155,156,157,158,216,274, +326,325,324,0,2,3,27,29,45,216,217, +326,325,324,0,2,3,27,29,45,216,217, +326,325,324,319,314,313,312,311,310,278,277,276,275,261,256,252,251,225,215, + 36,1,0,212,213, +324,0,22, +326,324,323,319,315,314,313,312,311,310,308,307,306,304,303,302,278,277,276, + 275,261,256,251,237,225,220,219,215,214,36,1,0,23, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +326,0, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +319,315,314,313,312,311,310,308,307,306,304,303,302,278,277,276,275,261,256, + 251,237,225,220,219,215,214,36,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130, + 137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154, + 155,156,157,158,216,274, +252,0,95, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,33,1,0,31, +252,1,0,212,213, +319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215,214,36, + 1,0,212,213, +319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215,214,36, + 1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +252,1,0,212,213, +326,325,319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215, + 214,36,1,0,212,213, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +252,0,95, +276,0,133, +252,0,95, +278,277,0,135,136, +326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288, + 287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266, + 265,264,263,260,259,258,253,252,250,1,0,212,213, +314,313,312,311,310,275,261,256,0,16,19,99,189,190,191,192,193, +314,313,312,311,310,261,256,0,16,99,189,190,191,192,193, +326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288, + 287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266, + 265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94, + 95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,185,187,188,216,257,262,274, +326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288, + 287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266, + 265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94, + 95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,175,183,185,187,188,216,257,262,274, +308,0,186, +307,304,0,176,184, +256,0,99, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,128, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,0,5,216,257, +326,325,0,5,216,257, +326,325,0,5,216,257, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,106, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,324,322,0, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +261,225,0,16,58, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +275,261,0,16,19, +315,306,302,215,214,36,1,0,212,213, +326,325,324,323,315,306,302,300,299,298,297,296,295,294,293,292,291,290,289, + 288,287,286,285,284,283,282,281,280,279,275,253,252,215,214,36,1,0,212, + 213, +252,0,95, +275,261,225,0,16,19,58, +225,0,58, +225,0,58, +237,0,81, +275,261,225,0,16,19,58, +225,0,58, +326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287, + 286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265, + 264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,95, + 100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,130, + 132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152, + 153,154,155,156,157,158,216,257,262,274, +261,225,0,16,58, +225,0,58, +237,0,81, +252,0,95, +252,0,95, +225,0,58, +324,323,0,6,14,20,274, +324,323,0,6,14,20,274, +225,0,58, +252,0,95, +252,0,95, +225,0,58, +252,1,0,212,213, +252,0,95, +324,0,2,29,160,217, +321,0,4,204,262, +326,325,321,0,205, +326,325,0,3,5,27,68,195,216,257, +326,325,324,323,321,319,317,315,306,302,300,299,298,297,296,295,294,293,292, + 291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,271,270, + 269,268,267,266,265,264,263,260,259,258,253,252,250,225,215,214,36,1,0, + 212,213, +317,0,202,207, +326,325,324,323,321,319,315,306,302,300,299,298,297,296,295,294,293,292,291, + 290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,271,270,269, + 268,267,266,265,264,263,260,259,258,253,252,250,225,215,214,36,0,3,4,5, + 6,14,19,20,27,51,59,63,93,94,95,100,102,104,114,115,117,118,119,120,121, + 122,123,124,125,126,127,129,130,132,134,137,138,139,140,141,142,143,144, + 145,146,147,148,149,150,151,152,153,154,155,156,157,158,216,257,262,274, +326,325,321,315,306,302,273,272,271,270,269,268,267,266,265,264,263,260,259, + 258,252,250,215,214,36,1,0,212,213, +324,0,2,29,160,217, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +225,0,58, +275,261,220,219,0,16,19,44,46, +224,221,1,0,212,213, +224,221,0,49,50, +324,0,22, +324,0,22, +324,275,261,0,17, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,251,0,3,6,14,19,20,27,51,94,95, + 96,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149, + 150,151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,131, +326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251, + 225,215,33,1,0, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130, + 137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154, + 155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,116, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130, + 132,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153, + 154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130, + 132,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153, + 154,155,156,157,158,216,274, +326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287, + 286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265, + 264,263,260,259,258,253,252,250,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287, + 286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265, + 264,263,260,259,258,253,252,250,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287, + 286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265, + 264,263,260,259,258,253,252,250,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130, + 132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152, + 153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130, + 132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152, + 153,154,155,156,157,158,216,274, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126, + 127,216,257,262, +307,251,0,96,184, +314,313,312,311,310,275,261,256,251,0,16,19,96,99,189,190,191,192,193, +314,313,312,311,310,261,256,251,0,16,96,99,189,190,191,192,193, +326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288, + 287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266, + 265,264,263,260,259,258,253,252,250,1,0,212,213, +326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288, + 287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266, + 265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94, + 95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,185,187,188,216,257,262,274, +326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288, + 287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266, + 265,264,263,260,259,258,253,252,250,1,0,212,213, +326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288, + 287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266, + 265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94, + 95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,183,185,187,188,216,257,262,274, +304,0,177, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +275,261,0,16,19, +252,225,0,95,105, +252,225,0,95,103, +252,225,0,95,101, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +261,0,16, +261,251,0,16,96, +326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287, + 286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265, + 264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,95, + 100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,130, + 132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152, + 153,154,155,156,157,158,216,257,262,274, +261,251,0,16,96, +275,261,251,0,16,19,96, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,1,0,212,213, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84, + 94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148, + 149,150,151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84, + 94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148, + 149,150,151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84, + 94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148, + 149,150,151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,163, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,161, +326,325,0,3,5,27,216,257, +324,323,321,275,261,0,4,6,14,16,19,20,159,262,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,200, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,199, +326,325,0,3,5,27,198,216,257, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +321,0,4,204,262, +252,0,95, +252,0,95, +225,0,58, +261,0,16, +275,261,0,16,19, +319,315,306,302,225,215,214,36,0,58,64, +261,0,16, +275,261,225,0,16,19,58, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,324,0,54, +326,325,324,0,52, +315,306,302,215,214,36,1,0,212,213, +315,306,302,215,214,36,1,0,212,213, +324,0,18, +324,0,18, +261,251,0,16,96, +261,251,0,16,96, +261,225,0,16,58, +261,251,0,16,96, +261,251,0,16,96, +261,251,0,16,96, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +275,261,225,0,16,19,58, +275,261,225,0,16,19,58, +275,261,251,0,16,19,96, +275,261,225,0,16,19,58, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +275,261,251,225,0,16,19,58,96, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +261,251,0,16,96, +261,251,0,16,96, +261,251,0,16,96, +261,251,0,16,96, +261,251,0,16,96, +261,251,0,16,96, +261,251,0,16,96, +275,261,251,0,16,19,96, +275,261,251,225,0,16,19,58,96, +261,225,0,16,58, +261,225,0,16,58, +261,225,0,16,58, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +276,0,133, +276,0,133, +275,261,0,16,19, +275,261,0,16,19, +275,261,0,16,19, +275,261,0,16,19, +275,261,0,16,19, +275,261,0,16,19, +278,277,0,135,136, +278,277,0,135,136, +261,0,16, +261,0,16, +261,0,16, +261,0,16, +261,0,16, +261,0,16, +308,0,186, +315,306,215,214,36,1,0,212,213, +315,306,215,214,36,0,35, +275,261,237,0,16,19,166, +275,261,0,16,19, +251,225,0,58,96, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,112, +225,0,58, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,110, +225,0,58, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,108, +225,0,58, +251,225,0,58,96, +275,261,0,16,19, +261,0,16, +275,261,225,0,16,19,58, +275,261,0,16,19, +261,0,16, +261,0,16, +275,261,225,0,16,19,58, +261,0,16, +275,261,0,16,19, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +252,0,95, +252,0,95, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +275,261,225,0,16,19,58, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,197, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,196, +326,325,0,3,5,27,68,195,216,257, +326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287, + 286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265, + 264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,95, + 100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,130, + 132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152, + 153,154,155,156,157,158,216,257,262,274, +319,315,306,302,215,214,36,0,65,209, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +261,225,0,16,58, +326,325,324,0,2,3,27,29,45,55,216,217, +326,325,324,0,2,3,27,29,45,53,216,217, +324,0, +324,0, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +251,225,0,58,96, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +251,225,0,58,96, +315,306,215,214,36,0,7,8,12,178, +237,0,81, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +256,0,99, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +256,0,99, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +251,225,0,58,96, +251,225,0,58,96, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,164, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,162, +251,225,0,58,96, +251,225,0,58,96, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +261,0,16, +275,261,0,16,19, +275,261,225,0,16,19,58, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +225,0,58, +225,0,58, +261,251,0,16,96, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +261,251,0,16,96, +275,261,225,0,16,19,58, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +315,306,36,0,179,194, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +275,261,0,16,19, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +251,225,0,58,96, +275,261,251,0,16,19,96, +251,225,0,58,96, +275,261,251,0,16,19,96, +251,225,0,58,96, +275,261,225,0,16,19,58, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +275,261,251,0,16,19,96, +275,261,225,0,16,19,58, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107, + 129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,156,157,158,216,274, +275,261,251,0,16,19,96, +251,225,0,58,96, +251,225,0,58,96, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +261,0,16, +326,325,324,0,2,3,27,29,45,216,217, +326,325,324,0,2,3,27,29,45,216,217, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +306,215,214,36,1,0,212,213, +306,215,214,36,0,35, +306,36,0,180, +303,275,261,215,214,0,16,19,167,173, +275,261,0,16,19, +225,0,113, +256,0,99, +225,0,111, +256,0,99, +225,0,109, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +261,0,16, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +251,225,0,58,96, +251,225,0,58,96, +261,0,16, +275,261,251,0,16,19,96, +306,215,214,36,0,7,8,12, +306,36,0,181,182, +324,323,275,261,1,0,212,213, +324,323,275,261,0,6,14,16,19,20,159,274, +215,214,0,168, +225,0,58, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +225,0,58, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +225,0,58, +275,261,251,0,16,19,96, +275,261,237,0,16,19,81, +315,306,302,215,214,36,1,0,212,213, +215,214,0,7,8,12, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +261,0,16, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +261,0,16, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +256,0,99, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +302,215,214,36,0,35, +275,261,251,0,16,19,96, +275,261,251,0,16,19,96, +275,261,225,0,16,19,58, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +275,261,225,0,16,19,58, +302,215,214,36,0,7,8,12,169, +256,0,99, +256,0,99, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +261,0,16, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +302,36,0,170,172, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +275,261,251,0,16,19,96, +275,261,225,0,16,19,58, +326,325,315,306,302,215,214,36,1,0,212,213, +326,325,315,306,302,215,214,36,0,3,27,171,216, +261,0,16, +261,0,16, +256,0,99, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250, + 0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125, + 126,127,216,257,262, +275,261,225,0,16,19,58, +261,0,16, +326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286, + 285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129, + 130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, + 152,153,154,155,156,157,158,216,274, +275,261,0,16,19, + +}; + + +static unsigned const char ag_astt[14392] = { + 8,8,8,1,7,1,1,9,5,8,8,8,7,0,1,8,1,2,7,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,1,7,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,7,1,3,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,2,2,5,5,1,5,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,7,2,2,1,1,2,3,1,1,3,3,3, + 3,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,2,1,1,1,1,1,1,1,1,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1, + 3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7, + 1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1, + 7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 1,7,1,3,5,5,10,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,1,7,1,3,2,2,7,2,2,1,2,2,5,5,1,5,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,7,2,1,1,3,3,3,3, + 3,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,2,1,1,1,1,1,1,1,10, + 10,10,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1, + 3,5,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,1,7,1,3,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5, + 5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7, + 1,3,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7, + 1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7, + 1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5, + 5,1,7,1,3,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,1,7,1,3, + 5,5,1,7,1,3,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1, + 3,5,5,5,5,1,7,1,3,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,1,7,1,3,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,7,2,1,1,1,1,7, + 1,1,1,7,1,1,7,1,1,7,1,1,1,7,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2, + 1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2, + 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,7,2,1,1,1,1,1,2, + 2,2,4,2,2,2,2,2,1,1,2,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,2,2,7,2,1,1,1,1,1,1,4, + 4,4,1,1,7,1,1,1,1,1,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,2,1,1,1, + 2,1,1,1,7,2,2,2,2,2,2,1,1,2,1,1,1,7,2,2,1,1,1,2,1,1,2,2,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,7,2,2,2,2,2,1,1,2,2,2,7,2, + 2,2,2,2,1,1,10,10,10,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,7,2,5,10, + 1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,3,5,1,7,1,3,5, + 1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7, + 1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3, + 5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,1,5,1,7,1,1,7, + 1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1, + 1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 7,1,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5, + 1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,1,7,1,3,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1, + 1,7,1,1,7,1,1,5,1,1,4,1,1,1,5,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,1,1,1,1,1,1, + 1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2, + 1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2, + 1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,4,7,1,1,1,7,1,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,7,1,1,1,2,2,7,1,1,1,2,2,7,1, + 1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1, + 1,1,1,10,10,10,2,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,7,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,5,5,5,5,5,5,1,7,1,3,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1, + 3,1,7,1,1,1,1,7,1,1,1,1,4,1,1,4,1,1,7,1,1,1,1,7,1,1,1,1,7,1,2,2,2,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,7,1,1,7,1,1,7, + 1,1,7,1,1,5,1,2,1,7,2,1,1,1,2,1,7,2,1,1,1,1,5,1,1,4,1,1,4,1,1,5,1,5,1,7,1, + 3,1,7,1,2,7,2,2,2,1,1,7,2,3,1,4,4,4,7,1,2,2,7,2,1,1,2,1,1,1,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,4,2,1,2,2,2,1,1,5,5,5,5,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,5,5,5,7,2,2, + 1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,1,7,1,3,2,7,2,2,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,4,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1,1,5,5,1,7,1,3, + 1,1,7,2,2,1,4,2,1,5,2,8,1,1,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2, + 1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1, + 2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1, + 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7, + 2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2, + 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, + 2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,7,1,10,10,10,10,10,2,10,10,10,10,10,10,10,10,10,10,10,10,10, + 10,2,10,10,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2, + 1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1, + 7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1, + 3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2, + 2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2, + 1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,2,1,1,1, + 1,2,2,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1,1,7,1,1,3,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,7,1,3,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2,2,2, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4, + 1,1,1,4,7,1,1,1,4,7,1,1,1,4,7,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1, + 1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,1,7,1,1,3,2,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 7,2,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,7,2,1,1,1,1,2, + 1,1,1,1,7,2,2,1,1,1,1,2,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 7,1,2,2,7,2,1,1,3,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,7,2,3,1,1,4,1,1,4,1,1,5,1,1,4,1,1,1,4,1,1,4,4,4,4,1,4,4,4,7,1,1, + 1,4,1,1,1,1,7,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,4,4,4,7,1,4,4,4,7,1,5,5,5,5,5,5,1,7,1,3, + 5,5,5,5,5,5,1,7,1,3,2,7,1,2,7,1,1,1,7,1,2,1,1,7,1,2,1,1,7,1,1,1,1,7,1,2,1, + 1,7,1,2,1,1,7,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,1,1,1,1,7,1,1,1, + 1,1,1,7,1,1,2,1,1,1,7,1,1,1,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1, + 1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,1,7,1,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1, + 1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,7,1,2,1,1,7,1,2,1,1,7,1,2,1,1,7,1, + 2,1,1,7,1,2,1,1,7,1,2,1,1,1,7,1,1,2,1,1,1,1,7,1,1,1,2,1,1,7,1,1,1,1,7,1,1, + 1,1,7,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 4,1,1,4,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1, + 4,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,5,5,5,5,5,1,7,1, + 3,5,5,8,8,5,7,1,1,1,4,7,1,1,1,1,1,4,1,1,1,1,7,1,1,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,1,1,7,1,1,1,1,4,1,1,1,4,1,1,1,1,7,1,1,1,1, + 1,5,1,1,1,4,1,1,4,1,1,1,1,7,1,1,1,1,4,1,1,1,4,1,1,2,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,7,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 7,1,2,2,7,2,1,1,3,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,4,4,4,4,4,4,7,3,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,4,1,1,2,2,2,7,2,2,2,2,2,1,1,1,2,2,2,7,2,2,2,2,2,1,1, + 1,10,4,10,4,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2, + 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, + 2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,4,4,8,1,4,7,1,1,1,1,1,7,1,2,2,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,7,1,2,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,7,1,1,1,7,1,2,1,1,7,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,4,1,1,1,4,1,1,1,1,1,4,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,4,1,1,4,1,1,1,7,1,2,1, + 1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,7,1,2,1,1,1,7,1, + 1,1,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,5,5,7,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1, + 1,1,7,1,1,1,1,1,7,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,7,1,1,2,1,1,1,7,1,1,1,2,2,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,2,1,1,7,1,2,1,1,7,1, + 2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,2,2,1,1,1,1,1,4,1,2,2,2,7,2,2,2,2,2,1,1,2,2,2,7,2,2,2,2,2,1,1,2,2,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,1,7,1,3,5,8,8, + 5,7,1,4,4,7,1,1,1,1,4,4,7,1,1,1,1,1,1,4,1,1,4,7,1,1,7,1,4,7,1,1,7,1,4,7,1, + 2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,7,1,2,1, + 4,1,1,1,1,7,1,1,2,5,8,1,5,7,1,1,1,1,2,7,3,3,5,5,5,5,1,7,1,3,2,1,1,1,7,2,1, + 1,1,1,2,1,4,4,7,1,1,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,7,1,1,1,1,7,1, + 1,1,1,1,1,7,1,1,1,5,5,5,5,5,5,1,7,1,3,8,1,7,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,5,8,8,5,7,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,2,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1, + 1,1,1,1,1,1,7,1,1,1,4,8,1,4,7,1,1,1,1,1,7,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,7, + 1,1,1,1,1,1,7,1,1,1,5,5,5,5,5,5,5,5,1,7,1,3,2,2,4,4,4,4,4,4,7,2,2,2,1,1,4, + 1,1,4,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7, + 2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,2,2,1,1,1,1,1,1,1,7,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,4,1,1 +}; + + +static const unsigned short ag_pstt[] = { +2,2,2,1,0,1,2, +327,329, +3,3,3,2,0,3, +6,4,36,3,7,5,6, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,1,4,1,330, +9,10,15,17,24,26,27,14,25,11,13,16,21,8,18,20,12,23,22,19,3,5,28,6,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, +29,6,7, +24,24,29,42,42,35,42,36,37,38,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54, + 55,56,57,58,59,60,61,62,63,64,65,66,67,31,42,42,42,7,28,26,74,70,41,38, + 33,32,38,38,38,38,97,96,95,94,93,92,91,90,89,88,65,87,86,85,84,83,82,81, + 80,79,78,77,87,88,76,75,92,73,72,71,69,68,34,30,40, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,1,8,1,392, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,1,9,1,442, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,1,10,1,441, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,1,11,1,429, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,1,12,1,372, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,1,13,1,427, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,1,14,1,435, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,1,15,1,440, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,1,16,1,394, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,1,17,1,439, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,1,18,1,391, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,1,19,1,341, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,1,20,1,377, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,1,21,1,393, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,1,22,1,367, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,1,23,1,368, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,1,24,1,438, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,1,25,1,434, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,1,26,1,437, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,1,27,1,436, +9,10,15,17,24,26,27,14,25,11,13,16,21,8,18,20,12,23,22,19,4,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,1,29,1,331, +328,328,30,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,1,30,1,333, +328,328,1,31,1,334, +24,24,32,26,40,98, +24,24,42,42,35,42,36,37,38,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65,66,67,42,42,42,33,26,74,70,39,39,39,39,39, + 97,96,95,94,93,92,91,90,89,88,65,87,86,85,84,83,82,81,80,79,78,77,87,88, + 76,75,92,73,72,71,69,68,34,40, +25,25,25,27,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,1,34,1,332, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,1,35,1,421, +328,328,1,36,1,417, +328,1,37,1,376, +328,1,38,1,375, +328,1,39,1,374, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,1,40,1,373, +328,328,328,328,328,328,1,41,1,371, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 1,42,1,370, +328,1,43,1,369, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 1,44,1,366, +328,328,328,328,328,328,1,45,1,365, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,1,46,1,364, +328,328,1,47,1,361, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,1,48,1,360, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,1,49,1,359, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,1,50,1,358, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,1,51,1,357, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,1,52,1,356, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,1,53,1,355, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,1,54,1,354, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,1,55,1,352, +328,328,1,56,1,350, +328,328,328,328,328,328,1,57,1,349, +328,328,328,328,328,328,328,328,328,1,58,1,348, +328,328,328,328,328,1,59,1,347, +328,328,1,60,1,346, +328,328,328,328,328,1,61,1,345, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,1,62,1,344, +328,328,328,328,1,63,1,343, +328,328,328,328,1,64,1,342, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,1,65,1,339, +328,328,328,1,66,1,336, +328,328,328,1,67,1,335, +24,24,18,99,150,178,101,102,103,104,105,106,107,108,109,110,111,112,113,114, + 115,116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159, + 160,161,37,38,39,43,23,44,68,26,115,176,138,123,148,100,149,179,180,124, + 125,182,172,174,173,180,180,171,170,169,168,167,166,165,164,132,133,163, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,184,183,183,183,181,34,40,162,147, +24,24,69,26,185,98, +12,23,70,186,187, +23,71,188, +23,72,189, +23,73,190, +12,23,74,191,192, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,75,115, + 176,195,124,194,172,174,173,195,195,171,170,169,168,167,166,165,164,132, + 133,163,193,40,162, +23,76,196, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,77,26,138,123,148,100,149,198,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +199,200,78,81,82, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,51,79,26,138,123,148,100,149,202,203, + 201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136, + 135,134,133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,51,80,26,138,123,148,100,149,202,204, + 201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136, + 135,134,133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,51,81,26,138,123,148,100,149,202,205, + 201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136, + 135,134,133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,82,26,138,123,148,100,149,206,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,150,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115, + 116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,160, + 161,37,38,39,43,23,44,51,83,26,115,176,138,123,148,100,149,202,209,207, + 201,124,125,208,172,174,173,209,209,171,170,169,168,167,166,165,164,132, + 133,163,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135, + 134,133,132,131,130,129,128,127,126,124,34,40,162,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,51,84,26,138,123,148,100,149,202,210, + 201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136, + 135,134,133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,51,85,26,138,123,148,100,149,202,211, + 201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136, + 135,134,133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,51,86,26,138,123,148,100,149,202,69, + 201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136, + 135,134,133,132,131,130,129,128,127,126,124,98,147, +24,24,87,26,212,213,214,34,40, +24,24,29,63,28,26,185,184,64,98,30, +18,99,150,18,20,89,249,180,123,216,215,100,217,250,162,147, +24,24,90,26,218,219,220,220,34,40, +258,258,261,25,221,91,226,226,225,224,222,223, +265,265,265,265,265,265,25,221,227,265,265,265,265,265,265,265,265,265,265, + 265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265, + 265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265, + 265,92,229,229,268,228,222,223, +29,25,230,200,93,28,183,57,80,85,274,231,30, +29,25,230,200,94,28,183,234,233,232,274,231,30, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,236,95,26,138,123,148,100,149,237,235, + 125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135, + 134,133,132,131,130,129,128,127,126,124,98,147, +24,24,29,96,28,26,185,184,48,98,30, +24,24,29,97,28,26,185,184,47,98,30, +25,25,25,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,1,98,1,332, +238,99,17, +14,19,239,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,100,16, +328,1,101,1,416, +328,1,102,1,415, +328,1,103,1,414, +328,1,104,1,413, +328,1,105,1,412, +328,1,106,1,411, +328,1,107,1,410, +328,1,108,1,409, +328,1,109,1,408, +328,1,110,1,407, +328,1,111,1,406, +328,1,112,1,405, +328,1,113,1,404, +328,1,114,1,403, +328,1,115,1,402, +328,1,116,1,401, +328,1,117,1,400, +328,1,118,1,399, +328,1,119,1,398, +328,1,120,1,397, +328,1,121,1,396, +328,1,122,1,395, +240,8, +23,124,241, +23,125,242, +23,126,243, +23,127,244, +23,128,245, +23,129,246, +23,130,247, +23,131,248, +23,132,249, +23,133,250, +23,134,251, +23,135,252, +23,136,253, +23,137,254, +23,138,255, +23,139,256, +23,140,257, +23,141,258, +23,142,259, +23,143,260, +23,144,261, +23,145,262, +23,146,263, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,1,147,1,390, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,148,26,138,123,148,100,149,125,197,144, + 144,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,130, + 129,128,127,126,124,98,147, +23,140,264, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,150, + 265, +328,1,151,1,389, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 1,152,1,388, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 1,153,1,387, +328,1,154,1,386, +328,1,155,1,385, +328,1,156,1,384, +328,1,157,1,383, +328,1,158,1,382, +328,1,159,1,381, +328,1,160,1,380, +328,1,161,1,379, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,1,162,1,378, +23,163,266, +23,164,267, +23,165,268, +23,166,269, +23,167,270, +23,168,271, +23,169,272, +23,170,273, +23,171,274, +23,172,275, +23,173,276, +23,174,277, +8,147,278, +23,113,279, +16,21,150,281,280, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,1,178,1,425, +282,11,285,13,288,18,20,12,179,292,291,290,289,287,286,284,283, +282,11,285,13,288,20,12,180,299,298,297,296,295,294,293, +24,24,18,99,150,178,101,102,103,104,105,106,107,108,109,110,111,112,113,114, + 115,116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159, + 160,161,37,38,39,43,23,44,181,26,115,176,138,123,148,100,149,179,180, + 124,125,182,172,174,173,180,180,171,170,169,168,167,166,165,164,132,133, + 163,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,218,218,181,34,40,162,147, +24,24,18,99,150,178,101,102,103,104,105,106,107,108,109,110,111,112,113,114, + 115,116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159, + 160,161,37,38,39,43,23,44,182,26,115,176,138,123,148,100,149,301,302, + 124,125,182,172,174,173,302,302,171,170,169,168,167,166,165,164,132,133, + 163,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,300,183,183,183,181,34,40,162,147, +303,212,304, +305,206,184,307,306, +12,185,308, +136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, + 136,136,136,136,136,136,136,136,136,136,186,309, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,187,26,138,123,148,100,149,310,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,188,311,193,40, +24,24,189,312,193,40, +24,24,190,313,193,40, +100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, + 100,100,100,100,100,100,100,100,100,100,191,314, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,192, + 115,176,315,124,194,172,174,173,315,315,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +25,25,25,27,193, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,194, + 115,176,316,124,194,172,174,173,316,316,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +20,19,195,299,317, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,196, + 115,176,318,124,194,172,174,173,318,318,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,197,26,138,123,148,100,149,319,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +18,20,86,292,291, +328,328,328,328,328,328,1,199,1,362, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,1,200,1, + 351, +23,201,320, +18,20,19,202,292,291,321, +19,79,322, +19,78,323, +324,205,325, +18,20,19,206,292,291,326, +19,207,327, +24,24,18,99,150,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115, + 116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,160, + 161,37,38,39,43,23,44,208,26,115,176,138,123,148,100,149,319,316,124, + 125,208,172,174,173,316,316,171,170,169,168,167,166,165,164,132,133,163, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,34,40,162,147, +20,19,209,299,328, +19,210,329, +324,211,330, +23,212,331, +23,213,332, +19,66,333, +18,99,215,182,123,100,147, +18,99,216,181,123,100,147, +19,62,334, +23,246,335, +23,243,336, +19,61,337, +328,1,221,1,433, +23,222,338, +29,223,28,183,272,30, +150,224,270,262,162, +260,260,263,225,339, +24,24,226,26,340,341,60,342,34,40, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,1, + 227,1,432, +221,267,269,222, +24,24,18,99,150,253,253,253,253,101,102,103,104,105,106,107,108,109,110,111, + 112,113,114,115,116,117,118,119,120,121,122,18,151,152,153,154,155,156, + 157,158,159,160,161,37,38,39,43,23,44,345,253,253,253,229,26,115,176, + 138,123,148,100,149,344,343,345,124,125,208,172,174,173,343,343,171,170, + 169,168,167,166,165,164,132,133,163,175,175,175,177,146,145,144,143,142, + 141,140,139,138,137,136,135,134,133,132,131,130,129,128,127,126,124,34, + 40,162,147, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,1,230,1,363, +29,231,28,183,273,30, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,83,115, + 176,346,124,194,172,174,173,346,346,171,170,169,168,167,166,165,164,132, + 133,163,193,40,162, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,233,26,138,123,148,100,149,347,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +19,234,348, +18,20,66,67,235,292,291,350,349, +328,328,1,236,1,338, +351,352,237,49,50, +238,20,21, +238,15,13, +354,353,354,240,354, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,241, + 115,176,355,124,194,172,174,173,355,355,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,242, + 115,176,356,124,194,172,174,173,356,356,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,243, + 115,176,357,124,194,172,174,173,357,357,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,244, + 115,176,358,124,194,172,174,173,358,358,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,245, + 115,176,359,124,194,172,174,173,359,359,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,246, + 115,176,360,124,194,172,174,173,360,360,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,247,26,138,123,148,100,149,361,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,248,26,138,123,148,100,149,362,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,249,26,138,123,148,100,149,363,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,250,26,138,123,148,100,149,364,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,22,251,26,138,123,148,100,149,365,125, + 197,169,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135, + 134,133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,252,26,138,123,148,100,149,366,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,253,26,138,123,148,100,149,367,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,254,26,138,123,148,100,149,368,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,255,26,138,123,148,100,149,369,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,256,26,138,123,148,100,149,370,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,257,26,138,123,148,100,149,371,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,258,26,138,123,148,100,149,372,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,259,26,138,123,148,100,149,373,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,260,26,138,123,148,100,149,374,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,261,26,138,123,148,100,149,375,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,262,26,138,123,148,100,149,376,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,263,26,138,123,148,100,149,377,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, + 141,141,141,141,141,141,141,141,141,141,264,378, +34,34,34,34,34,31,34,34,34,34,34,34,34,34,34,34,34,34,34,34,32,35,34,265, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,266, + 115,176,379,124,194,172,174,173,379,379,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,267, + 115,176,380,124,194,172,174,173,380,380,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,268, + 115,176,381,124,194,172,174,173,381,381,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,269, + 115,176,382,124,194,172,174,173,382,382,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,270, + 115,176,383,124,194,172,174,173,383,383,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,271, + 115,176,384,124,194,172,174,173,384,384,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,272, + 115,176,385,124,194,172,174,173,385,385,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,273,26,138,123,148,100,149,386,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,274,26,138,123,148,100,149,387,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,275, + 115,176,388,124,194,172,174,173,388,388,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,276, + 115,176,389,124,194,172,174,173,389,389,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,277, + 115,176,390,124,194,172,174,173,390,390,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,278,26,138,123,148,100,149,125,197,146, + 146,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,130, + 129,128,127,126,124,98,147, +116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, + 116,116,116,116,116,116,116,116,116,116,279,391, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,280,26,138,123,148,100,149,125,197,392, + 392,392,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131, + 130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,281,26,138,123,148,100,149,125,197,393, + 393,393,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131, + 130,129,128,127,126,124,98,147, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,1,282,1,430, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,283,26,138,123,148,100,149,394,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,284,26,138,123,148,100,149,395,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,1,285,1,428, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,286,26,138,123,148,100,149,396,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,287,26,138,123,148,100,149,397,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,1,288,1,426, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,289,26,138,123,148,100,149,398,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,290,26,138,123,148,100,149,399,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,291,26,138,123,148,100,149,125,197,175, + 175,175,400,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132, + 131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,292,26,138,123,148,100,149,125,197,175, + 175,175,401,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132, + 131,130,129,128,127,126,124,98,147, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,293, + 115,176,402,124,194,172,174,173,402,402,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,294, + 115,176,403,124,194,172,174,173,403,403,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,295, + 115,176,404,124,194,172,174,173,404,404,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,296, + 115,176,405,124,194,172,174,173,405,405,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,297, + 115,176,406,124,194,172,174,173,406,406,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,298, + 115,176,407,124,194,172,174,173,407,407,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,299, + 115,176,124,194,172,174,173,112,112,171,170,169,168,167,166,165,164,132, + 133,163,193,40,162, +305,22,300,217,306, +282,11,285,13,288,18,20,12,22,301,292,291,143,290,289,287,286,284,283, +282,11,285,13,288,20,12,22,302,299,118,298,297,296,295,294,293, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,1,303,1,424, +24,24,18,99,150,178,101,102,103,104,105,106,107,108,109,110,111,112,113,114, + 115,116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159, + 160,161,37,38,39,43,23,44,304,26,115,176,138,123,148,100,149,179,180, + 124,125,182,172,174,173,180,180,171,170,169,168,167,166,165,164,132,133, + 163,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,215,215,181,34,40,162,147, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,1,305,1,423, +24,24,18,99,150,178,101,102,103,104,105,106,107,108,109,110,111,112,113,114, + 115,116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159, + 160,161,37,38,39,43,23,44,306,26,115,176,138,123,148,100,149,179,180, + 124,125,182,172,174,173,180,180,171,170,169,168,167,166,165,164,132,133, + 163,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,408,408,408,181,34,40,162,147, +409,307,410, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,308,26,138,123,148,100,149,411,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,309,26,138,123,148,100,149,412,125,197, + 413,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +18,20,135,292,291, +23,98,311,414,415, +23,96,312,416,417, +23,94,313,418,419, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,314,26,138,123,148,100,149,412,125,197, + 420,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +20,93,299, +20,22,316,299,118, +24,24,18,99,150,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115, + 116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,160, + 161,37,38,39,43,23,44,317,26,115,176,138,123,148,100,149,421,422,124, + 125,208,172,174,173,422,422,171,170,169,168,167,166,165,164,132,133,163, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,34,40,162,147, +20,22,318,299,89, +18,20,22,319,292,291,143, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,320,26,138,123,148,100,149,423,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,321,26,138,123,148,100,149,424,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,322, + 115,176,425,124,194,172,174,173,425,425,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,323, + 115,176,426,124,194,172,174,173,426,426,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, + 328,328,328,328,328,328,328,328,328,328,328,1,324,1,353, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,51,325,26,138,123,148,100,149,202,75, + 201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136, + 135,134,133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,326,26,138,123,148,100,149,427,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,327, + 115,176,428,124,194,172,174,173,428,428,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,51,328,26,138,123,148,100,149,202,72, + 201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136, + 135,134,133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,329,26,138,123,148,100,149,429,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,51,330,26,138,123,148,100,149,202,70, + 201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136, + 135,134,133,132,131,130,129,128,127,126,124,98,147, +190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190, + 190,190,190,190,190,190,190,190,190,190,331,430, +186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186, + 186,186,186,186,186,186,186,186,186,186,332,431, +24,24,333,26,432,433,34,40, +18,99,150,18,20,334,251,180,123,216,215,100,252,162,147, +247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, + 247,247,247,247,247,247,247,247,247,247,335,434, +244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, + 244,244,244,244,244,244,244,244,244,244,336,435, +24,24,337,26,218,219,242,34,40, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,338,26,138,123,148,100,149,436,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +150,339,270,264,162, +23,238,437, +23,235,438, +19,233,439, +20,256,299, +18,20,254,292,291, +58,58,58,58,19,58,58,58,345,440,441, +20,84,299, +18,20,19,347,292,291,442, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,348, + 115,176,443,124,194,172,174,173,443,443,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +53,53,53,349,444, +51,51,51,350,445, +328,328,328,328,328,328,1,351,1,340, +328,328,328,328,328,328,1,352,1,337, +22,353,446, +22,354,447, +20,22,355,299,179, +20,22,356,299,178, +20,19,357,299,448, +20,22,358,299,176, +20,22,359,299,175, +20,22,360,299,174, +18,20,22,361,292,291,173, +18,20,22,362,292,291,172, +18,20,19,363,292,291,449, +18,20,19,364,292,291,450, +18,20,22,365,292,291,168, +18,20,19,366,292,291,451, +18,20,22,367,292,291,166, +18,20,22,368,292,291,165, +18,20,22,369,292,291,164, +18,20,22,370,292,291,163, +18,20,22,371,292,291,162, +18,20,22,19,372,292,291,452,160, +18,20,22,373,292,291,159, +18,20,22,374,292,291,158, +18,20,22,375,292,291,157, +18,20,22,376,292,291,156, +18,20,22,377,292,291,155, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,378,26,138,123,148,100,149,412,125,197, + 453,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +20,22,379,299,134, +20,22,380,299,131, +20,22,381,299,130, +20,22,382,299,129, +20,22,383,299,128, +20,22,384,299,127, +20,22,385,299,126, +18,20,22,386,292,291,125, +18,20,22,19,387,292,291,454,122, +20,19,388,299,455, +20,19,389,299,456, +20,19,390,299,457, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,391,26,138,123,148,100,149,412,125,197, + 458,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +8,149,278, +8,148,278, +18,20,230,292,291, +18,20,229,292,291, +18,20,228,292,291, +18,20,227,292,291, +18,20,226,292,291, +18,20,225,292,291, +16,21,152,281,280, +16,21,151,281,280, +20,224,299, +20,223,299, +20,222,299, +20,221,299, +20,220,299, +20,219,299, +303,213,304, +328,328,328,328,328,1,409,1,420, +37,37,459,459,37,410,459, +18,20,196,411,292,291,460, +18,20,194,292,291, +22,19,413,461,462, +108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108, + 108,108,108,108,108,108,108,108,108,108,414,463, +19,415,464, +105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, + 105,105,105,105,105,105,105,105,105,105,416,465, +19,417,466, +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, + 102,102,102,102,102,102,102,102,102,102,418,467, +19,419,468, +22,19,420,461,469, +18,20,91,292,291, +20,90,299, +18,20,19,423,292,291,470, +18,20,153,292,291, +20,77,299, +20,76,299, +18,20,19,427,292,291,471, +20,73,299, +18,20,71,292,291, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,430,26,138,123,148,100,149,412,125,197, + 472,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,431,26,138,123,148,100,149,412,125,197, + 473,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +23,432,474, +23,433,475, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,434,26,138,123,148,100,149,412,125,197, + 476,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,435,26,138,123,148,100,149,412,125,197, + 477,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +18,20,19,436,292,291,478, +239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, + 239,239,239,239,239,239,239,239,239,239,437,479, +236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, + 236,236,236,236,236,236,236,236,236,236,438,480, +24,24,439,26,340,341,234,342,34,40, +24,24,18,99,150,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115, + 116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,160, + 161,37,38,39,43,23,44,440,26,115,176,138,123,148,100,149,482,481,124, + 125,208,172,174,173,481,481,171,170,169,168,167,166,165,164,132,133,163, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,34,40,162,147, +14,275,275,275,275,275,275,441,59,59, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,442,26,138,123,148,100,149,483,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +20,19,56,299,484, +24,24,29,444,28,26,185,184,279,485,98,30, +24,24,29,445,28,26,185,184,277,486,98,30, +23,12, +23,11, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,448, + 115,176,487,124,194,172,174,173,487,487,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,449,26,138,123,148,100,149,488,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,450,26,138,123,148,100,149,489,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,451,26,138,123,148,100,149,490,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,452,26,138,123,148,100,149,491,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +22,19,453,461,142, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,454, + 115,176,492,124,194,172,174,173,492,492,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,455,26,138,123,148,100,149,493,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,456,26,138,123,148,100,149,494,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,457,26,138,123,148,100,149,495,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +22,19,458,461,117, +207,207,6,4,207,459,7,5,6,496, +324,460,497, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,461,26,138,123,148,100,149,498,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +12,462,499, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,463,26,138,123,148,100,149,412,125,197, + 500,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,464,26,138,123,148,100,149,501,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,465,26,138,123,148,100,149,412,125,197, + 502,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,466,26,138,123,148,100,149,503,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,467,26,138,123,148,100,149,412,125,197, + 504,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,468,26,138,123,148,100,149,505,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +12,469,506, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,470,26,138,123,148,100,149,507,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,471,26,138,123,148,100,149,508,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +22,19,472,461,191, +22,19,473,461,187, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,474,509, +188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, + 188,188,188,188,188,188,188,188,188,188,475,510, +22,19,476,461,248, +22,19,477,461,245, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,478,26,138,123,148,100,149,511,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,479,26,138,123,148,100,149,412,125,197, + 512,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,480,26,138,123,148,100,149,412,125,197, + 513,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +20,257,299, +18,20,255,292,291, +18,20,19,67,292,291,514, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,484, + 115,176,515,124,194,172,174,173,515,515,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +19,54,516, +19,52,517, +20,22,487,299,177, +18,20,22,488,292,291,171, +18,20,22,489,292,291,170, +18,20,22,490,292,291,167, +18,20,22,491,292,291,161, +20,22,492,299,123, +18,20,19,493,292,291,518, +18,20,22,494,292,291,120, +18,20,22,495,292,291,119, +519,231,231,496,521,520, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,497,26,138,123,148,100,149,522,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +18,20,195,292,291, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,499,26,138,123,148,100,149,523,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +22,19,500,461,524, +18,20,22,501,292,291,525, +22,19,502,461,526, +18,20,22,503,292,291,527, +22,19,504,461,528, +18,20,19,505,292,291,529, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,506, + 115,176,530,124,194,172,174,173,530,530,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +18,20,22,507,292,291,154, +18,20,19,508,292,291,531, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,509,26,138,123,148,100,149,412,125,197, + 532,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,510,26,138,123,148,100,149,412,125,197, + 533,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134, + 133,132,131,130,129,128,127,126,124,98,147, +18,20,22,511,292,291,271, +22,19,512,461,240, +22,19,513,461,237, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,514, + 115,176,534,124,194,172,174,173,534,534,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +20,55,299, +24,24,29,516,28,26,185,184,280,98,30, +24,24,29,517,28,26,185,184,278,98,30, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,518,26,138,123,148,100,149,535,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +328,328,328,328,1,519,1,431, +37,536,536,37,520,536, +208,208,521,537, +538,18,20,202,202,522,292,291,540,539, +18,20,137,292,291, +109,524,541, +12,525,542, +106,526,543, +12,527,544, +103,528,545, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,529,26,138,123,148,100,149,546,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +20,101,299, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,531,26,138,123,148,100,149,547,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +22,19,532,461,193, +22,19,533,461,189, +20,68,299, +18,20,22,535,292,291,121, +232,6,4,232,536,7,5,6, +548,211,537,209,209, +328,328,328,328,1,538,1,419, +18,99,18,20,539,180,123,216,215,100,203,147, +197,197,540,549, +19,541,550, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,542, + 115,176,551,124,194,172,174,173,551,551,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +19,543,552, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,544, + 115,176,553,124,194,172,174,173,553,553,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +19,545,554, +18,20,22,546,292,291,555, +18,20,324,547,292,291,556, +328,328,328,328,328,328,1,548,1,422, +6,4,549,557,5,6, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,550,26,138,123,148,100,149,558,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +20,99,299, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,552,26,138,123,148,100,149,559,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +20,97,299, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,554,26,138,123,148,100,149,560,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +12,555,561, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,556,26,138,123,148,100,149,562,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +37,563,563,37,557,563, +18,20,22,558,292,291,564, +18,20,22,559,292,291,565, +18,20,19,560,292,291,566, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,561, + 115,176,567,124,194,172,174,173,567,567,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +18,20,19,562,292,291,568, +198,6,4,198,563,7,5,6,569, +12,564,570, +12,565,571, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,566,26,138,123,148,100,149,572,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +20,95,299, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,568,26,138,123,148,100,149,573,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +574,201,569,575,575, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,570, + 115,176,576,124,194,172,174,173,576,576,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,571, + 115,176,577,124,194,172,174,173,577,577,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +18,20,22,572,292,291,578, +18,20,19,573,292,291,579, +328,328,328,328,328,328,328,328,1,574,1,418, +24,24,204,204,204,204,204,204,575,26,205,199,98, +20,110,299, +20,107,299, +12,578,580, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,579,26,138,123,148,100,149,581,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,580, + 115,176,582,124,194,172,174,173,582,582,171,170,169,168,167,166,165,164, + 132,133,163,193,40,162, +18,20,19,581,292,291,583, +20,104,299, +24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116, + 117,118,119,120,121,122,18,43,23,583,26,138,123,148,100,149,584,125,197, + 175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133, + 132,131,130,129,128,127,126,124,98,147, +18,20,74,292,291, + +}; + + +static const unsigned short ag_sbt[] = { + 0, 7, 9, 15, 22, 47, 91, 94, 184, 232, 257, 282, 345, 408, + 471, 501, 526, 574, 599, 647, 711, 774, 822, 900, 964, 989,1014,1039, + 1064,1105,1151,1235,1241,1247,1330,1355,1405,1411,1416,1421,1426,1450, + 1460,1483,1488,1511,1521,1554,1560,1594,1628,1662,1695,1745,1779,1813, + 1847,1853,1863,1876,1885,1891,1900,1960,1968,1976,2010,2017,2024,2135, + 2141,2146,2149,2152,2155,2160,2204,2207,2274,2279,2349,2419,2489,2556, + 2664,2734,2804,2874,2883,2894,2910,2920,2932,2995,3008,3021,3090,3101, + 3112,3136,3139,3172,3177,3182,3187,3192,3197,3202,3207,3212,3217,3222, + 3227,3232,3237,3242,3247,3252,3257,3262,3267,3272,3277,3282,3284,3287, + 3290,3293,3296,3299,3302,3305,3308,3311,3314,3317,3320,3323,3326,3329, + 3332,3335,3338,3341,3344,3347,3350,3353,3384,3448,3451,3476,3481,3504, + 3527,3532,3537,3542,3547,3552,3557,3562,3567,3592,3595,3598,3601,3604, + 3607,3610,3613,3616,3619,3622,3625,3628,3631,3634,3639,3689,3706,3721, + 3830,3941,3944,3949,3952,3983,4050,4056,4062,4068,4099,4143,4148,4192, + 4197,4241,4308,4313,4323,4362,4365,4372,4375,4378,4381,4388,4391,4496, + 4501,4504,4507,4510,4513,4516,4523,4530,4533,4536,4539,4542,4547,4550, + 4556,4561,4566,4576,4634,4638,4752,4781,4787,4831,4898,4901,4910,4916, + 4921,4924,4927,4932,4976,5020,5064,5108,5152,5196,5263,5330,5397,5464, + 5533,5600,5667,5734,5801,5868,5935,6002,6069,6136,6203,6270,6337,6368, + 6392,6436,6480,6524,6568,6612,6656,6700,6767,6834,6878,6922,6966,7030, + 7061,7126,7191,7240,7307,7374,7423,7490,7557,7606,7673,7740,7806,7872, + 7916,7960,8004,8048,8092,8136,8179,8184,8203,8220,8270,8379,8429,8539, + 8542,8609,8677,8682,8687,8692,8697,8765,8768,8773,8878,8883,8890,8957, + 9024,9068,9112,9146,9216,9283,9327,9397,9464,9534,9565,9596,9604,9619, + 9650,9681,9690,9757,9762,9765,9768,9771,9774,9779,9790,9793,9800,9844, + 9849,9854,9864,9874,9877,9880,9885,9890,9895,9900,9905,9910,9917,9924, + 9931,9938,9945,9952,9959,9966,9973,9980,9987,9996,10003,10010,10017, + 10024,10031,10099,10104,10109,10114,10119,10124,10129,10134,10141,10150, + 10155,10160,10165,10233,10236,10239,10244,10249,10254,10259,10264,10269, + 10274,10279,10282,10285,10288,10291,10294,10297,10300,10309,10316,10323, + 10328,10333,10364,10367,10398,10401,10432,10435,10440,10445,10448,10455, + 10460,10463,10466,10473,10476,10481,10549,10617,10620,10623,10691,10759, + 10766,10797,10828,10838,10943,10953,11020,11025,11037,11049,11051,11053, + 11097,11164,11231,11298,11365,11370,11414,11481,11548,11615,11620,11630, + 11633,11700,11703,11771,11838,11906,11973,12041,12108,12111,12178,12245, + 12250,12255,12286,12317,12322,12327,12394,12462,12530,12533,12538,12545, + 12589,12592,12595,12600,12607,12614,12621,12628,12633,12640,12647,12654, + 12660,12727,12732,12799,12804,12811,12816,12823,12828,12835,12879,12886, + 12893,12961,13029,13036,13041,13046,13090,13093,13104,13115,13182,13190, + 13196,13200,13210,13215,13218,13221,13224,13227,13230,13297,13300,13367, + 13372,13377,13380,13387,13395,13400,13408,13420,13424,13427,13471,13474, + 13518,13521,13528,13535,13545,13551,13618,13621,13688,13691,13758,13761, + 13828,13834,13841,13848,13855,13899,13906,13915,13918,13921,13988,13991, + 14058,14063,14107,14151,14158,14165,14177,14190,14193,14196,14199,14266, + 14310,14317,14320,14387,14392 +}; + + +static const unsigned short ag_sbe[] = { + 4, 8, 12, 18, 44, 68, 92, 136, 229, 254, 279, 342, 405, 468, + 498, 523, 571, 596, 644, 708, 771, 819, 897, 961, 986,1011,1036,1061, + 1084,1148,1232,1238,1243,1287,1352,1402,1408,1413,1418,1423,1447,1457, + 1480,1485,1508,1518,1551,1557,1591,1625,1659,1692,1742,1776,1810,1844, + 1850,1860,1873,1882,1888,1897,1957,1965,1973,2007,2014,2021,2070,2137, + 2143,2147,2150,2153,2157,2179,2205,2236,2276,2309,2379,2449,2518,2602, + 2694,2764,2834,2876,2886,2899,2912,2925,2988,2999,3012,3051,3093,3104, + 3133,3137,3170,3174,3179,3184,3189,3194,3199,3204,3209,3214,3219,3224, + 3229,3234,3239,3244,3249,3254,3259,3264,3269,3274,3279,3283,3285,3288, + 3291,3294,3297,3300,3303,3306,3309,3312,3315,3318,3321,3324,3327,3330, + 3333,3336,3339,3342,3345,3348,3351,3381,3413,3449,3474,3478,3501,3524, + 3529,3534,3539,3544,3549,3554,3559,3564,3589,3593,3596,3599,3602,3605, + 3608,3611,3614,3617,3620,3623,3626,3629,3632,3636,3686,3697,3713,3767, + 3876,3942,3946,3950,3981,4012,4052,4058,4064,4097,4118,4147,4167,4194, + 4216,4270,4310,4320,4359,4363,4368,4373,4376,4379,4384,4389,4436,4498, + 4502,4505,4508,4511,4514,4518,4525,4531,4534,4537,4540,4544,4548,4551, + 4557,4564,4568,4631,4635,4691,4778,4782,4806,4860,4899,4905,4913,4918, + 4922,4925,4930,4951,4995,5039,5083,5127,5171,5225,5292,5359,5426,5494, + 5562,5629,5696,5763,5830,5897,5964,6031,6098,6165,6232,6299,6366,6391, + 6411,6455,6499,6543,6587,6631,6675,6729,6796,6853,6897,6941,6995,7059, + 7090,7155,7237,7269,7336,7420,7452,7519,7603,7635,7702,7769,7835,7891, + 7935,7979,8023,8067,8111,8155,8181,8193,8211,8267,8316,8426,8475,8540, + 8571,8638,8679,8684,8689,8694,8726,8766,8770,8818,8880,8886,8919,8986, + 9043,9087,9143,9176,9245,9302,9357,9426,9494,9563,9594,9598,9609,9648, + 9679,9683,9719,9758,9763,9766,9769,9772,9776,9787,9791,9796,9819,9847, + 9852,9861,9871,9875,9878,9882,9887,9892,9897,9902,9907,9913,9920,9927, + 9934,9941,9948,9955,9962,9969,9976,9983,9991,9999,10006,10013,10020, + 10027,10060,10101,10106,10111,10116,10121,10126,10131,10137,10145,10152, + 10157,10162,10194,10234,10237,10241,10246,10251,10256,10261,10266,10271, + 10276,10280,10283,10286,10289,10292,10295,10298,10306,10314,10319,10325, + 10330,10362,10365,10396,10399,10430,10433,10437,10442,10446,10451,10457, + 10461,10464,10469,10474,10478,10510,10578,10618,10621,10652,10720,10762, + 10795,10826,10830,10883,10950,10982,11022,11028,11040,11050,11052,11072, + 11126,11193,11260,11327,11367,11389,11443,11510,11577,11617,11625,11631, + 11662,11701,11732,11800,11867,11935,12002,12070,12109,12140,12207,12247, + 12252,12284,12315,12319,12324,12356,12423,12491,12531,12535,12541,12564, + 12590,12593,12597,12603,12610,12617,12624,12630,12636,12643,12650,12657, + 12689,12729,12761,12801,12807,12813,12819,12825,12831,12854,12882,12889, + 12922,12990,13032,13038,13043,13065,13091,13096,13107,13144,13187,13194, + 13198,13205,13212,13216,13219,13222,13225,13228,13259,13298,13329,13369, + 13374,13378,13383,13391,13397,13405,13412,13422,13425,13446,13472,13493, + 13519,13524,13531,13542,13547,13580,13619,13650,13689,13720,13759,13790, + 13832,13837,13844,13851,13874,13902,13910,13916,13919,13950,13989,14020, + 14060,14082,14126,14154,14161,14174,14185,14191,14194,14197,14228,14285, + 14313,14318,14349,14389,14392 +}; + + +static const unsigned char ag_fl[] = { + 2,1,2,0,1,0,2,2,1,0,1,4,4,3,0,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,3,3,0,2, + 2,2,0,3,4,2,1,0,1,1,1,1,2,2,3,3,0,5,0,5,6,4,2,0,5,3,2,2,1,2,1,2,5,7,2, + 4,4,4,4,16,4,4,4,2,2,2,2,2,2,3,2,2,1,1,4,4,4,1,3,0,11,0,9,0,9,0,7,0,0, + 15,0,0,13,0,0,13,1,3,1,1,1,0,5,3,6,6,8,4,6,1,4,4,4,4,4,4,4,1,1,4,3,0,7, + 1,1,1,0,5,3,2,1,3,1,3,3,1,3,3,3,6,4,4,4,4,4,4,6,4,4,4,4,4,6,4,3,6,6,4, + 4,4,4,4,6,4,4,1,2,2,1,1,1,0,5,0,7,0,5,0,7,1,3,0,0,0,14,1,1,0,2,0,1,0,0, + 0,9,1,1,1,3,1,3,1,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,2,1,3,1,0,5,1,0,5,1,3, + 1,0,5,1,0,5,1,1,3,3,0,1,3,1,3,0,1,1,0,2,0,3,0,1,1,1,2,1,6,2,2,1,0,1,1, + 3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +}; + +static const unsigned short ag_ptt[] = { + 0, 10, 10, 11, 11, 12, 12, 7,274, 17, 17,274,274, 14, 23, 23, 14, 14, + 20, 20, 22, 22, 18, 18,216,216, 27,257, 29,217,217,262,262, 31, 31, 31, + 34, 35, 35, 35, 38, 38, 37, 37, 37, 37, 37, 37, 37, 37, 37, 52, 37, 54, + 37, 37, 37, 37, 64, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 40,101, 40,103, 40,105, 40,106, 40,108,109, 40,110,111, 40, + 112,113, 40, 59, 59,114,114,114,116,114,114,115,115,115,115,115,115,115, + 115,115,115,115,115,115,115,115,115, 41,128, 41,129,129,129,131,129,129, + 129,132,132,134,134,134, 51, 51, 51, 79, 79,130,130,130,130,130,130,130, + 130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130, + 159,159,159,160, 45, 45,161, 76,162, 76,163, 76,164, 76,107,107,166,168, + 169, 42,170,170,167,167,171,171,176,178,180, 43,181,181,175,175,183,183, + 185,185,185,187,187,187,187,187,187,187,187,187,187,187,187,179,179, 68, + 68,195,196,195,195,197,195, 70, 70,198,199,198,198,200,198, 72, 72, 72, + 72, 63, 63, 63, 63, 63, 67, 67, 67,203, 67,205, 67, 62, 62, 62, 62, 62, + 204,202,201, 57, 57, 65, 65, 53, 53, 55, 55, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 25, 25, 26, 26, 26, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32,212,212,213,213, 8, 13, 3, 2, 39, 44, 46, 49, 48, 47, 50, 58, + 56, 60, 61, 66, 69, 71, 73, 74, 75, 77, 78, 81, 80, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 96, 95, 94, 97, 98, 99, 5,100,102,104, 16, + 4,117,118,119,120,121,122,123,124,125,126,127, 6, 19,133,135,136,137, + 138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155, + 156,157,158,165,172,173,177,174,182,184,186,188,189,190,191,192,193,194, + 206,207,208,209,210, 30, 28, 21, 24,211, 15 +}; + + +static void ag_ra(void) +{ + switch(ag_rpx[(PCB).ag_ap]) { + case 1: ag_rp_1(); break; + case 2: V(0,(double *)) = ag_rp_2(V(0,(double *)), V(3,(int *))); break; + case 3: V(0,(double *)) = ag_rp_3(V(0,(double *)), V(3,(int *))); break; + case 4: V(0,(double *)) = ag_rp_4(V(0,(double *)), V(2,(double *))); break; + case 5: V(0,(double *)) = ag_rp_5(V(1,(double *))); break; + case 6: V(0,(double *)) = ag_rp_6(V(0,(int *))); break; + case 7: V(0,(double *)) = ag_rp_7(V(0,(double *)), V(1,(int *))); break; + case 8: V(0,(double *)) = ag_rp_8(V(0,(int *))); break; + case 9: V(0,(double *)) = ag_rp_9(V(0,(int *)), V(1,(double *))); break; + case 10: V(0,(int *)) = ag_rp_10(V(0,(int *))); break; + case 11: V(0,(int *)) = ag_rp_11(V(0,(int *)), V(1,(int *))); break; + case 12: V(0,(int *)) = ag_rp_12(V(0,(int *))); break; + case 13: V(0,(int *)) = ag_rp_13(V(0,(int *)), V(1,(int *))); break; + case 14: V(0,(char * *)) = ag_rp_14(V(0,(int *))); break; + case 15: V(0,(char * *)) = ag_rp_15(V(0,(int *))); break; + case 16: V(0,(char * *)) = ag_rp_16(V(0,(int *))); break; + case 17: V(0,(int *)) = ag_rp_17(V(0,(int *))); break; + case 18: V(0,(int *)) = ag_rp_18(V(0,(int *)), V(1,(int *))); break; + case 19: V(0,(char * *)) = ag_rp_19(V(1,(int *))); break; + case 20: V(0,(char * *)) = ag_rp_20(V(1,(int *))); break; + case 21: V(0,(int *)) = ag_rp_21(); break; + case 22: V(0,(int *)) = ag_rp_22(V(0,(int *)), V(1,(int *))); break; + case 23: V(0,(int *)) = ag_rp_23(V(0,(int *))); break; + case 24: ag_rp_24(); break; + case 25: ag_rp_25(V(1,(char * *))); break; + case 26: ag_rp_26(V(0,(char * *))); break; + case 27: ag_rp_27(V(1,(char * *))); break; + case 28: ag_rp_28(V(1,(char * *))); break; + case 29: ag_rp_29(); break; + case 30: ag_rp_30(); break; + case 31: ag_rp_31(); break; + case 32: ag_rp_32(); break; + case 33: ag_rp_33(); break; + case 34: ag_rp_34(); break; + case 35: ag_rp_35(V(1,(int *))); break; + case 36: ag_rp_36(V(1,(int *))); break; + case 37: ag_rp_37(V(1,(int *))); break; + case 38: ag_rp_38(); break; + case 39: ag_rp_39(); break; + case 40: ag_rp_40(); break; + case 41: ag_rp_41(V(1,(char * *))); break; + case 42: ag_rp_42(); break; + case 43: ag_rp_43(); break; + case 44: ag_rp_44(); break; + case 45: ag_rp_45(); break; + case 46: ag_rp_46(); break; + case 47: ag_rp_47(); break; + case 48: ag_rp_48(); break; + case 49: ag_rp_49(); break; + case 50: ag_rp_50(); break; + case 51: ag_rp_51(); break; + case 52: ag_rp_52(); break; + case 53: ag_rp_53(); break; + case 54: ag_rp_54(); break; + case 55: ag_rp_55(); break; + case 56: ag_rp_56(); break; + case 57: ag_rp_57(); break; + case 58: ag_rp_58(); break; + case 59: ag_rp_59(); break; + case 60: ag_rp_60(); break; + case 61: ag_rp_61(); break; + case 62: ag_rp_62(); break; + case 63: ag_rp_63(); break; + case 64: ag_rp_64(); break; + case 65: ag_rp_65(); break; + case 66: ag_rp_66(); break; + case 67: ag_rp_67(); break; + case 68: ag_rp_68(); break; + case 69: ag_rp_69(V(0,(char * *))); break; + case 70: ag_rp_70(V(-1,(char * *))); break; + case 71: ag_rp_71(V(2,(char * *))); break; + case 72: ag_rp_72(V(-1,(char * *))); break; + case 73: ag_rp_73(V(2,(char * *))); break; + case 74: ag_rp_74(V(-1,(char * *))); break; + case 75: ag_rp_75(V(2,(char * *))); break; + case 76: ag_rp_76(V(-2,(char * *))); break; + case 77: ag_rp_77(V(0,(char * *))); break; + case 78: ag_rp_78(V(-2,(char * *))); break; + case 79: ag_rp_79(V(-5,(char * *))); break; + case 80: ag_rp_80(V(2,(char * *))); break; + case 81: ag_rp_81(V(-2,(char * *))); break; + case 82: ag_rp_82(V(-5,(char * *))); break; + case 83: ag_rp_83(V(2,(char * *))); break; + case 84: ag_rp_84(V(-2,(char * *))); break; + case 85: ag_rp_85(V(-5,(char * *))); break; + case 86: ag_rp_86(V(2,(char * *))); break; + case 87: ag_rp_87(); break; + case 88: ag_rp_88(V(0,(char * *))); break; + case 89: ag_rp_89(V(0,(char * *))); break; + case 90: ag_rp_90(V(-2,(char * *))); break; + case 91: ag_rp_91(V(0,(char * *))); break; + case 92: ag_rp_92(); break; + case 93: ag_rp_93(); break; + case 94: ag_rp_94(); break; + case 95: ag_rp_95(); break; + case 96: ag_rp_96(); break; + case 97: ag_rp_97(); break; + case 98: ag_rp_98(); break; + case 99: ag_rp_99(); break; + case 100: ag_rp_100(); break; + case 101: ag_rp_101(); break; + case 102: ag_rp_102(); break; + case 103: ag_rp_103(); break; + case 104: ag_rp_104(); break; + case 105: ag_rp_105(); break; + case 106: ag_rp_106(); break; + case 107: ag_rp_107(); break; + case 108: ag_rp_108(V(0,(char * *))); break; + case 109: ag_rp_109(V(-2,(char * *))); break; + case 110: ag_rp_110(V(0,(char * *))); break; + case 111: ag_rp_111(V(0,(double *))); break; + case 112: ag_rp_112(V(0,(char * *))); break; + case 113: ag_rp_113(V(-2,(char * *))); break; + case 114: ag_rp_114(V(0,(char * *))); break; + case 115: ag_rp_115(); break; + case 116: ag_rp_116(); break; + case 117: ag_rp_117(); break; + case 118: ag_rp_118(); break; + case 119: ag_rp_119(); break; + case 120: ag_rp_120(); break; + case 121: ag_rp_121(); break; + case 122: ag_rp_122(); break; + case 123: ag_rp_123(); break; + case 124: ag_rp_124(); break; + case 125: ag_rp_125(); break; + case 126: ag_rp_126(); break; + case 127: ag_rp_127(); break; + case 128: ag_rp_128(); break; + case 129: ag_rp_129(); break; + case 130: ag_rp_130(); break; + case 131: ag_rp_131(); break; + case 132: ag_rp_132(); break; + case 133: ag_rp_133(); break; + case 134: ag_rp_134(); break; + case 135: ag_rp_135(); break; + case 136: ag_rp_136(); break; + case 137: ag_rp_137(); break; + case 138: ag_rp_138(); break; + case 139: ag_rp_139(); break; + case 140: ag_rp_140(); break; + case 141: ag_rp_141(); break; + case 142: ag_rp_142(); break; + case 143: ag_rp_143(); break; + case 144: ag_rp_144(); break; + case 145: ag_rp_145(); break; + case 146: ag_rp_146(); break; + case 147: V(0,(double *)) = ag_rp_147(V(0,(double *))); break; + case 148: V(0,(double *)) = ag_rp_148(V(1,(double *))); break; + case 149: V(0,(double *)) = ag_rp_149(V(1,(double *))); break; + case 150: V(0,(int *)) = ag_rp_150(V(0,(char * *))); break; + case 151: V(0,(char * *)) = ag_rp_151(V(0,(char * *))); break; + case 152: V(0,(char * *)) = ag_rp_152(V(0,(char * *))); break; + case 153: ag_rp_153(V(-2,(char * *))); break; + case 154: ag_rp_154(V(0,(char * *))); break; + case 155: ag_rp_155(V(-2,(char * *))); break; + case 156: ag_rp_156(V(2,(char * *))); break; + case 157: ag_rp_157(V(-2,(char * *))); break; + case 158: ag_rp_158(V(0,(char * *))); break; + case 159: ag_rp_159(V(-2,(char * *))); break; + case 160: ag_rp_160(V(2,(char * *))); break; + case 161: ag_rp_161(); break; + case 162: ag_rp_162(); break; + case 163: ag_rp_163(V(-3,(char * *))); break; + case 164: ag_rp_164(V(-7,(char * *)), V(-1,(double *))); break; + case 165: ag_rp_165(V(-10,(char * *)), V(-4,(double *))); break; + case 166: ag_rp_166(V(1,(char * *)), V(7,(double *))); break; + case 167: ag_rp_167(); break; + case 168: V(0,(double *)) = ag_rp_168(); break; + case 169: V(0,(double *)) = ag_rp_169(V(1,(double *))); break; + case 170: ag_rp_170(); break; + case 171: ag_rp_171(V(0,(char * *))); break; + case 172: ag_rp_172(); break; + case 173: ag_rp_173(); break; + case 174: ag_rp_174(); break; + case 175: ag_rp_175(); break; + case 176: ag_rp_176(); break; + case 177: ag_rp_177(); break; + case 178: ag_rp_178(); break; + case 179: ag_rp_179(); break; + case 180: ag_rp_180(); break; + case 181: ag_rp_181(); break; + case 182: ag_rp_182(); break; + case 183: ag_rp_183(); break; + case 184: ag_rp_184(); break; + case 185: ag_rp_185(); break; + case 186: ag_rp_186(); break; + case 187: ag_rp_187(); break; + case 188: ag_rp_188(); break; + case 189: ag_rp_189(); break; + case 190: ag_rp_190(V(0,(char * *))); break; + case 191: ag_rp_191(V(-2,(char * *))); break; + case 192: ag_rp_192(V(0,(char * *))); break; + case 193: ag_rp_193(V(0,(char * *))); break; + case 194: ag_rp_194(V(-2,(char * *))); break; + case 195: ag_rp_195(V(0,(char * *))); break; + case 196: ag_rp_196(V(0,(char * *))); break; + case 197: ag_rp_197(V(-2,(char * *))); break; + case 198: ag_rp_198(V(0,(char * *))); break; + case 199: ag_rp_199(V(0,(char * *))); break; + case 200: ag_rp_200(V(-2,(char * *))); break; + case 201: ag_rp_201(V(0,(char * *))); break; + case 202: ag_rp_202(V(0,(char * *))); break; + case 203: ag_rp_203(V(0,(double *))); break; + case 204: ag_rp_204(V(2,(char * *))); break; + case 205: ag_rp_205(V(2,(double *))); break; + case 206: ag_rp_206(); break; + case 207: ag_rp_207(); break; + case 208: ag_rp_208(); break; + case 209: ag_rp_209(); break; + case 210: ag_rp_210(); break; + case 211: ag_rp_211(); break; + case 212: ag_rp_212(); break; + case 213: ag_rp_213(); break; + case 214: ag_rp_214(); break; + case 215: ag_rp_215(); break; + case 216: ag_rp_216(); break; + case 217: ag_rp_217(); break; + case 218: ag_rp_218(V(0,(char * *))); break; + case 219: ag_rp_219(); break; + case 220: ag_rp_220(V(1,(int *))); break; + case 221: V(0,(int *)) = ag_rp_221(V(1,(int *))); break; + case 222: V(0,(int *)) = ag_rp_222(V(0,(int *))); break; + case 223: ag_rp_223(); break; + case 224: ag_rp_224(V(0,(char * *))); break; + case 225: ag_rp_225(V(2,(char * *))); break; + case 226: ag_rp_226(V(0,(char * *))); break; + case 227: ag_rp_227(V(2,(char * *))); break; + } +} + +#define TOKEN_NAMES parseBasic_token_names +const char *const parseBasic_token_names[327] = { + "program", + "white space", + "digit string", + "name", + "STRING", + "STRSYM", + "number", + "SEP", + "\"REM\"", + "", + "", + "", + "", + "'\\n'", + "simple real", + "", + "'+'", + "", + "exponent", + "'-'", + "integer part", + "'.'", + "fraction part", + "", + "digit", + "letter", + "", + "SYMBOL", + "'$'", + "DIGITS", + "'\\\"'", + "string text", + "", + "\"\\\\\\\"\"", + "program", + "statement list", + "eof", + "statement", + "label", + "\"LABEL\"", + "string_assignment", + "assignment", + "for_loop", + "if_clause", + "\"GOTO\"", + "symbol_or_lineno", + "\"GOSUB\"", + "\"ON\"", + "\"INTERRUPT\"", + "\"BREAK\"", + "\"CONTINUE\"", + "expression", + "", + "goto_list", + "", + "gosub_list", + "\"OPEN\"", + "hashed_number", + "','", + "string expression", + "\"CLOSE\"", + "\"PRINT\"", + "printintro", + "printlist", + "", + "semicolon", + "\"INPUT\"", + "inputintro", + "inputlist", + "\"READ\"", + "readlist", + "\"DATA\"", + "datalist", + "\"RESTORE\"", + "\"RETURN\"", + "\"DIM\"", + "dimlist", + "\"WINDOW\"", + "\"DOT\"", + "mapping", + "\"LINE\"", + "\"TO\"", + "\"CIRCLE\"", + "\"TEXT\"", + "\"MAP\"", + "\"ARROW\"", + "\"XTICK\"", + "\"YTICK\"", + "\"CLEAR\"", + "\"SCREEN\"", + "\"PRINTER\"", + "\"WAIT\"", + "\"BELL\"", + "\"INKEY\"", + "\"SYSTEM2\"", + "'('", + "')'", + "\"POKE\"", + "\"END\"", + "'='", + "\"MID\"", + "", + "\"LEFT\"", + "", + "\"RIGHT\"", + "", + "", + "indexlist", + "", + "", + "", + "", + "", + "", + "primary string expression", + "string_function", + "", + "\"STR\"", + "\"CHR\"", + "\"UPPER\"", + "\"LOWER\"", + "\"LTRIM\"", + "\"RTRIM\"", + "\"TRIM\"", + "\"SYSTEM\"", + "\"DATE\"", + "\"TIME\"", + "\"PEEK2\"", + "", + "primary expression", + "function", + "", + "exponential expression", + "'^'", + "multiplicative expression", + "'*'", + "'/'", + "\"SIN\"", + "\"ASIN\"", + "\"COS\"", + "\"ACOS\"", + "\"TAN\"", + "\"ATAN\"", + "\"EXP\"", + "\"LOG\"", + "\"SQRT\"", + "\"INT\"", + "\"FRAC\"", + "\"MOD\"", + "\"RAN\"", + "\"MIN\"", + "\"MAX\"", + "\"XMAP\"", + "\"YMAP\"", + "\"LEN\"", + "\"VAL\"", + "\"ASC\"", + "\"INSTR\"", + "\"PEEK\"", + "const", + "intnum", + "", + "", + "", + "", + "\"FOR\"", + "", + "step_part", + "", + "", + "next_or_eofile", + "next_symbol", + "\"NEXT\"", + "\"STEP\"", + "\"IF\"", + "condition", + "", + "\"THEN\"", + "", + "else_part", + "", + "endif_or_eof", + "\"ENDIF\"", + "and condition", + "\"OR\"", + "primary condition", + "\"AND\"", + "comparison", + "\"NOT\"", + "\"<>\"", + "'<'", + "\"<=\"", + "'>'", + "\">=\"", + "\"ELSE\"", + "input", + "", + "", + "readitem", + "", + "", + "stream", + "position", + "", + "prompt", + "", + "\"REVERSE\"", + "\"AT\"", + "'#'", + "';'", + "", + "", + "", + "", + "\"REM\"", + "'\\n'", + "name", + "digit string", + "\"LABEL\"", + "\"GOTO\"", + "\"GOSUB\"", + "\"BREAK\"", + "\"INTERRUPT\"", + "\"ON\"", + "\"CONTINUE\"", + "','", + "\"OPEN\"", + "\"CLOSE\"", + "\"PRINT\"", + "\"INPUT\"", + "\"READ\"", + "\"DATA\"", + "\"RESTORE\"", + "\"RETURN\"", + "\"DIM\"", + "\"WINDOW\"", + "\"DOT\"", + "\"TO\"", + "\"LINE\"", + "\"CIRCLE\"", + "\"TEXT\"", + "\"MAP\"", + "\"ARROW\"", + "\"XTICK\"", + "\"YTICK\"", + "\"CLEAR\"", + "\"SCREEN\"", + "\"PRINTER\"", + "\"WAIT\"", + "\"BELL\"", + "\"INKEY\"", + "')'", + "'('", + "\"SYSTEM2\"", + "\"POKE\"", + "\"END\"", + "'='", + "STRSYM", + "\"MID\"", + "\"LEFT\"", + "\"RIGHT\"", + "'+'", + "STRING", + "\"STR\"", + "\"CHR\"", + "\"UPPER\"", + "\"LOWER\"", + "\"LTRIM\"", + "\"RTRIM\"", + "\"TRIM\"", + "\"SYSTEM\"", + "\"DATE\"", + "\"TIME\"", + "\"PEEK2\"", + "number", + "'-'", + "'^'", + "'*'", + "'/'", + "\"SIN\"", + "\"ASIN\"", + "\"COS\"", + "\"ACOS\"", + "\"TAN\"", + "\"ATAN\"", + "\"EXP\"", + "\"LOG\"", + "\"SQRT\"", + "\"INT\"", + "\"FRAC\"", + "\"MOD\"", + "\"RAN\"", + "\"MIN\"", + "\"MAX\"", + "\"XMAP\"", + "\"YMAP\"", + "\"LEN\"", + "\"VAL\"", + "\"ASC\"", + "\"INSTR\"", + "\"PEEK\"", + "\"FOR\"", + "\"NEXT\"", + "\"STEP\"", + "\"THEN\"", + "\"IF\"", + "\"ENDIF\"", + "\"OR\"", + "\"AND\"", + "\"NOT\"", + "\"<>\"", + "'<'", + "\"<=\"", + "'>'", + "\">=\"", + "\"ELSE\"", + "\"REVERSE\"", + "\"AT\"", + "'#'", + "';'", + "", + "'\\\"'", + "'$'", + "'.'", + "digit", + "", + "", + +}; + +#ifndef MISSING_FORMAT +#define MISSING_FORMAT "Missing %s" +#endif +#ifndef UNEXPECTED_FORMAT +#define UNEXPECTED_FORMAT "Unexpected %s" +#endif +#ifndef UNNAMED_TOKEN +#define UNNAMED_TOKEN "input" +#endif + + +static void ag_diagnose(void) { + int ag_snd = (PCB).sn; + int ag_k = ag_sbt[ag_snd]; + + if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) { + sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]); + } + else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8 + && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1 + && *TOKEN_NAMES[ag_tstt[ag_k]]) { + sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]); + } + else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) { + sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]); + } + else if (isprint((*(PCB).lab)) && (*(PCB).lab) != '\\') { + char buf[20]; + sprintf(buf, "\'%c\'", (char) (*(PCB).lab)); + sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf); + } + else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN); + (PCB).error_message = (PCB).ag_msg; + + +} +static int ag_action_1_r_proc(void); +static int ag_action_2_r_proc(void); +static int ag_action_3_r_proc(void); +static int ag_action_4_r_proc(void); +static int ag_action_1_s_proc(void); +static int ag_action_3_s_proc(void); +static int ag_action_1_proc(void); +static int ag_action_2_proc(void); +static int ag_action_3_proc(void); +static int ag_action_4_proc(void); +static int ag_action_5_proc(void); +static int ag_action_6_proc(void); +static int ag_action_7_proc(void); +static int ag_action_8_proc(void); +static int ag_action_9_proc(void); +static int ag_action_10_proc(void); +static int ag_action_11_proc(void); +static int ag_action_8_proc(void); + + +static int (*const ag_r_procs_scan[])(void) = { + ag_action_1_r_proc, + ag_action_2_r_proc, + ag_action_3_r_proc, + ag_action_4_r_proc +}; + +static int (*const ag_s_procs_scan[])(void) = { + ag_action_1_s_proc, + ag_action_2_r_proc, + ag_action_3_s_proc, + ag_action_4_r_proc +}; + +static int (*const ag_gt_procs_scan[])(void) = { + ag_action_1_proc, + ag_action_2_proc, + ag_action_3_proc, + ag_action_4_proc, + ag_action_5_proc, + ag_action_6_proc, + ag_action_7_proc, + ag_action_8_proc, + ag_action_9_proc, + ag_action_10_proc, + ag_action_11_proc, + ag_action_8_proc +}; + + +static int ag_action_10_proc(void) { + int ag_t = (PCB).token_number; + (PCB).btsx = 0, (PCB).drt = -1; + do { + ag_track(); + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + } while ((PCB).token_number == (parseBasic_token_type) ag_t); + (PCB).rx = 0; + return 1; +} + +static int ag_action_11_proc(void) { + int ag_t = (PCB).token_number; + + (PCB).btsx = 0, (PCB).drt = -1; + do { + (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab; + (PCB).ssx--; + ag_track(); + ag_ra(); + if ((PCB).exit_flag != AG_RUNNING_CODE) return 0; + (PCB).ssx++; + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + } + while ((PCB).token_number == (parseBasic_token_type) ag_t); + (PCB).rx = 0; + return 1; +} + +static int ag_action_3_r_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_3_s_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_4_r_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap]; + return 1; +} + +static int ag_action_2_proc(void) { + (PCB).btsx = 0, (PCB).drt = -1; + if ((PCB).ssx >= 128) { + (PCB).exit_flag = AG_STACK_ERROR_CODE; + PARSER_STACK_OVERFLOW; + } + (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab; + (PCB).ss[(PCB).ssx] = (PCB).sn; + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + ag_track(); + return 0; +} + +static int ag_action_9_proc(void) { + if ((PCB).drt == -1) { + (PCB).drt=(PCB).token_number; + (PCB).dssx=(PCB).ssx; + (PCB).dsn=(PCB).sn; + } + ag_prot(); + (PCB).vs[(PCB).ssx] = ag_null_value; + (PCB).ss[(PCB).ssx] = (PCB).sn; + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + (PCB).rx = 0; + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_2_r_proc(void) { + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + return 0; +} + +static int ag_action_7_proc(void) { + --(PCB).ssx; + (PCB).rx = 0; + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_proc(void) { + ag_track(); + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_r_proc(void) { + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_s_proc(void) { + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_4_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap]; + (PCB).btsx = 0, (PCB).drt = -1; + (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else (PCB).ss[(PCB).ssx] = (PCB).sn; + ag_track(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return 0; +} + +static int ag_action_3_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + (PCB).btsx = 0, (PCB).drt = -1; + (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else (PCB).ss[(PCB).ssx] = (PCB).sn; + ag_track(); + (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return 0; +} + +static int ag_action_8_proc(void) { + ag_undo(); + (PCB).rx = 0; + (PCB).exit_flag = AG_SYNTAX_ERROR_CODE; + ag_diagnose(); + SYNTAX_ERROR; + {(PCB).rx = 1; ag_track();} + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_5_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap]; + (PCB).btsx = 0, (PCB).drt = -1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else { + (PCB).ss[(PCB).ssx] = (PCB).sn; + } + (PCB).rx = 0; + (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_6_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap]; + (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap]; + if ((PCB).drt == -1) { + (PCB).drt=(PCB).token_number; + (PCB).dssx=(PCB).ssx; + (PCB).dsn=(PCB).sn; + } + if (ag_sd) { + (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + } + else { + ag_prot(); + (PCB).vs[(PCB).ssx] = ag_null_value; + (PCB).ss[(PCB).ssx] = (PCB).sn; + } + (PCB).rx = 0; + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return (PCB).exit_flag == AG_RUNNING_CODE; +} + + +void init_parseBasic(void) { + (PCB).rx = (PCB).fx = 0; + (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0; + (PCB).exit_flag = AG_RUNNING_CODE; + (PCB).line = FIRST_LINE; + (PCB).column = FIRST_COLUMN; + (PCB).btsx = 0, (PCB).drt = -1; +} + +void parseBasic(void) { + init_parseBasic(); + (PCB).exit_flag = AG_RUNNING_CODE; + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbt[(PCB).sn]; + if (ag_tstt[ag_t1]) { + unsigned ag_t2 = ag_sbe[(PCB).sn] - 1; + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] > (unsigned short)(PCB).token_number) + ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + if (ag_tstt[ag_t1] != (unsigned short)(PCB).token_number) + ag_t1 = ag_sbe[(PCB).sn]; + } + (PCB).ag_ap = ag_pstt[ag_t1]; + (ag_gt_procs_scan[ag_astt[ag_t1]])(); + } +} + +