Mercurial > ~dholland > hg > ag > index.cgi
view tests/agcl/contrib/good/yabasic.c @ 22:5581ef01f993
Regen all the AG output.
This also fixes the line number output in the tools
(cgbigen/helpgen/help2html), apparently because those files weren't
regenerated last go.
author | David A. Holland |
---|---|
date | Mon, 13 Jun 2022 00:06:39 -0400 |
parents | 13d2b8934445 |
children |
line wrap: on
line source
/* 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]])(); } }