view tests/agcl/contrib/good/bug-I158.c @ 24:a4899cdfc2d6 default tip

Obfuscate the regexps to strip off the IBM compiler's copyright banners. I don't want bots scanning github to think they're real copyright notices because that could cause real problems.
author David A. Holland
date Mon, 13 Jun 2022 00:40:23 -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);


/*
 * 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 BUG-I158_H
#include "bug-I158.h"
#endif

#ifndef BUG-I158_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])



bug-I158_pcb_type bug-I158_pcb;
#define PCB bug-I158_pcb
#define CHANGE_REDUCTION(x) bug-I158_change_reduction(bug-I158_##x##_token)
int bug-I158_change_reduction(bug-I158_token_type);


#ifndef CONVERT_CASE
#define CONVERT_CASE(c) (c)
#endif
#ifndef TAB_SPACING
#define TAB_SPACING 8
#endif

#define ag_rp_1(x, e) (x*pow(10,e))

#define ag_rp_2(x, e) (x*pow(10,-e))

#define ag_rp_3(i, f) (i+f)

#define ag_rp_4(f) (f)

#define ag_rp_5(d) (d-'0')

#define ag_rp_6(x, d) (10*x + d-'0')

#define ag_rp_7(d) ((d-'0')/10.)

#define ag_rp_8(d, f) ((d-'0' + f)/10.)

#define ag_rp_9(d) (d-'0')

#define ag_rp_10(x, d) (10*x + d-'0')

#define ag_rp_11(c) (pushChar(c), 1)

#define ag_rp_12(k, c) (pushChar(c), k+1)

#define ag_rp_13(k) (strdup(popString(k)))

#define ag_rp_14(k) (pushChar('$'), strdup(popString(k+1)))

#define ag_rp_15(k) (strdup(popString(k)))

#define ag_rp_16(d) (pushChar(d), 1)

#define ag_rp_17(k, d) (pushChar(d), k+1)

#define ag_rp_18(k) (strdup(popString(k)))

#define ag_rp_19(k) (strdup(popString(k)))

static void ag_rp_20(void) {
/* Line -, bug-I158.syn */
if (errorlevel<=ERROR) {YYABORT;}
}

static void ag_rp_21(void) {
/* Line -, bug-I158.syn */
yylineno+=$3;
}

static void ag_rp_22(void) {
/* Line -, bug-I158.syn */
create_goto($2);
}

static void ag_rp_23(void) {
/* Line -, bug-I158.syn */
create_gosub($2);
}

static void ag_rp_24(void) {
/* Line -, bug-I158.syn */
create_exception(TRUE);
}

static void ag_rp_25(void) {
/* Line -, bug-I158.syn */
create_exception(FALSE);
}

static void ag_rp_26(void) {
/* Line -, bug-I158.syn */
create_skipper();
}

static void ag_rp_27(void) {
/* Line -, bug-I158.syn */
create_nop();
}

static void ag_rp_28(void) {
/* Line -, bug-I158.syn */
create_skipper();
}

static void ag_rp_29(void) {
/* Line -, bug-I158.syn */
create_nop();
}

static void ag_rp_30(void) {
/* Line -, bug-I158.syn */
create_label($2);
}

static void ag_rp_31(void) {
/* Line -, bug-I158.syn */
create_myopen($2,'+');
}

static void ag_rp_32(void) {
/* Line -, bug-I158.syn */
create_myopen($2,'-');
}

static void ag_rp_33(void) {
/* Line -, bug-I158.syn */
create_myclose($2);
}

static void ag_rp_34(void) {
/* Line -, bug-I158.syn */
create_revert(FALSE);
}

static void ag_rp_35(void) {
/* Line -, bug-I158.syn */
lastinput->args=0;
}

static void ag_rp_36(void) {
/* Line -, bug-I158.syn */
create_restore("");
}

static void ag_rp_37(void) {
/* Line -, bug-I158.syn */
create_restore($2);
}

static void ag_rp_38(void) {
/* Line -, bug-I158.syn */
create_return();
}

static void ag_rp_39(void) {
/* Line -, bug-I158.syn */
create_openwin(FALSE);
}

static void ag_rp_40(void) {
/* Line -, bug-I158.syn */
create_openwin(TRUE);
}

static void ag_rp_41(void) {
/* Line -, bug-I158.syn */
create_dot();
}

static void ag_rp_42(void) {
/* Line -, bug-I158.syn */
create_line('l');
}

static void ag_rp_43(void) {
/* Line -, bug-I158.syn */
create_circle()
}

static void ag_rp_44(void) {
/* Line -, bug-I158.syn */
create_text(TRUE);
}

static void ag_rp_45(void) {
/* Line -, bug-I158.syn */
create_text(FALSE);
}

static void ag_rp_46(void) {
/* Line -, bug-I158.syn */
create_makemap();
}

static void ag_rp_47(void) {
/* Line -, bug-I158.syn */
create_line('a');
}

static void ag_rp_48(void) {
/* Line -, bug-I158.syn */
create_tick(1);
}

static void ag_rp_49(void) {
/* Line -, bug-I158.syn */
create_tick(3);
}

static void ag_rp_50(void) {
/* Line -, bug-I158.syn */
create_tick(0);
}

static void ag_rp_51(void) {
/* Line -, bug-I158.syn */
create_tick(2);
}

static void ag_rp_52(void) {
/* Line -, bug-I158.syn */
create_closewin();
}

static void ag_rp_53(void) {
/* Line -, bug-I158.syn */
create_clearwin();
}

static void ag_rp_54(void) {
/* Line -, bug-I158.syn */
create_clearscreen();
}

static void ag_rp_55(void) {
/* Line -, bug-I158.syn */
create_openprinter(0);
}

static void ag_rp_56(void) {
/* Line -, bug-I158.syn */
create_openprinter(1);
}

static void ag_rp_57(void) {
/* Line -, bug-I158.syn */
create_closeprinter();
}

static void ag_rp_58(void) {
/* Line -, bug-I158.syn */
create_mywait();
}

static void ag_rp_59(void) {
/* Line -, bug-I158.syn */
create_bell();
}

static void ag_rp_60(void) {
/* Line -, bug-I158.syn */
create_function(MYINKEY); create_popstrsym(NULL);
}

static void ag_rp_61(void) {
/* Line -, bug-I158.syn */
create_function(MYSYSTEM2);
	create_popdblsym(NULL);
}

static void ag_rp_62(void) {
/* Line -, bug-I158.syn */
create_poke('s');
}

static void ag_rp_63(void) {
/* Line -, bug-I158.syn */
create_poke('d');
}

static void ag_rp_64(void) {
/* Line -, bug-I158.syn */
create_myend();
}

static void ag_rp_65(void) {
/* Line -, bug-I158.syn */
create_popstrsym($1);
}

static void ag_rp_66(void) {
/* Line -, bug-I158.syn */
create_pushstrptr($3);
}

static void ag_rp_67(void) {
/* Line -, bug-I158.syn */
create_changestring(MYMID);
}

static void ag_rp_68(void) {
/* Line -, bug-I158.syn */
create_pushstrptr($3);
}

static void ag_rp_69(void) {
/* Line -, bug-I158.syn */
create_changestring(MYLEFT);
}

static void ag_rp_70(void) {
/* Line -, bug-I158.syn */
create_pushstrptr($3);
}

static void ag_rp_71(void) {
/* Line -, bug-I158.syn */
create_changestring(MYRIGHT);
}

static void ag_rp_72(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_73(void) {
/* Line -, bug-I158.syn */
create_doarray($1,ASSIGNSTRINGARRAY);
}

static void ag_rp_74(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_75(void) {
/* Line -, bug-I158.syn */
create_doarray($3,GETSTRINGPOINTER);
}

static void ag_rp_76(void) {
/* Line -, bug-I158.syn */
create_changestring(MYMID);
}

static void ag_rp_77(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_78(void) {
/* Line -, bug-I158.syn */
create_doarray($3,GETSTRINGPOINTER);
}

static void ag_rp_79(void) {
/* Line -, bug-I158.syn */
create_changestring(MYLEFT);
}

static void ag_rp_80(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_81(void) {
/* Line -, bug-I158.syn */
create_doarray($3,GETSTRINGPOINTER);
}

static void ag_rp_82(void) {
/* Line -, bug-I158.syn */
create_changestring(MYRIGHT);
}

static void ag_rp_83(void) {
/* Line -, bug-I158.syn */
create_pushstrsym($1);
}

static void ag_rp_84(void) {
/* Line -, bug-I158.syn */
if ($1==NULL) {error(ERROR,"String not terminated");create_pushstr("");} else {create_pushstr($1);}
}

static void ag_rp_85(void) {
/* Line -, bug-I158.syn */
create_concat();
}

static void ag_rp_86(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_87(void) {
/* Line -, bug-I158.syn */
create_doarray($1,CALLSTRINGARRAY);
}

static void ag_rp_88(void) {
/* Line -, bug-I158.syn */
create_function(MYLEFT);
}

static void ag_rp_89(void) {
/* Line -, bug-I158.syn */
create_function(MYRIGHT);
}

static void ag_rp_90(void) {
/* Line -, bug-I158.syn */
create_function(MYMID);
}

static void ag_rp_91(void) {
/* Line -, bug-I158.syn */
create_function(MYSTR);
}

static void ag_rp_92(void) {
/* Line -, bug-I158.syn */
create_function(MYSTR2);
}

static void ag_rp_93(void) {
/* Line -, bug-I158.syn */
create_function(MYINKEY);
}

static void ag_rp_94(void) {
/* Line -, bug-I158.syn */
create_function(MYCHR);
}

static void ag_rp_95(void) {
/* Line -, bug-I158.syn */
create_function(MYUPPER);
}

static void ag_rp_96(void) {
/* Line -, bug-I158.syn */
create_function(MYLOWER);
}

static void ag_rp_97(void) {
/* Line -, bug-I158.syn */
create_function(MYLTRIM);
}

static void ag_rp_98(void) {
/* Line -, bug-I158.syn */
create_function(MYRTRIM);
}

static void ag_rp_99(void) {
/* Line -, bug-I158.syn */
create_function(MYTRIM);
}

static void ag_rp_100(void) {
/* Line -, bug-I158.syn */
create_function(MYSYSTEM);
}

static void ag_rp_101(void) {
/* Line -, bug-I158.syn */
create_function(MYDATE);
}

static void ag_rp_102(void) {
/* Line -, bug-I158.syn */
create_function(MYTIME);
}

static void ag_rp_103(void) {
/* Line -, bug-I158.syn */
create_function(MYPEEK2);
}

static void ag_rp_104(void) {
/* Line -, bug-I158.syn */
create_popdblsym($1);
}

static void ag_rp_105(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_106(void) {
/* Line -, bug-I158.syn */
create_doarray($1,ASSIGNARRAY);
}

static void ag_rp_107(void) {
/* Line -, bug-I158.syn */
create_pushdbl($1);
}

static void ag_rp_108(void) {
/* Line -, bug-I158.syn */
create_pushdblsym($1);
}

static void ag_rp_109(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_110(void) {
/* Line -, bug-I158.syn */
create_doarray($1,CALLARRAY);
}

static void ag_rp_111(void) {
/* Line -, bug-I158.syn */
create_dblbin('+');
}

static void ag_rp_112(void) {
/* Line -, bug-I158.syn */
create_dblbin('-');
}

static void ag_rp_113(void) {
/* Line -, bug-I158.syn */
create_dblbin('*');
}

static void ag_rp_114(void) {
/* Line -, bug-I158.syn */
create_dblbin('/');
}

static void ag_rp_115(void) {
/* Line -, bug-I158.syn */
create_dblbin('^');
}

static void ag_rp_116(void) {
/* Line -, bug-I158.syn */
create_negate();
}

static void ag_rp_117(void) {
/* Line -, bug-I158.syn */
create_map();
}

static void ag_rp_118(void) {
/* Line -, bug-I158.syn */
create_function(MYSIN);
}

static void ag_rp_119(void) {
/* Line -, bug-I158.syn */
create_function(MYASIN);
}

static void ag_rp_120(void) {
/* Line -, bug-I158.syn */
create_function(MYCOS);
}

static void ag_rp_121(void) {
/* Line -, bug-I158.syn */
create_function(MYACOS);
}

static void ag_rp_122(void) {
/* Line -, bug-I158.syn */
create_function(MYTAN);
}

static void ag_rp_123(void) {
/* Line -, bug-I158.syn */
create_function(MYATAN);
}

static void ag_rp_124(void) {
/* Line -, bug-I158.syn */
create_function(MYATAN2);
}

static void ag_rp_125(void) {
/* Line -, bug-I158.syn */
create_function(MYEXP);
}

static void ag_rp_126(void) {
/* Line -, bug-I158.syn */
create_function(MYLOG);
}

static void ag_rp_127(void) {
/* Line -, bug-I158.syn */
create_function(MYSQRT);
}

static void ag_rp_128(void) {
/* Line -, bug-I158.syn */
create_function(MYINT);
}

static void ag_rp_129(void) {
/* Line -, bug-I158.syn */
create_function(MYFRAC);
}

static void ag_rp_130(void) {
/* Line -, bug-I158.syn */
create_function(MYMOD);
}

static void ag_rp_131(void) {
/* Line -, bug-I158.syn */
create_function(MYRAN);
}

static void ag_rp_132(void) {
/* Line -, bug-I158.syn */
create_function(MYRAN2);
}

static void ag_rp_133(void) {
/* Line -, bug-I158.syn */
create_function(MYMIN);
}

static void ag_rp_134(void) {
/* Line -, bug-I158.syn */
create_function(MYMAX);
}

static void ag_rp_135(void) {
/* Line -, bug-I158.syn */
create_function(MYXMAP);
}

static void ag_rp_136(void) {
/* Line -, bug-I158.syn */
create_function(MYYMAP);
}

static void ag_rp_137(void) {
/* Line -, bug-I158.syn */
create_function(MYLEN);
}

static void ag_rp_138(void) {
/* Line -, bug-I158.syn */
create_function(MYVAL);
}

static void ag_rp_139(void) {
/* Line -, bug-I158.syn */
create_function(MYASC);
}

static void ag_rp_140(void) {
/* Line -, bug-I158.syn */
create_function(MYINSTR);
}

static void ag_rp_141(void) {
/* Line -, bug-I158.syn */
create_function(MYSYSTEM2);
}

static void ag_rp_142(void) {
/* Line -, bug-I158.syn */
create_function(MYPEEK);
}

static double ag_rp_143(void) {
/* Line -, bug-I158.syn */
$$=$1;
}

static double ag_rp_144(void) {
/* Line -, bug-I158.syn */
$$=$2;
}

static double ag_rp_145(void) {
/* Line -, bug-I158.syn */
$$=-$2;
}

static double ag_rp_146(void) {
/* Line -, bug-I158.syn */
$$=$1;
}

static double ag_rp_147(void) {
/* Line -, bug-I158.syn */
$$=atoi($1);
}

static int ag_rp_148(void) {
/* Line -, bug-I158.syn */
$$=atoi($1);
}

static char * ag_rp_149(void) {
/* Line -, bug-I158.syn */
$$=$1;
}

static char * ag_rp_150(void) {
/* Line -, bug-I158.syn */
$$=$1;
}

static void ag_rp_151(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_152(void) {
/* Line -, bug-I158.syn */
create_dim($1,'d');
}

static void ag_rp_153(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_154(void) {
/* Line -, bug-I158.syn */
create_dim($3,'d');
}

static void ag_rp_155(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_156(void) {
/* Line -, bug-I158.syn */
create_dim($1,'s');
}

static void ag_rp_157(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_158(void) {
/* Line -, bug-I158.syn */
create_dim($3,'s');
}

static void ag_rp_159(void) {
/* Line -, bug-I158.syn */
inccounter();
}

static void ag_rp_160(void) {
/* Line -, bug-I158.syn */
inccounter();
}

static void ag_rp_161(void) {
/* Line -, bug-I158.syn */
pushname($2);create_popdblsym($2);pushgoto();
             create_pushdblsym($2);
}

static void ag_rp_162(void) {
/* Line -, bug-I158.syn */
	     create_dblrelop(($8>0)?'{':'}');
             create_decide();
             pushlabel();
}

static void ag_rp_163(void) {
/* Line -, bug-I158.syn */
yylineno+=$10;
}

static void ag_rp_164(void) {
/* Line -, bug-I158.syn */
             create_pushdbl($8);
	     create_pushdblsym($2);
             create_dblbin('+');
	     create_popdblsym($2);
             swap();popgoto();poplabel();
}

static void ag_rp_165(void) {
/* Line -, bug-I158.syn */
end_of_file=TRUE;
	    error(ERROR,"'next'-statement is missing"); YYABORT;
}

static double ag_rp_166(void) {
/* Line -, bug-I158.syn */
$$=1.0;
}

static double ag_rp_167(void) {
/* Line -, bug-I158.syn */
$$=$2;
}

static void ag_rp_168(void) {
/* Line -, bug-I158.syn */
pop();
}

static void ag_rp_169(void) {
/* Line -, bug-I158.syn */
if (strcmp(pop()->pointer,$1))
             {error(ERROR,"'for' and 'next' do not match"); YYABORT;}
           
}

static void ag_rp_170(void) {
/* Line -, bug-I158.syn */
create_decide();pushlabel();
}

static void ag_rp_171(void) {
/* Line -, bug-I158.syn */
pushlabel();swap();poplabel();
}

static void ag_rp_172(void) {
/* Line -, bug-I158.syn */
poplabel();
}

static void ag_rp_173(void) {
/* Line -, bug-I158.syn */
end_of_file=TRUE;
            error(ERROR,"'endif'-statement is missing"); YYABORT;
}

static void ag_rp_174(void) {
/* Line -, bug-I158.syn */
create_boole('|');
}

static void ag_rp_175(void) {
/* Line -, bug-I158.syn */
create_boole('&');
}

static void ag_rp_176(void) {
/* Line -, bug-I158.syn */
create_boole('!');
}

static void ag_rp_177(void) {
/* Line -, bug-I158.syn */
create_strrelop('=');
}

static void ag_rp_178(void) {
/* Line -, bug-I158.syn */
create_strrelop('!');
}

static void ag_rp_179(void) {
/* Line -, bug-I158.syn */
create_strrelop('<');
}

static void ag_rp_180(void) {
/* Line -, bug-I158.syn */
create_strrelop('{');
}

static void ag_rp_181(void) {
/* Line -, bug-I158.syn */
create_strrelop('>');
}

static void ag_rp_182(void) {
/* Line -, bug-I158.syn */
create_strrelop('}');
}

static void ag_rp_183(void) {
/* Line -, bug-I158.syn */
create_dblrelop('=');
}

static void ag_rp_184(void) {
/* Line -, bug-I158.syn */
create_dblrelop('!');
}

static void ag_rp_185(void) {
/* Line -, bug-I158.syn */
create_dblrelop('<');
}

static void ag_rp_186(void) {
/* Line -, bug-I158.syn */
create_dblrelop('{');
}

static void ag_rp_187(void) {
/* Line -, bug-I158.syn */
create_dblrelop('>');
}

static void ag_rp_188(void) {
/* Line -, bug-I158.syn */
create_dblrelop('}');
}

static void ag_rp_189(void) {
/* Line -, bug-I158.syn */
create_testeof($3);
}

static void ag_rp_190(void) {
/* Line -, bug-I158.syn */
create_myread('d');create_popdblsym($1);
}

static void ag_rp_191(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_192(void) {
/* Line -, bug-I158.syn */
create_myread('d');create_doarray($1,ASSIGNARRAY);
}

static void ag_rp_193(void) {
/* Line -, bug-I158.syn */
create_myread('s');create_popstrsym($1);
}

static void ag_rp_194(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_195(void) {
/* Line -, bug-I158.syn */
create_myread('s');create_doarray($1,ASSIGNSTRINGARRAY);
}

static void ag_rp_196(void) {
/* Line -, bug-I158.syn */
create_readdata('d');create_popdblsym($1);
}

static void ag_rp_197(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_198(void) {
/* Line -, bug-I158.syn */
create_readdata('d');create_doarray($1,ASSIGNARRAY);
}

static void ag_rp_199(void) {
/* Line -, bug-I158.syn */
create_readdata('s');create_popstrsym($1);
}

static void ag_rp_200(void) {
/* Line -, bug-I158.syn */
pushcounter();
}

static void ag_rp_201(void) {
/* Line -, bug-I158.syn */
create_readdata('s');create_doarray($1,ASSIGNSTRINGARRAY);
}

static void ag_rp_202(void) {
/* Line -, bug-I158.syn */
create_strdata($1);
}

static void ag_rp_203(void) {
/* Line -, bug-I158.syn */
create_dbldata($1);
}

static void ag_rp_204(void) {
/* Line -, bug-I158.syn */
create_strdata($3);
}

static void ag_rp_205(void) {
/* Line -, bug-I158.syn */
create_dbldata($3);
}

static void ag_rp_206(void) {
/* Line -, bug-I158.syn */
create_print('d');
}

static void ag_rp_207(void) {
/* Line -, bug-I158.syn */
create_print('d');
}

static void ag_rp_208(void) {
/* Line -, bug-I158.syn */
create_print('s');
}

static void ag_rp_209(void) {
/* Line -, bug-I158.syn */
create_print('s');
}

static void ag_rp_210(void) {
/* Line -, bug-I158.syn */
create_myswitch(0);create_readline(NULL);
}

static void ag_rp_211(void) {
/* Line -, bug-I158.syn */
create_myswitch(0);create_readline(NULL);
}

static void ag_rp_212(void) {
/* Line -, bug-I158.syn */
create_myswitch(0);
}

static void ag_rp_213(void) {
/* Line -, bug-I158.syn */
create_myswitch(0);
}

static void ag_rp_214(void) {
/* Line -, bug-I158.syn */
create_myswitch(0);
}

static void ag_rp_215(void) {
/* Line -, bug-I158.syn */
create_revert(TRUE);create_myswitch(0);
}

static void ag_rp_216(void) {
/* Line -, bug-I158.syn */
create_myswitch(0);
}

static void ag_rp_217(void) {
/* Line -, bug-I158.syn */
create_revert(TRUE);create_myswitch(0);
}

static void ag_rp_218(void) {
/* Line -, bug-I158.syn */
create_readline($1);
}

static void ag_rp_219(void) {
/* Line -, bug-I158.syn */
create_mymove();
}

static void ag_rp_220(void) {
/* Line -, bug-I158.syn */
create_myswitch($2);
}

static int ag_rp_221(void) {
/* Line -, bug-I158.syn */
$$=$2;
}

static int ag_rp_222(void) {
/* Line -, bug-I158.syn */
$$=$1;
}

static void ag_rp_223(void) {
/* Line -, bug-I158.syn */
create_print('n');
}

static void ag_rp_224(void) {
/* Line -, bug-I158.syn */
create_goto($1);create_findnop();
}

static void ag_rp_225(void) {
/* Line -, bug-I158.syn */
create_goto($3);create_findnop();
}

static void ag_rp_226(void) {
/* Line -, bug-I158.syn */
create_gosub($1);create_findnop();
}

static void ag_rp_227(void) {
/* Line -, bug-I158.syn */
create_gosub($3);create_findnop();
}


#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 bug-I158_vs_type const ag_null_value NULL_VALUE_INITIALIZER;

static const unsigned char ag_rpx[] = {
    0,  0,  0,  0,  1,  2,  3,  0,  0,  0,  4,  5,  6,  7,  8,  9, 10, 11,
   12, 13, 14, 15, 16, 17, 18, 19,  0,  0,  0,  0, 20, 21,  0,  0,  0,  0,
    0,  0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,  0, 35,  0,
    0, 36, 37, 38,  0, 39, 40, 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, 68, 69,
   70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,  0, 84, 85, 86,
   87,  0, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103,
  104,105,106,107,  0,108,109,110,  0,111,112,113,114,115,116,  0,117,118,
  119,120,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,  0,  0,165,166,167,168,169,170,
  171,172,  0,  0,173,  0,174,175,176,177,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, 83, 84,255, 79,255, 70, 71,255, 83, 84,255, 79,255, 71, 83, 84,255,
   84,255, 83, 84,255, 79,255, 71,255, 83,255, 78,255
};

static const unsigned char ag_key_act[] = {
  0,3,3,4,2,4,3,2,4,3,3,4,2,4,2,3,3,4,3,4,3,3,4,2,4,2,4,3,4,3,4
};

static const unsigned char ag_key_parm[] = {
    0,135,134,  0,  0,  0,176,  0,  0,135,134,  0,  0,  0,  0,184,153,  0,
  153,  0,135,134,  0,  0,  0,  0,  0,184,  0,183,  0
};

static const unsigned char ag_key_jmp[] = {
    0,  3,  6,  0,  1,  0,  0,  4,  0,  8, 11,  0,  9,  0, 12, 13, 17,  0,
   19,  0, 21, 24,  0, 20,  0, 23,  0, 26,  0, 30,  0
};

static const unsigned char ag_key_index[] = {
    0,  0,  0,  0,  6,  6,  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,  0,  0,  0,  0,  0,
    0,  0, 14,  0, 14, 14, 14,  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,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0, 14,  0,  0,  0,  0,  0,  0,  0, 14,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 18,
    0,  0,  0,  0,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0, 25,  0, 14, 14,  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,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,  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,  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,  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,  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,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 18,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 18,  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,  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,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0, 27,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 29,  0,  0,  0,  0, 29,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0
};

static const unsigned char ag_key_ends[] = {
79,82,0, 85,66,0, 79,0, 85,66,0, 79,0, 84,69,80,0, 79,0, 
79,0, 85,66,0, 79,0, 84,69,80,0, 69,88,84,0, 
};
#define AG_TCV(x) (((int)(x) >= -1 && (int)(x) <= 255) ? ag_tcv[(x) + 1] : 0)

static const unsigned char ag_tcv[] = {
  125,125,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 30,
  202, 26,  0,  0,  0,154,155,118, 12,141, 15, 17,119, 20, 20, 20, 20, 20,
   20, 20, 20, 20, 20,  0,203,  0,  0,  0,  0,  0,204,204,204,204, 11,204,
  204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,
  204,204,  0,  0,  0,120,  0,  0,204,204,204,204, 11,204,204,204,204,204,
  204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,  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,  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,  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,  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,  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,  0,  0,  0,
    0,  0,  0,  0,  0
};

#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 = (bug-I158_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 = (bug-I158_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 = (bug-I158_token_type) ag_key_pt[ag_k1+1];
      break;
    }
    case ag_set_key:
      save_index = (PCB).rx;
      (PCB).token_number = (bug-I158_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 =  (bug-I158_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 =  (bug-I158_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 = (bug-I158_token_type) (PCB).drt;
  (PCB).ssx = (PCB).dssx;
  (PCB).sn = (PCB).dsn;
  (PCB).drt = -1;
}


static const unsigned char ag_tstt[] = {
126,125,0,123,124,
7,0,127,
125,0,
7,0,
204,176,135,134,125,115,112,102,98,97,96,79,78,77,74,73,72,70,69,68,67,65,
  64,63,62,61,48,47,46,45,44,43,39,35,34,11,0,128,
204,176,135,134,125,115,112,102,98,97,96,79,78,77,74,73,72,70,69,68,67,65,
  64,63,62,61,48,47,46,45,44,43,39,35,34,11,0,21,24,25,129,130,131,132,
  133,
204,26,20,11,0,
204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
  99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30,
  20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185,
204,11,0,21,24,
154,60,0,
154,0,
154,0,
154,0,
154,60,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
154,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
66,50,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
  99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,74,30,20,
  17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,152,167,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
204,11,0,21,24,25,151,
204,20,11,0,5,21,24,27,28,
30,20,17,15,12,0,2,3,9,10,16,27,28,29,150,
204,11,0,21,24,25,149,194,
204,202,49,30,11,0,147,197,198,199,
204,203,202,154,141,125,117,116,114,113,112,111,110,109,108,107,106,105,104,
  103,102,101,100,99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,
  80,76,75,51,49,30,20,17,15,11,0,143,197,198,
202,71,66,20,0,4,6,27,28,
202,71,66,20,0,4,6,27,28,
204,20,11,0,5,21,24,27,28,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,36,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,20,11,0,5,21,24,27,28,
204,20,11,0,5,21,24,27,28,
203,184,155,153,141,135,134,125,120,119,118,60,59,58,57,56,55,53,52,40,20,
  17,15,12,11,7,0,
20,0,18,
203,184,155,153,141,135,134,125,120,119,118,60,59,58,57,56,55,53,52,40,20,
  17,15,12,11,7,0,19,
20,0,
11,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
31,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
154,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
154,0,
154,0,
154,0,
120,119,118,60,59,58,57,56,55,15,12,0,
60,59,58,57,56,55,12,0,
204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
  99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30,
  20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185,
204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
  99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30,
  20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185,
53,52,40,0,186,
204,20,11,0,
60,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,169,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,11,0,21,25,
204,11,0,21,25,
204,11,0,21,25,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,159,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,26,20,11,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
141,12,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
120,119,118,15,12,0,
154,0,
141,120,119,118,15,12,0,
141,0,
141,0,
153,0,
141,120,119,118,15,12,0,
141,0,
204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
  99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,30,20,17,
  15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,
141,12,0,
141,0,
153,0,
154,0,
154,0,
141,0,
20,17,0,3,9,10,16,27,28,
20,17,0,3,9,10,16,27,28,
141,0,
154,0,
154,0,
141,0,
154,0,
20,0,4,27,28,
30,0,29,200,
204,30,11,0,201,
204,11,0,21,24,25,148,191,
49,0,198,
204,203,154,141,125,117,116,114,113,112,111,110,109,108,107,106,105,104,103,
  102,101,100,99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,
  75,30,20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,144,167,170,
20,0,4,27,28,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
141,0,
135,134,120,119,118,15,12,0,
38,37,0,
20,0,18,
20,0,18,
20,15,12,0,13,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,155,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,
  81,80,76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
32,30,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
120,119,118,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,171,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,168,
202,20,0,4,6,27,28,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
0,
155,53,52,0,
155,120,119,118,60,59,58,57,56,55,15,12,0,
155,60,59,58,57,56,55,12,0,
204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
  99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30,
  20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185,
204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
  99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30,
  20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185,
40,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
120,119,118,15,12,0,
154,141,0,158,
154,141,0,157,
154,141,0,156,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
12,0,
155,12,0,
204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
  99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,30,20,17,
  15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,
155,12,0,
155,120,119,118,15,12,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,174,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,172,
204,11,0,21,24,25,
30,20,17,15,12,0,2,3,9,10,16,27,28,29,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,196,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,195,
204,11,0,21,24,25,194,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
30,0,29,200,
154,0,
154,0,
141,0,
12,0,
120,119,118,15,12,0,
203,141,125,0,145,
12,0,
141,120,119,118,15,12,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,20,11,0,139,
204,20,11,0,137,
20,0,14,
20,0,14,
155,12,0,
155,12,0,
141,12,0,
155,12,0,
155,12,0,
155,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
141,120,119,118,15,12,0,
141,120,119,118,15,12,0,
155,120,119,118,15,12,0,
141,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,141,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,12,0,
155,12,0,
155,12,0,
155,12,0,
155,12,0,
155,12,0,
155,12,0,
155,120,119,118,15,12,0,
155,141,120,119,118,15,12,0,
141,12,0,
141,12,0,
141,12,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
155,0,
120,119,118,15,12,0,
120,119,118,15,12,0,
120,119,118,15,12,0,
120,119,118,15,12,0,
120,119,118,15,12,0,
120,119,118,15,12,0,
0,
120,0,
120,0,
120,119,118,0,
120,119,118,0,
12,0,
12,0,
12,0,
12,0,
12,0,
12,0,
0,
0,
52,0,
126,0,
153,120,119,118,15,12,0,177,
120,119,118,15,12,0,
155,141,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,165,
141,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,163,
141,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,161,
141,0,
155,141,0,
120,119,118,15,12,0,
12,0,
141,120,119,118,15,12,0,
120,119,118,15,12,0,
12,0,
12,0,
141,120,119,118,15,12,0,
12,0,
120,119,118,15,12,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
154,0,
154,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
141,120,119,118,15,12,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,193,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,192,
204,11,0,21,24,25,148,191,
204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
  99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,30,20,17,
  15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,
203,125,0,146,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
141,12,0,
204,20,11,0,5,21,24,27,28,140,
204,20,11,0,5,21,24,27,28,138,
20,0,
20,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
155,141,0,
155,141,0,
42,41,8,0,187,
153,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
60,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
60,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
155,141,0,
155,141,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,175,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,173,
155,141,0,
155,141,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
12,0,
120,119,118,15,12,0,
141,120,119,118,15,12,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
141,0,
141,0,
155,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,12,0,
141,120,119,118,15,12,0,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
42,41,8,0,188,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
120,119,118,15,12,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
155,141,0,
155,120,119,118,15,12,0,
155,141,0,
155,120,119,118,15,12,0,
155,141,0,
141,120,119,118,15,12,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
155,120,119,118,15,12,0,
141,120,119,118,15,12,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
155,120,119,118,15,12,0,
155,141,0,
155,141,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
12,0,
204,20,11,0,5,21,24,27,28,
204,20,11,0,5,21,24,27,28,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
126,0,
42,8,0,189,
184,120,119,118,15,12,7,0,1,
120,119,118,15,12,0,
141,0,166,
60,0,
141,0,164,
60,0,
141,0,162,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
12,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
155,141,0,
155,141,0,
12,0,
155,120,119,118,15,12,0,
42,8,0,190,
20,17,15,12,0,2,3,9,10,16,27,28,
7,0,178,
141,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
141,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
141,0,
155,120,119,118,15,12,0,
153,120,119,118,15,12,0,
7,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
12,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
12,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
60,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
126,0,179,
155,120,119,118,15,12,0,
155,120,119,118,15,12,0,
141,120,119,118,15,12,0,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
141,120,119,118,15,12,0,
126,0,
60,0,
60,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
12,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
183,8,0,180,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
155,120,119,118,15,12,0,
141,120,119,118,15,12,0,
183,8,0,181,
12,0,
12,0,
60,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
204,125,11,0,21,24,182,
204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
  25,29,142,167,
141,120,119,118,15,12,0,
12,0,
204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
  76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
120,119,118,15,12,0,

};


static unsigned const char ag_astt[7483] = {
  1,8,7,0,1,4,7,1,3,7,1,7,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,2,1,1,1,5,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,
  1,1,2,1,2,1,1,1,1,1,1,2,7,1,1,1,3,3,3,3,3,10,2,10,10,4,2,1,2,2,1,1,1,1,1,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,1,2,
  7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,2,2,7,1,1,1,1,7,1,7,1,7,1,7,1,1,7,2,1,2,2,
  1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,7,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,2,2,7,2,1,1,1,1,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,2,2,1,1,1,1,2,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,7,2,2,1,1,1,1,2,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,7,2,2,1,1,
  1,1,2,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,2,7,
  2,2,1,1,1,1,2,1,1,1,2,1,2,2,1,1,1,1,1,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,7,2,2,1,1,1,1,1,2,1,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,2,7,2,2,1,1,1,1,2,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,7,2,2,1,
  1,1,1,2,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,7,2,2,1,1,1,1,2,1,1,2,1,2,2,7,1,1,1,1,2,2,2,4,2,1,2,2,1,1,1,1,1,1,7,2,2,
  2,1,1,2,1,2,1,2,2,7,1,1,1,1,1,4,1,1,4,4,7,1,1,1,1,4,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,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,
  4,4,7,1,1,2,1,2,2,2,7,2,2,2,1,1,1,1,2,7,2,1,2,1,2,2,2,7,2,1,2,2,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,7,2,2,1,1,1,1,2,1,1,1,
  2,2,2,7,2,1,2,2,1,2,2,2,7,2,1,2,2,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,7,1,7,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,10,1,5,5,5,5,
  7,3,10,4,1,5,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,
  7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,
  1,7,1,7,2,1,1,1,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,2,2,1,
  1,1,1,2,1,1,1,1,4,1,4,1,7,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,7,2,1,2,2,
  1,1,1,1,1,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,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,2,1,2,2,1,1,1,1,1,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,1,2,7,2,2,1,1,
  1,1,1,2,1,2,1,1,1,1,1,1,1,4,7,1,10,10,10,4,1,7,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,1,1,1,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,2,2,1,1,1,1,2,1,1,1,2,2,7,1,1,2,2,7,1,1,2,2,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,2,1,2,2,1,1,1,1,
  1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,10,2,10,10,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,
  1,1,1,1,2,7,1,1,2,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,
  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,2,7,2,2,1,1,1,
  1,2,1,1,1,1,1,1,1,1,4,1,7,1,1,1,1,1,1,7,1,4,1,4,1,7,1,1,1,1,1,1,7,1,7,2,1,
  2,2,1,1,1,1,1,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,2,7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,7,1,7,1,7,1,7,1,7,1,5,1,1,7,
  2,2,1,1,2,1,1,1,7,2,2,1,1,2,1,1,5,1,4,1,4,1,5,1,7,2,7,2,2,1,1,7,2,3,4,4,4,
  7,1,2,2,7,1,1,1,2,1,1,4,2,2,5,1,8,5,2,2,1,1,1,1,1,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,2,7,2,2,1,1,1,1,1,2,1,2,1,1,
  1,1,1,2,7,2,2,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,4,1,1,2,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,2,7,2,2,1,1,1,1,2,1,1,1,1,
  7,1,1,1,1,1,1,1,7,2,2,7,1,4,2,1,5,2,8,1,1,7,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,
  1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,
  1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,
  1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,
  2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,7,2,2,1,1,1,1,
  2,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,2,7,2,2,1,
  1,1,1,2,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,2,7,
  2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,
  1,1,1,2,2,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,
  1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,
  2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,
  1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,
  1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,1,
  1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,
  1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,
  2,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,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,2,7,2,1,
  2,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,2,7,2,2,1,1,1,
  1,2,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,2,7,2,2,
  1,1,1,1,2,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,2,
  7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,1,1,1,2,1,
  2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,
  1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,
  1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,
  1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,
  2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,4,3,1,1,7,3,1,1,1,1,1,1,
  1,1,1,1,1,7,3,1,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,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,1,2,7,2,2,1,1,1,1,1,2,1,2,1,
  1,1,1,1,2,1,2,2,1,1,1,1,1,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,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,7,2,1,1,1,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,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,1,1,
  1,1,1,1,1,1,1,4,1,4,7,1,1,4,7,1,1,4,7,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,2,7,2,2,1,1,1,1,2,1,1,1,1,1,4,3,1,7,2,1,2,2,1,1,1,1,
  1,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,2,
  7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,2,1,7,3,1,1,1,1,1,7,2,1,1,1,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,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,1,1,1,2,1,2,2,1,1,
  1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,
  2,7,1,1,2,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,
  7,2,2,1,1,1,1,2,1,1,2,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,2,7,2,2,1,1,1,1,2,1,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,
  2,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,7,2,2,1,
  1,1,1,2,1,1,2,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,2,
  7,2,2,1,1,1,1,2,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,7,2,2,1,1,1,1,2,1,1,2,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,1,1,1,1,1,1,1,1,7,2,2,2,1,1,2,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,2,2,7,1,1,1,3,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,1,7,2,3,1,4,1,4,1,5,1,4,1,1,1,
  1,1,4,4,1,4,7,1,1,4,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,
  1,1,2,1,1,4,4,4,7,1,4,4,4,7,1,2,7,1,2,7,1,2,1,7,2,1,7,1,1,7,2,1,7,2,1,7,2,
  1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,2,1,1,1,1,1,7,
  1,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,
  1,1,1,1,7,2,1,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,
  1,1,1,7,2,1,1,1,1,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,1,1,1,
  1,7,2,1,1,1,1,1,1,7,1,1,7,1,1,7,1,1,7,2,1,1,1,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,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,1,1,1,1,2,7,1,1,1,1,1,4,1,1,
  1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,4,4,1,4,1,4,1,1,1,4,
  1,1,1,4,1,4,1,4,1,4,1,4,1,4,1,4,4,4,1,4,1,7,4,1,1,1,1,1,7,1,1,1,1,1,1,4,1,
  1,7,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,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,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,7,1,1,1,1,1,4,1,
  4,1,1,1,1,1,1,7,1,1,1,1,1,5,1,4,1,4,1,1,1,1,1,1,7,1,4,1,1,1,1,1,4,2,1,1,1,
  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,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,
  1,1,1,1,1,7,1,7,2,1,1,1,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,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,7,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,1,1,1,3,1,2,1,2,2,1,1,1,1,1,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,2,7,2,2,1,1,1,1,1,2,1,
  2,1,1,1,1,3,4,7,3,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,1,1,4,2,2,2,7,2,1,2,2,1,1,2,2,2,7,2,1,2,2,1,1,10,4,
  10,4,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,1,
  1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,1,1,1,2,
  1,7,2,1,7,4,4,4,7,1,1,7,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,1,7,2,1,1,1,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,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,1,1,
  1,1,7,2,1,1,1,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,2,2,1,1,
  1,1,2,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,2,7,2,
  2,1,1,1,1,2,1,1,1,2,1,7,2,1,7,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,1,7,2,1,7,2,1,1,1,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,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,1,1,1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,1,4,2,1,
  2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,4,1,4,2,1,7,2,1,1,1,1,1,7,
  2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,7,1,1,1,1,1,1,7,2,1,1,1,1,1,
  7,2,1,1,1,1,1,7,5,1,5,7,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,2,7,2,2,1,1,1,1,2,1,1,1,1,1,1,1,1,4,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,
  7,1,1,1,1,1,1,7,1,1,7,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,
  7,1,1,2,1,1,2,1,1,1,1,1,7,1,1,1,1,1,1,7,2,1,1,1,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,2,2,1,1,1,1,2,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,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,7,2,1,
  7,2,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,4,2,2,2,7,2,1,
  2,2,1,2,2,2,7,2,1,2,2,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,2,7,2,2,1,1,1,1,2,1,1,1,3,7,4,4,7,1,1,1,1,1,1,1,4,7,1,1,1,1,1,1,4,4,
  7,1,1,7,4,7,1,1,7,4,7,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,2,7,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,2,1,7,2,1,7,1,4,2,1,1,1,1,1,7,3,2,
  7,3,1,1,1,1,7,2,2,2,1,1,2,1,4,7,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,
  2,7,1,1,2,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,7,1,
  1,1,1,1,1,7,1,1,1,1,1,1,7,1,7,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,1,7,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,4,7,1,1,
  1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,
  1,2,7,1,1,2,1,1,1,1,1,1,1,1,7,1,7,1,7,1,7,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,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,2,2,1,1,1,1,2,1,1,1,4,4,7,1,2,1,2,2,
  1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,
  1,1,2,7,1,1,2,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,7,1,2,7,1,1,4,1,4,1,7,2,1,1,1,
  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,2,2,1,1,1,1,2,1,1,1,2,
  4,2,7,1,2,3,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,1,1,1,1,1,
  7,1,4,2,1,1,1,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,2,2,1,1,
  1,1,2,1,1,1,1,1,1,1,1,4
};


static const unsigned short ag_pstt[] = {
1,2,0,0,2,
30,1,3,
28,2,
4,3,
31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,
  31,31,31,31,31,31,31,31,31,31,31,4,5,
17,8,36,37,33,14,15,80,12,10,11,18,19,20,21,79,16,17,22,23,25,32,33,27,28,
  29,84,26,57,24,30,31,7,35,34,17,5,6,9,13,32,32,32,32,32,
18,20,18,18,19,
17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
  48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,7,
  129,171,42,40,6,80,81,172,41,105,83,84,84,83,87,
17,17,8,88,89,
90,91,9,
92,10,
93,11,
94,12,
95,96,13,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,14,97,81,105,99,
  99,
100,15,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,16,129,171,42,40,88,80,172,41,102,102,
73,74,17,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  103,38,39,79,17,18,129,171,42,40,88,80,172,41,104,105,104,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  103,38,39,79,17,19,129,171,42,40,88,80,172,41,104,106,104,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  103,38,39,79,17,20,129,171,42,40,88,80,172,41,104,107,104,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,21,129,171,42,40,88,80,172,41,108,108,
17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
  48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,103,66,38,39,79,17,22,
  129,171,42,40,6,80,81,172,41,105,104,111,109,111,104,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  103,38,39,79,17,23,129,171,42,40,88,80,172,41,104,112,104,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  103,38,39,79,17,24,129,171,42,40,88,80,172,41,104,113,104,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  103,38,39,79,17,25,129,171,42,40,88,80,172,41,104,61,104,
17,17,26,6,115,114,116,
17,22,17,55,56,88,175,174,41,
66,38,39,117,118,28,239,168,171,42,40,172,41,238,119,
17,17,29,6,121,120,122,122,
247,124,123,250,247,30,127,127,126,125,
254,254,124,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,
  254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,
  254,254,254,254,254,254,254,128,123,254,254,254,254,254,31,129,129,257,
130,77,72,22,32,263,49,173,41,
130,131,132,22,33,263,133,173,41,
17,22,17,34,46,88,175,174,41,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  135,38,39,79,17,35,129,171,42,40,88,80,172,41,134,134,
17,22,17,36,39,88,175,174,41,
17,22,17,37,38,88,175,174,41,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
  11,38,
136,39,10,
7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,12,137,7,7,7,7,40,9,
23,21,
138,1,
139,43,
140,44,
141,45,
142,46,
143,47,
144,48,
145,49,
146,50,
147,51,
148,52,
149,53,
150,54,
151,55,
152,56,
153,57,
154,58,
155,59,
156,60,
157,61,
158,62,
159,63,
160,64,
161,65,
162,66,
163,67,
164,68,
165,69,
166,70,
167,71,
168,72,
169,73,
170,74,
171,75,
172,76,
173,77,
174,78,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,79,129,171,42,40,88,80,172,41,175,175,
176,131,
177,103,
178,82,
185,186,187,184,180,182,179,181,183,188,189,83,
195,191,193,190,192,194,196,84,
17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
  48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,85,
  129,171,42,40,6,80,81,172,41,105,83,84,84,83,197,
17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
  48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,86,
  129,171,42,40,6,80,81,172,41,105,199,200,200,199,198,
202,201,197,87,203,
18,18,18,19,
204,89,
127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,
  127,127,127,127,127,127,127,127,127,127,90,205,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,91,129,171,42,40,88,80,172,41,206,206,
17,17,92,97,207,
17,17,93,97,208,
17,17,94,97,209,
92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
  92,92,92,92,95,210,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,96,97,81,105,
  211,211,
18,20,18,18,97,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,98,97,81,105,
  212,212,
213,196,99,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,100,97,81,105,
  214,214,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,101,129,171,42,40,88,80,172,41,215,215,
185,186,187,188,189,78,
216,103,
217,185,186,187,188,189,104,
218,71,
219,70,
220,107,
221,185,186,187,188,189,108,
222,109,
17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
  48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79,17,110,129,
  171,42,40,6,80,81,172,41,105,215,212,212,215,
223,196,111,
224,112,
225,113,
226,114,
227,115,
228,58,
38,39,117,170,171,42,40,172,41,
38,39,118,169,171,42,40,172,41,
229,54,
230,235,
231,232,
232,53,
233,123,
22,124,261,173,41,
66,125,259,251,
249,252,249,126,234,
17,17,127,6,236,235,52,237,
123,256,258,
17,242,110,240,242,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,
  76,77,78,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79,
  17,129,129,171,42,40,6,80,81,172,41,105,239,238,240,238,239,
22,130,262,173,41,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,75,97,81,105,
  241,241,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,132,129,171,42,40,88,80,172,41,242,242,
243,133,
244,245,185,186,187,188,189,134,
41,40,135,
136,13,14,
136,8,6,
247,246,247,138,247,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,139,97,81,105,
  248,248,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,140,97,81,105,
  249,249,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,141,97,81,105,
  250,250,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,142,97,81,105,
  251,251,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,143,97,81,105,
  252,252,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,144,97,81,105,
  253,253,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,145,129,171,42,40,88,80,172,41,254,254,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,146,129,171,42,40,88,80,172,41,255,255,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,147,129,171,42,40,88,80,172,41,256,256,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,148,129,171,42,40,88,80,172,41,257,257,
17,157,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,
  49,50,38,39,79,17,149,129,171,42,40,88,80,172,41,258,258,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,150,129,171,42,40,88,80,172,41,259,259,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,151,129,171,42,40,88,80,172,41,260,260,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,152,129,171,42,40,88,80,172,41,261,261,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,153,129,171,42,40,88,80,172,41,262,262,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,154,129,171,42,40,88,80,172,41,263,263,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,155,129,171,42,40,88,80,172,41,264,264,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,156,129,171,42,40,88,80,172,41,265,265,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,157,129,171,42,40,88,80,172,41,266,266,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,158,129,171,42,40,88,80,172,41,267,267,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,159,129,171,42,40,88,80,172,41,268,268,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,160,129,171,42,40,88,80,172,41,269,269,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,161,129,171,42,40,88,80,172,41,270,270,
25,24,162,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,163,97,81,105,
  271,271,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,164,97,81,105,
  272,272,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,165,97,81,105,
  273,273,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,166,97,81,105,
  274,274,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,167,97,81,105,
  275,275,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,168,97,81,105,
  276,276,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,169,97,81,105,
  277,277,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,170,129,171,42,40,88,80,172,41,278,278,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,171,129,171,42,40,88,80,172,41,279,279,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,172,97,81,105,
  280,280,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,173,97,81,105,
  281,281,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,174,97,81,105,
  282,282,
185,186,187,140,
132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
  132,132,132,132,132,132,132,132,132,132,176,283,
107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,
  107,107,107,107,107,107,107,107,107,107,177,284,
130,22,178,263,285,173,41,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,179,129,171,42,40,88,80,172,41,286,286,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,180,129,171,42,40,88,80,172,41,287,287,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,181,129,171,42,40,88,80,172,41,288,288,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,182,129,171,42,40,88,80,172,41,289,289,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,183,129,171,42,40,88,80,172,41,290,290,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,184,129,171,42,40,88,80,172,41,291,291,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,185,129,171,42,40,88,80,172,41,292,292,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,186,129,171,42,40,88,80,172,41,293,293,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,187,129,171,42,40,88,80,172,41,294,294,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,188,129,171,42,40,88,80,172,41,295,295,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,189,129,171,42,40,88,80,172,41,296,296,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,190,97,81,105,
  297,297,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,191,97,81,105,
  298,298,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,192,97,81,105,
  299,299,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,193,97,81,105,
  300,300,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,194,97,81,105,
  301,301,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,195,97,81,105,
  302,302,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,196,97,81,105,
  303,303,
206,
203,202,201,198,
134,185,186,187,184,180,182,179,181,183,188,189,199,
109,195,191,193,190,192,194,196,200,
17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
  48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,
  201,129,171,42,40,6,80,81,172,41,105,83,84,84,83,304,
17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
  48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,
  202,129,171,42,40,6,80,81,172,41,105,83,84,84,83,305,
306,203,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,204,129,171,42,40,88,80,172,41,307,307,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,205,129,171,42,40,88,80,172,41,308,309,308,
185,186,187,188,189,126,
310,90,207,311,
312,88,208,313,
314,86,209,315,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,210,129,171,42,40,88,80,172,41,308,316,308,
196,85,
109,196,212,
17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
  48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79,17,213,129,
  171,42,40,6,80,81,172,41,105,317,318,318,317,
81,196,214,
134,185,186,187,188,189,215,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,216,129,171,42,40,88,80,172,41,319,319,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,217,129,171,42,40,88,80,172,41,320,320,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,218,97,81,105,
  321,321,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,219,97,81,105,
  322,322,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  103,38,39,79,17,220,129,171,42,40,88,80,172,41,104,67,104,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,221,129,171,42,40,88,80,172,41,323,323,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,222,97,81,105,
  324,324,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  103,38,39,79,17,223,129,171,42,40,88,80,172,41,104,64,104,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,224,129,171,42,40,88,80,172,41,325,325,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  103,38,39,79,17,225,129,171,42,40,88,80,172,41,104,62,104,
180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,
  180,180,180,180,180,180,180,180,180,180,226,326,
176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,
  176,176,176,176,176,176,176,176,176,176,227,327,
17,17,228,6,329,328,
66,38,39,117,118,229,241,168,171,42,40,172,41,240,
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,230,330,
233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,
  233,233,233,233,233,233,233,233,233,233,231,331,
17,17,232,6,121,120,231,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,233,129,171,42,40,88,80,172,41,332,332,
66,234,259,253,
333,227,
334,224,
335,222,
196,245,
185,186,187,188,189,243,
50,336,50,240,337,
196,76,
338,185,186,187,188,189,242,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,243,97,81,105,
  339,339,
44,44,44,244,340,
42,42,42,245,341,
15,246,342,
15,247,343,
167,196,248,
166,196,249,
344,196,250,
164,196,251,
163,196,252,
162,196,253,
161,185,186,187,188,189,254,
160,185,186,187,188,189,255,
345,185,186,187,188,189,256,
346,185,186,187,188,189,257,
156,185,186,187,188,189,258,
347,185,186,187,188,189,259,
154,185,186,187,188,189,260,
153,185,186,187,188,189,261,
152,185,186,187,188,189,262,
151,185,186,187,188,189,263,
150,185,186,187,188,189,264,
148,348,185,186,187,188,189,265,
147,185,186,187,188,189,266,
146,185,186,187,188,189,267,
145,185,186,187,188,189,268,
144,185,186,187,188,189,269,
143,185,186,187,188,189,270,
125,196,271,
122,196,272,
121,196,273,
120,196,274,
119,196,275,
118,196,276,
117,196,277,
116,185,186,187,188,189,278,
113,349,185,186,187,188,189,279,
350,196,280,
351,196,281,
352,196,282,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,283,129,171,42,40,88,80,172,41,308,353,308,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,284,129,171,42,40,88,80,172,41,308,354,308,
219,285,
185,186,187,188,189,218,
185,186,187,188,189,217,
185,186,187,188,189,216,
185,186,187,188,189,215,
185,186,187,188,189,214,
185,186,187,188,189,213,
139,
185,138,
185,137,
185,186,187,136,
185,186,187,135,
196,212,
196,211,
196,210,
196,209,
196,208,
196,207,
106,
205,
201,204,
355,306,
186,185,186,187,188,189,307,356,
185,186,187,188,189,184,
358,357,309,
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,310,359,
360,311,
97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,
  97,97,97,97,312,361,
362,313,
94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,
  94,94,94,94,314,363,
364,315,
365,357,316,
185,186,187,188,189,83,
196,82,
366,185,186,187,188,189,319,
185,186,187,188,189,141,
196,69,
196,68,
367,185,186,187,188,189,323,
196,65,
185,186,187,188,189,63,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,326,129,171,42,40,88,80,172,41,308,368,308,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,327,129,171,42,40,88,80,172,41,308,369,308,
370,328,
371,329,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,330,129,171,42,40,88,80,172,41,308,372,308,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,331,129,171,42,40,88,80,172,41,308,373,308,
374,185,186,187,188,189,332,
228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,
  228,228,228,228,228,228,228,228,228,228,333,375,
225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,
  225,225,225,225,225,225,225,225,225,225,334,376,
17,17,335,6,236,235,223,237,
17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
  48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79,17,336,129,
  171,42,40,6,80,81,172,41,105,378,377,377,378,
51,264,337,51,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,338,129,171,42,40,88,80,172,41,379,379,
380,196,48,
17,22,17,340,268,88,175,174,41,381,
17,22,17,341,266,88,175,174,41,382,
16,5,
16,4,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,344,97,81,105,
  383,383,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,345,129,171,42,40,88,80,172,41,384,384,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,346,129,171,42,40,88,80,172,41,385,385,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,347,129,171,42,40,88,80,172,41,386,386,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,348,129,171,42,40,88,80,172,41,387,387,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,349,97,81,105,
  388,388,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,350,129,171,42,40,88,80,172,41,389,389,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,351,129,171,42,40,88,80,172,41,390,390,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,352,129,171,42,40,88,80,172,41,391,391,
133,357,353,
108,357,354,
198,198,198,355,392,
393,356,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,357,129,171,42,40,88,80,172,41,394,394,
395,358,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,359,129,171,42,40,88,80,172,41,308,396,308,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,360,129,171,42,40,88,80,172,41,397,397,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,361,129,171,42,40,88,80,172,41,308,398,308,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,362,129,171,42,40,88,80,172,41,399,399,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,363,129,171,42,40,88,80,172,41,308,400,308,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,364,129,171,42,40,88,80,172,41,401,401,
402,365,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,366,129,171,42,40,88,80,172,41,403,403,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,367,129,171,42,40,88,80,172,41,404,404,
181,357,368,
177,357,369,
182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,
  182,182,182,182,182,182,182,182,182,182,370,405,
178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,
  178,178,178,178,178,178,178,178,178,178,371,406,
237,357,372,
234,357,373,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,374,129,171,42,40,88,80,172,41,407,407,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,375,129,171,42,40,88,80,172,41,308,408,308,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,376,129,171,42,40,88,80,172,41,308,409,308,
196,246,
185,186,187,188,189,244,
410,185,186,187,188,189,59,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,380,97,81,105,
  411,411,
412,45,
413,43,
165,196,383,
159,185,186,187,188,189,384,
158,185,186,187,188,189,385,
155,185,186,187,188,189,386,
149,185,186,187,188,189,387,
114,196,388,
414,185,186,187,188,189,389,
111,185,186,187,188,189,390,
110,185,186,187,188,189,391,
220,415,220,392,416,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,393,129,171,42,40,88,80,172,41,417,417,
185,186,187,188,189,185,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,395,129,171,42,40,88,80,172,41,418,418,
419,357,396,
420,185,186,187,188,189,397,
421,357,398,
422,185,186,187,188,189,399,
423,357,400,
424,185,186,187,188,189,401,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,402,97,81,105,
  425,425,
142,185,186,187,188,189,403,
426,185,186,187,188,189,404,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,405,129,171,42,40,88,80,172,41,308,427,308,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,406,129,171,42,40,88,80,172,41,308,428,308,
260,185,186,187,188,189,407,
229,357,408,
226,357,409,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,410,97,81,105,
  429,429,
196,47,
17,22,17,412,269,88,175,174,41,
17,22,17,413,267,88,175,174,41,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,414,129,171,42,40,88,80,172,41,430,430,
221,415,
199,199,416,431,
432,185,186,187,188,189,193,417,433,
185,186,187,188,189,128,
101,419,434,
435,420,
98,421,436,
437,422,
95,423,438,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,424,129,171,42,40,88,80,172,41,439,439,
196,93,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,426,129,171,42,40,88,80,172,41,440,440,
183,357,427,
179,357,428,
196,60,
112,185,186,187,188,189,430,
200,202,431,200,
38,39,117,118,432,194,168,171,42,40,172,41,
187,433,441,
442,434,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,435,97,81,105,
  443,443,
444,436,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,437,97,81,105,
  445,445,
446,438,
447,185,186,187,188,189,439,
448,185,186,187,188,189,440,
449,441,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,442,129,171,42,40,88,80,172,41,450,450,
196,91,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,444,129,171,42,40,88,80,172,41,451,451,
196,89,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,446,129,171,42,40,88,80,172,41,452,452,
453,447,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,448,129,171,42,40,88,80,172,41,454,454,
188,449,455,
456,185,186,187,188,189,450,
457,185,186,187,188,189,451,
458,185,186,187,188,189,452,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,453,97,81,105,
  459,459,
460,185,186,187,188,189,454,
461,455,
462,456,
463,457,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,458,129,171,42,40,88,80,172,41,464,464,
196,87,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,460,129,171,42,40,88,80,172,41,465,465,
189,189,461,466,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,462,97,81,105,
  467,467,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,463,97,81,105,
  468,468,
469,185,186,187,188,189,464,
470,185,186,187,188,189,465,
471,192,466,471,
196,102,
196,99,
472,469,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,470,129,171,42,40,88,80,172,41,473,473,
17,195,17,471,88,196,190,
17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,472,97,81,105,
  474,474,
475,185,186,187,188,189,473,
196,96,
17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
  38,39,79,17,475,129,171,42,40,88,80,172,41,476,476,
185,186,187,188,189,66,

};


static const unsigned short ag_sbt[] = {
     0,   5,   8,  10,  12,  50,  95, 100, 163, 168, 171, 173, 175, 177,
   180, 205, 207, 247, 250, 292, 334, 376, 416, 478, 520, 562, 604, 611,
   620, 635, 643, 653, 708, 717, 726, 735, 776, 785, 794, 821, 824, 852,
   854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880,
   882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908,
   910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 968, 970, 972, 974,
   986, 994,1057,1120,1125,1129,1131,1162,1202,1207,1212,1217,1248,1273,
  1278,1303,1306,1331,1371,1377,1379,1386,1388,1390,1392,1399,1401,1461,
  1464,1466,1468,1470,1472,1474,1483,1492,1494,1496,1498,1500,1502,1507,
  1511,1516,1524,1527,1591,1596,1621,1661,1663,1671,1674,1677,1680,1685,
  1710,1735,1760,1785,1810,1835,1875,1915,1955,1995,2036,2076,2116,2156,
  2196,2236,2276,2316,2356,2396,2436,2476,2516,2519,2544,2569,2594,2619,
  2644,2669,2694,2734,2774,2799,2824,2849,2853,2884,2915,2922,2962,3002,
  3042,3082,3122,3162,3202,3242,3282,3322,3362,3387,3412,3437,3462,3487,
  3512,3537,3538,3542,3555,3564,3627,3690,3692,3732,3773,3779,3783,3787,
  3791,3832,3834,3837,3897,3900,3907,3947,3987,4012,4037,4079,4119,4144,
  4186,4226,4268,4299,4330,4336,4350,4381,4412,4419,4459,4463,4465,4467,
  4469,4471,4477,4482,4484,4491,4516,4521,4526,4529,4532,4535,4538,4541,
  4544,4547,4550,4557,4564,4571,4578,4585,4592,4599,4606,4613,4620,4627,
  4635,4642,4649,4656,4663,4670,4673,4676,4679,4682,4685,4688,4691,4698,
  4706,4709,4712,4715,4756,4797,4799,4805,4811,4817,4823,4829,4835,4836,
  4838,4840,4844,4848,4850,4852,4854,4856,4858,4860,4861,4862,4864,4866,
  4874,4880,4883,4914,4916,4947,4949,4980,4982,4985,4991,4993,5000,5006,
  5008,5010,5017,5019,5025,5066,5107,5109,5111,5152,5193,5200,5231,5262,
  5270,5330,5334,5374,5377,5387,5397,5399,5401,5426,5466,5506,5546,5586,
  5611,5651,5691,5731,5734,5737,5742,5744,5784,5786,5827,5867,5908,5948,
  5989,6029,6031,6071,6111,6114,6117,6148,6179,6182,6185,6225,6266,6307,
  6309,6315,6322,6347,6349,6351,6354,6361,6368,6375,6382,6385,6392,6399,
  6406,6411,6451,6457,6497,6500,6507,6510,6517,6520,6527,6552,6559,6566,
  6607,6648,6655,6658,6661,6686,6688,6697,6706,6746,6748,6752,6761,6767,
  6770,6772,6775,6777,6780,6820,6822,6862,6865,6868,6870,6877,6881,6893,
  6896,6898,6923,6925,6950,6952,6959,6966,6968,7008,7010,7050,7052,7092,
  7094,7134,7137,7144,7151,7158,7183,7190,7192,7194,7196,7236,7238,7278,
  7282,7307,7332,7339,7346,7350,7352,7354,7356,7396,7403,7428,7435,7437,
  7477,7483
};


static const unsigned short ag_sbe[] = {
     2,   6,   9,  11,  48,  86,  99, 147, 165, 170, 172, 174, 176, 179,
   199, 206, 236, 249, 280, 322, 364, 405, 462, 508, 550, 592, 606, 614,
   625, 637, 648, 704, 712, 721, 729, 765, 779, 788, 820, 822, 850, 853,
   855, 857, 859, 861, 863, 865, 867, 869, 871, 873, 875, 877, 879, 881,
   883, 885, 887, 889, 891, 893, 895, 897, 899, 901, 903, 905, 907, 909,
   911, 913, 915, 917, 919, 921, 923, 925, 927, 957, 969, 971, 973, 985,
   993,1041,1104,1123,1128,1130,1160,1191,1204,1209,1214,1246,1267,1277,
  1297,1305,1325,1360,1376,1378,1385,1387,1389,1391,1398,1400,1446,1463,
  1465,1467,1469,1471,1473,1476,1485,1493,1495,1497,1499,1501,1503,1508,
  1514,1518,1525,1575,1592,1615,1650,1662,1670,1673,1675,1678,1683,1704,
  1729,1754,1779,1804,1829,1864,1904,1944,1984,2025,2065,2105,2145,2185,
  2225,2265,2305,2345,2385,2425,2465,2505,2518,2538,2563,2588,2613,2638,
  2663,2688,2723,2763,2793,2818,2843,2852,2882,2913,2917,2951,2991,3031,
  3071,3111,3151,3191,3231,3271,3311,3351,3381,3406,3431,3456,3481,3506,
  3531,3537,3541,3554,3563,3611,3674,3691,3721,3761,3778,3781,3785,3789,
  3820,3833,3836,3882,3899,3906,3936,3976,4006,4031,4067,4108,4138,4174,
  4215,4256,4297,4328,4332,4341,4379,4410,4414,4448,4460,4464,4466,4468,
  4470,4476,4480,4483,4490,4510,4519,4524,4527,4530,4534,4537,4540,4543,
  4546,4549,4556,4563,4570,4577,4584,4591,4598,4605,4612,4619,4626,4634,
  4641,4648,4655,4662,4669,4672,4675,4678,4681,4684,4687,4690,4697,4705,
  4708,4711,4714,4744,4785,4798,4804,4810,4816,4822,4828,4834,4835,4837,
  4839,4843,4847,4849,4851,4853,4855,4857,4859,4860,4861,4863,4865,4872,
  4879,4882,4912,4915,4945,4948,4978,4981,4984,4990,4992,4999,5005,5007,
  5009,5016,5018,5024,5054,5095,5108,5110,5140,5181,5199,5229,5260,5264,
  5315,5332,5363,5376,5380,5390,5398,5400,5420,5455,5495,5535,5575,5605,
  5640,5680,5720,5733,5736,5740,5743,5773,5785,5815,5856,5896,5937,5977,
  6018,6030,6060,6100,6113,6116,6146,6177,6181,6184,6214,6254,6295,6308,
  6314,6321,6341,6348,6350,6353,6360,6367,6374,6381,6384,6391,6398,6405,
  6409,6440,6456,6486,6499,6506,6509,6516,6519,6526,6546,6558,6565,6595,
  6636,6654,6657,6660,6680,6687,6691,6700,6735,6747,6750,6759,6766,6768,
  6771,6773,6776,6778,6809,6821,6851,6864,6867,6869,6876,6879,6885,6894,
  6897,6917,6924,6944,6951,6958,6965,6967,6997,7009,7039,7051,7081,7093,
  7123,7135,7143,7150,7157,7177,7189,7191,7193,7195,7225,7237,7267,7280,
  7301,7326,7338,7345,7348,7351,7353,7355,7385,7399,7422,7434,7436,7466,
  7482,7483
};


static const unsigned char ag_fl[] = {
  1,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,1,2,2,0,0,0,5,0,1,
  1,1,1,2,2,3,3,0,5,0,5,2,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,1,1,3,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,3,3,3,
  3,3,2,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,1,1,0,5,0,7,0,5,0,7,1,3,0,0,0,0,15,1,1,0,2,0,1,0,0,0,9,1,1,3,3,3,2,3,
  3,3,3,3,3,3,3,3,3,3,3,4,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
};

static const unsigned char ag_ptt[] = {
    0,  9, 13, 13,  9,  9, 10, 19, 19, 10, 10, 16, 16, 18, 18, 14, 14, 21,
   21, 24, 25, 27, 28, 28, 29, 29,122,122,123,124,127,128,124,129,129,129,
  129,129,129,129,129,129,137,129,139,129,129,129,129,129,145,129,129,129,
  129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
  129,129,129,129,129,129,129,129,129,129,129,129,129,130,156,130,157,130,
  158,130,159,130,161,162,130,163,164,130,165,166,130,142,142,142,142,168,
  142,142,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,
  131,169,131,136,136,136,171,136,136,136,136,136,136,136,136,152,152,170,
  170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,
  170,170,170,170,170,170,  2,  2,  2,  3,  3,  4,  5,  5,172,151,173,151,
  174,151,175,151,160,160,177,178,179,180,132,181,181,  1,  1,182,182,186,
  187,189,133,190,190,185,185,185,185,185,185,185,185,185,185,185,185,185,
  185,185,185,185,188,188,148,148,191,192,191,191,193,191,149,149,194,195,
  194,194,196,194,150,150,150,150,144,144,144,144,144,147,147,147,199,147,
  201,147,143,143,143,143,143,200,198,197,  6,  6,146,146,138,138,140,140
};

static const unsigned char  *ag_valid(int ag_k) {
  const unsigned char  *ag_tp = &ag_tstt[ag_sbt[(PCB).sn+1]];
  while (*--ag_tp != (unsigned char) ag_k) if (*ag_tp == 0) return NULL;
  return ag_tp;
}

int bug-I158_change_reduction(bug-I158_token_type ag_k) {
  if (!ag_valid(ag_k)) return 0;
  (PCB).reduction_token = ag_k;
  return 1;
}

static void ag_default(const  int *ag_tp) {
  (PCB).ag_dsn = (PCB).sn;
  (PCB).ag_dtl = ag_tp;
  while (!ag_valid((bug-I158_token_type) *ag_tp)) ag_tp++;
  (PCB).reduction_token = (bug-I158_token_type) *ag_tp;
}



static void ag_ra(void)
{
  switch(ag_rpx[(PCB).ag_ap]) {
    case 1: ag_rp_1(V(0,(void *)), V(3,(int *))); break;
    case 2: ag_rp_2(V(0,(void *)), V(3,(int *))); break;
    case 3: ag_rp_3(V(0,(void *)), V(2,(void *))); break;
    case 4: ag_rp_4(V(1,(void *))); break;
    case 5: ag_rp_5(V(0,(int *))); break;
    case 6: ag_rp_6(V(0,(void *)), V(1,(int *))); break;
    case 7: ag_rp_7(V(0,(int *))); break;
    case 8: ag_rp_8(V(0,(int *)), V(1,(void *))); break;
    case 9: V(0,(int *)) = ag_rp_9(V(0,(int *))); break;
    case 10: V(0,(int *)) = ag_rp_10(V(0,(int *)), V(1,(int *))); break;
    case 11: V(0,(int *)) = ag_rp_11(V(0,(int *))); break;
    case 12: V(0,(int *)) = ag_rp_12(V(0,(int *)), V(1,(int *))); break;
    case 13: V(0,(char * *)) = ag_rp_13(V(0,(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,(int *)) = ag_rp_16(V(0,(int *))); break;
    case 17: V(0,(int *)) = ag_rp_17(V(0,(int *)), V(1,(int *))); break;
    case 18: V(0,(char * *)) = ag_rp_18(V(1,(int *))); break;
    case 19: V(0,(char * *)) = ag_rp_19(V(1,(int *))); break;
    case 20: ag_rp_20(); break;
    case 21: ag_rp_21(); break;
    case 22: ag_rp_22(); break;
    case 23: ag_rp_23(); break;
    case 24: ag_rp_24(); break;
    case 25: ag_rp_25(); break;
    case 26: ag_rp_26(); break;
    case 27: ag_rp_27(); break;
    case 28: ag_rp_28(); 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(); break;
    case 36: ag_rp_36(); break;
    case 37: ag_rp_37(); break;
    case 38: ag_rp_38(); break;
    case 39: ag_rp_39(); break;
    case 40: ag_rp_40(); break;
    case 41: ag_rp_41(); 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(); break;
    case 70: ag_rp_70(); break;
    case 71: ag_rp_71(); break;
    case 72: ag_rp_72(); break;
    case 73: ag_rp_73(); break;
    case 74: ag_rp_74(); break;
    case 75: ag_rp_75(); break;
    case 76: ag_rp_76(); break;
    case 77: ag_rp_77(); break;
    case 78: ag_rp_78(); break;
    case 79: ag_rp_79(); break;
    case 80: ag_rp_80(); break;
    case 81: ag_rp_81(); break;
    case 82: ag_rp_82(); break;
    case 83: ag_rp_83(); break;
    case 84: ag_rp_84(); break;
    case 85: ag_rp_85(); break;
    case 86: ag_rp_86(); break;
    case 87: ag_rp_87(); break;
    case 88: ag_rp_88(); break;
    case 89: ag_rp_89(); break;
    case 90: ag_rp_90(); break;
    case 91: ag_rp_91(); 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(); break;
    case 109: ag_rp_109(); break;
    case 110: ag_rp_110(); break;
    case 111: ag_rp_111(); break;
    case 112: ag_rp_112(); break;
    case 113: ag_rp_113(); break;
    case 114: ag_rp_114(); 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: V(0,(double *)) = ag_rp_143(); break;
    case 144: V(0,(double *)) = ag_rp_144(); break;
    case 145: V(0,(double *)) = ag_rp_145(); break;
    case 146: V(0,(double *)) = ag_rp_146(); break;
    case 147: V(0,(double *)) = ag_rp_147(); break;
    case 148: V(0,(int *)) = ag_rp_148(); break;
    case 149: V(0,(char * *)) = ag_rp_149(); break;
    case 150: V(0,(char * *)) = ag_rp_150(); break;
    case 151: ag_rp_151(); break;
    case 152: ag_rp_152(); break;
    case 153: ag_rp_153(); break;
    case 154: ag_rp_154(); break;
    case 155: ag_rp_155(); break;
    case 156: ag_rp_156(); break;
    case 157: ag_rp_157(); break;
    case 158: ag_rp_158(); break;
    case 159: ag_rp_159(); break;
    case 160: ag_rp_160(); break;
    case 161: ag_rp_161(); break;
    case 162: ag_rp_162(); break;
    case 163: ag_rp_163(); break;
    case 164: ag_rp_164(); break;
    case 165: ag_rp_165(); break;
    case 166: V(0,(double *)) = ag_rp_166(); break;
    case 167: V(0,(double *)) = ag_rp_167(); break;
    case 168: ag_rp_168(); break;
    case 169: ag_rp_169(); break;
    case 170: ag_rp_170(); break;
    case 171: ag_rp_171(); 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(); break;
    case 191: ag_rp_191(); break;
    case 192: ag_rp_192(); break;
    case 193: ag_rp_193(); break;
    case 194: ag_rp_194(); break;
    case 195: ag_rp_195(); break;
    case 196: ag_rp_196(); break;
    case 197: ag_rp_197(); break;
    case 198: ag_rp_198(); break;
    case 199: ag_rp_199(); break;
    case 200: ag_rp_200(); break;
    case 201: ag_rp_201(); break;
    case 202: ag_rp_202(); break;
    case 203: ag_rp_203(); break;
    case 204: ag_rp_204(); break;
    case 205: ag_rp_205(); 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(); break;
    case 219: ag_rp_219(); break;
    case 220: ag_rp_220(); break;
    case 221: V(0,(int *)) = ag_rp_221(); break;
    case 222: V(0,(int *)) = ag_rp_222(); break;
    case 223: ag_rp_223(); break;
    case 224: ag_rp_224(); break;
    case 225: ag_rp_225(); break;
    case 226: ag_rp_226(); break;
    case 227: ag_rp_227(); break;
  }
}

#define TOKEN_NAMES bug-I158_token_names
const char *const bug-I158_token_names[205] = {
  "program",
  "step_part",
  "const",
  "number",
  "intnum",
  "symbol_or_lineno",
  "hashed_number",
  "SEP",
  "EOFILE",
  "FNUM",
  "simple real",
  "",
  "'+'",
  "",
  "exponent",
  "'-'",
  "integer part",
  "'.'",
  "fraction part",
  "",
  "digit",
  "name",
  "letter",
  "",
  "SYMBOL",
  "STRSYM",
  "'$'",
  "DIGITS",
  "digit string",
  "STRING",
  "'\\\"'",
  "string text",
  "'\\n'",
  "GOSUB",
  "LABEL",
  "ON",
  "INTERRUPT",
  "BREAK",
  "CONTINUE",
  "IF",
  "THEN",
  "ELSE",
  "ENDIF",
  "PRINT",
  "INPUT",
  "LINE",
  "RETURN",
  "DIM",
  "END",
  "AT",
  "SCREEN",
  "REVERSE",
  "AND",
  "OR",
  "NOT",
  "NE",
  "LE",
  "GE",
  "LT",
  "GT",
  "EQ",
  "READ",
  "DATA",
  "RESTORE",
  "OPEN",
  "CLOSE",
  "WINDOW",
  "DOT",
  "CIRCLE",
  "TEXT",
  "CLEAR",
  "PRINTER",
  "WAIT",
  "BELL",
  "MAP",
  "XMAP",
  "YMAP",
  "ARROW",
  "XTICK",
  "YTICK",
  "SIN",
  "ASIN",
  "COS",
  "ACOS",
  "TAN",
  "ATAN",
  "EXP",
  "LOG",
  "SQRT",
  "MYEOF",
  "INT",
  "FRAC",
  "MOD",
  "RAN",
  "LEN",
  "VAL",
  "LEFT",
  "RIGHT",
  "MID",
  "MIN",
  "MAX",
  "STR",
  "INKEY",
  "CHR",
  "ASC",
  "UPPER",
  "LOWER",
  "TRIM",
  "LTRIM",
  "RTRIM",
  "INSTR",
  "SYSTEM",
  "SYSTEM2",
  "PEEK",
  "PEEK2",
  "POKE",
  "DATE",
  "TIME",
  "'*'",
  "'/'",
  "'^'",
  "UMINUS",
  "NAME",
  "program",
  "statement list",
  "eof",
  "statement_list",
  "",
  "",
  "statement",
  "string_assignment",
  "assignment",
  "for_loop",
  "if_clause",
  "\"GOTO\"",
  "\"GOSUB\"",
  "expression",
  "",
  "goto_list",
  "",
  "gosub_list",
  "','",
  "string_expression",
  "printintro",
  "printlist",
  "",
  "semicolon",
  "inputintro",
  "inputlist",
  "readlist",
  "datalist",
  "dimlist",
  "mapping",
  "\"TO\"",
  "'('",
  "')'",
  "",
  "",
  "",
  "",
  "indexlist",
  "",
  "",
  "",
  "",
  "",
  "",
  "string_function",
  "",
  "",
  "function",
  "",
  "",
  "",
  "",
  "",
  "\"FOR\"",
  "",
  "",
  "",
  "",
  "next_or_eofile",
  "next_symbol",
  "\"NEXT\"",
  "\"STEP\"",
  "condition",
  "",
  "",
  "else_part",
  "",
  "endif_or_eof",
  "input",
  "",
  "",
  "readitem",
  "",
  "",
  "stream",
  "position",
  "",
  "prompt",
  "",
  "'#'",
  "';'",
  "",

};

#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 = (bug-I158_token_type) AG_TCV((PCB).input_code);}
    else {
      GET_INPUT;
      (PCB).lab[(PCB).fx++] = (PCB).input_code;
      (PCB).token_number = (bug-I158_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 == (bug-I158_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 = (bug-I158_token_type) AG_TCV((PCB).input_code);}
    else {
      GET_INPUT;
      (PCB).lab[(PCB).fx++] = (PCB).input_code;
      (PCB).token_number = (bug-I158_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 == (bug-I158_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 = (bug-I158_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 = (bug-I158_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 = (bug-I158_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 = (bug-I158_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 char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
      else ag_t2 = ag_tx;
    } while (ag_t1 < ag_t2);
    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
      REDUCTION_TOKEN_ERROR; break;}
      (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 = (bug-I158_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 char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
      else ag_t2 = ag_tx;
    } while (ag_t1 < ag_t2);
    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
      REDUCTION_TOKEN_ERROR; break;}
      (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 = (bug-I158_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 char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
      else ag_t2 = ag_tx;
    } while (ag_t1 < ag_t2);
    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
      REDUCTION_TOKEN_ERROR; break;}
      (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 = (bug-I158_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 char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
      else ag_t2 = ag_tx;
    } while (ag_t1 < ag_t2);
    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
      REDUCTION_TOKEN_ERROR; break;}
      (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_bug-I158(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 bug-I158(void) {
  init_bug-I158();
  (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 = (bug-I158_token_type) AG_TCV((PCB).input_code);}
      else {
        GET_INPUT;
        (PCB).lab[(PCB).fx++] = (PCB).input_code;
        (PCB).token_number = (bug-I158_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 char)(PCB).token_number)
          ag_t1 = ag_tx + 1;
        else ag_t2 = ag_tx;
      } while (ag_t1 < ag_t2);
      if (ag_tstt[ag_t1] != (unsigned char)(PCB).token_number)
        ag_t1 = ag_sbe[(PCB).sn];
    }
    (PCB).ag_ap = ag_pstt[ag_t1];
    (ag_gt_procs_scan[ag_astt[ag_t1]])();
  }
}