view tests/agcl/contrib/good/yabasic.c @ 22:5581ef01f993

Regen all the AG output. This also fixes the line number output in the tools (cgbigen/helpgen/help2html), apparently because those files weren't regenerated last go.
author David A. Holland
date Mon, 13 Jun 2022 00:06:39 -0400
parents 13d2b8934445
children
line wrap: on
line source

/*
     YABASIC --- a tiny integrated Basic Compiler/Interpreter

     BISON - part

     this Program is subject to the GNU General Public License;
     see the file yabasic.c for details.
*/


//#undef WINDOWS
#include "yabasic.h"     /* definitions of yabasic */
#include <malloc.h>

#if HAVE_ALLOCA_H
#include <alloca.h>
#endif

void __yy_bcopy(char *,char *,int); /* prototype missing */

int yylineno=1;
int yylex(void);

char *popString(int);
void pushChar(int);


/*
 * AnaGram, A System for Syntax Directed Programming
 * File generated by: ...
 *
 * AnaGram Parsing Engine
 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
 *
 * This software is provided 'as-is', without any express or implied
 * warranty.  In no event will the authors be held liable for any damages
 * arising from the use of this software.
 *
 * Permission is granted to anyone to use this software for any purpose,
 * including commercial applications, and to alter it and redistribute it
 * freely, subject to the following restrictions:
 *
 * 1. The origin of this software must not be misrepresented; you must not
 *    claim that you wrote the original software. If you use this software
 *    in a product, an acknowledgment in the product documentation would be
 *    appreciated but is not required.
 * 2. Altered source versions must be plainly marked as such, and must not be
 *    misrepresented as being the original software.
 * 3. This notice may not be removed or altered from any source distribution.
 */

#ifndef YABASIC_H
#include "yabasic.h"
#endif

#ifndef YABASIC_H
#error Mismatched header file
#endif

#include <ctype.h>
#include <stdio.h>

#define RULE_CONTEXT (&((PCB).cs[(PCB).ssx]))
#define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx])
#define CONTEXT ((PCB).cs[(PCB).ssx])



parseBasic_pcb_type parseBasic_pcb;
#define PCB parseBasic_pcb

#line - "yabasic.syn"
#define CHAR_STACK_LENGTH 500

static char  charStack[CHAR_STACK_LENGTH+1];
static char *charStackTop = charStack;

/* Define an error record */
typedef struct {
  char *message;                 /* identifies error */
  int line;                      /* location of error */
  int column;
} ErrorRecord;

ErrorRecord errorRecord;           /* define an error record */

void diagnoseError(char *msg) {
  if (parseBasic_pcb.exit_flag == AG_RUNNING_CODE)
    parseBasic_pcb.exit_flag = AG_SEMANTIC_ERROR_CODE;      /* stop parse */
  errorRecord.message = msg;
  errorRecord.line    = parseBasic_pcb.line;
  errorRecord.column  = parseBasic_pcb.column;
}

void pushChar(int c) {              /* append char to name string */
  if (charStackTop < charStack+CHAR_STACK_LENGTH) {
    *charStackTop++ = (char) c;
    return;
  }
  /* buffer overflow, kill parse and issue diagnostic */
  diagnoseError("Character Stack Overflow");
}

static char *popString(int nChars) {                /* get string */
  *charStackTop = 0;
  return charStackTop -= nChars;
}

FILE *parserInputFile;
void switch_to_my_file(FILE *inputfile) /* switches lex input to given file */
{
  parserInputFile = inputfile;
  return;
}

#define GET_INPUT ((PCB).input_code = fgetc(parserInputFile))

int yyparse() {
  parseBasic();
  return !(PCB.exit_flag == AG_SUCCESS_CODE);
}


#line - "yabasic.c"

#ifndef CONVERT_CASE

static const char agCaseTable[31] = {
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,    0,
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
};

static int agConvertCase(int c) {
  if (c >= 'a' && c <= 'z') return c ^= 0x20;
  if (c >= 0xe0 && c < 0xff) c ^= agCaseTable[c-0xe0];
  return c;
}

#define CONVERT_CASE(c) agConvertCase(c)

#endif


#ifndef TAB_SPACING
#define TAB_SPACING 8
#endif

static void ag_rp_1(void) {
#line - "yabasic.syn"
     yylineno++;
     if (interactive) PCB.exit_flag = AG_SUCCESS_CODE;
     return;
 
#line - "yabasic.c"
}

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

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

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

#define ag_rp_5(f) (f)

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

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

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

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

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

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

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

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

#define ag_rp_14(k) (strdup(popString(k)))

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

#define ag_rp_16(k) (strdup(popString(k)))

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

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

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

#define ag_rp_20(k) (strdup(popString(k)))

#define ag_rp_21() (0)

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

#define ag_rp_23(k) (pushChar('"'), k+1)

#define ag_rp_24() (end_of_file = TRUE)

#define ag_rp_25(s) (create_label(s))

#define ag_rp_26(s) (create_label(s))

static void ag_rp_27(char * s) {
#line - "yabasic.syn"
create_goto(s);
#line - "yabasic.c"
}

static void ag_rp_28(char * s) {
#line - "yabasic.syn"
create_gosub(s);
#line - "yabasic.c"
}

static void ag_rp_29(void) {
#line - "yabasic.syn"
create_exception(TRUE);
#line - "yabasic.c"
}

static void ag_rp_30(void) {
#line - "yabasic.syn"
create_exception(FALSE);
#line - "yabasic.c"
}

static void ag_rp_31(void) {
#line - "yabasic.syn"
create_skipper();
#line - "yabasic.c"
}

static void ag_rp_32(void) {
#line - "yabasic.syn"
create_nop();
#line - "yabasic.c"
}

static void ag_rp_33(void) {
#line - "yabasic.syn"
create_skipper();
#line - "yabasic.c"
}

static void ag_rp_34(void) {
#line - "yabasic.syn"
create_nop();
#line - "yabasic.c"
}

static void ag_rp_35(int n) {
#line - "yabasic.syn"
create_myopen(n,'+');
#line - "yabasic.c"
}

static void ag_rp_36(int n) {
#line - "yabasic.syn"
create_myopen(n,'-');
#line - "yabasic.c"
}

static void ag_rp_37(int n) {
#line - "yabasic.syn"
create_myclose(n);
#line - "yabasic.c"
}

static void ag_rp_38(void) {
#line - "yabasic.syn"
create_revert(FALSE);
#line - "yabasic.c"
}

#define ag_rp_39() (lastinput->args=0)

#define ag_rp_40() (create_restore(""))

#define ag_rp_41(s) (create_restore(s))

static void ag_rp_42(void) {
#line - "yabasic.syn"
create_return();
#line - "yabasic.c"
}

#define ag_rp_43() (create_openwin(FALSE))

static void ag_rp_44(void) {
#line - "yabasic.syn"
create_openwin(TRUE);
#line - "yabasic.c"
}

#define ag_rp_45() (create_dot())

#define ag_rp_46() (create_line('l'))

#define ag_rp_47() (create_circle())

#define ag_rp_48() (create_text(TRUE))

#define ag_rp_49() (create_text(FALSE))

#define ag_rp_50() (create_makemap())

#define ag_rp_51() (create_line('a'))

#define ag_rp_52() (create_tick(1))

#define ag_rp_53() (create_tick(3))

#define ag_rp_54() (create_tick(0))

#define ag_rp_55() (create_tick(2))

#define ag_rp_56() (create_closewin())

#define ag_rp_57() (create_clearwin())

#define ag_rp_58() (create_clearscreen())

#define ag_rp_59() (create_openprinter(0))

#define ag_rp_60() (create_openprinter(1))

#define ag_rp_61() (create_closeprinter())

#define ag_rp_62() (create_mywait())

#define ag_rp_63() (create_bell())

static void ag_rp_64(void) {
#line - "yabasic.syn"
create_function(MYINKEY); create_popstrsym(NULL);
#line - "yabasic.c"
}

static void ag_rp_65(void) {
#line - "yabasic.syn"
create_function(MYSYSTEM2);
	create_popdblsym(NULL);
#line - "yabasic.c"
}

static void ag_rp_66(void) {
#line - "yabasic.syn"
create_poke('s');
#line - "yabasic.c"
}

static void ag_rp_67(void) {
#line - "yabasic.syn"
create_poke('d');
#line - "yabasic.c"
}

static void ag_rp_68(void) {
#line - "yabasic.syn"
create_myend();
#line - "yabasic.c"
}

static void ag_rp_69(char * s) {
#line - "yabasic.syn"
create_popstrsym(s);
#line - "yabasic.c"
}

static void ag_rp_70(char * s) {
#line - "yabasic.syn"
create_pushstrptr(s);
#line - "yabasic.c"
}

static void ag_rp_71(char * s) {
#line - "yabasic.syn"
create_changestring(MYMID);
#line - "yabasic.c"
}

static void ag_rp_72(char * s) {
#line - "yabasic.syn"
create_pushstrptr(s);
#line - "yabasic.c"
}

static void ag_rp_73(char * s) {
#line - "yabasic.syn"
create_changestring(MYLEFT);
#line - "yabasic.c"
}

static void ag_rp_74(char * s) {
#line - "yabasic.syn"
create_pushstrptr(s);
#line - "yabasic.c"
}

static void ag_rp_75(char * s) {
#line - "yabasic.syn"
create_changestring(MYRIGHT);
#line - "yabasic.c"
}

static void ag_rp_76(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_77(char * s) {
#line - "yabasic.syn"
create_doarray(s,ASSIGNSTRINGARRAY);
#line - "yabasic.c"
}

static void ag_rp_78(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_79(char * s) {
#line - "yabasic.syn"
create_doarray(s,GETSTRINGPOINTER);
#line - "yabasic.c"
}

static void ag_rp_80(char * s) {
#line - "yabasic.syn"
create_changestring(MYMID);
#line - "yabasic.c"
}

static void ag_rp_81(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_82(char * s) {
#line - "yabasic.syn"
create_doarray(s,GETSTRINGPOINTER);
#line - "yabasic.c"
}

static void ag_rp_83(char * s) {
#line - "yabasic.syn"
create_changestring(MYLEFT);
#line - "yabasic.c"
}

static void ag_rp_84(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_85(char * s) {
#line - "yabasic.syn"
create_doarray(s,GETSTRINGPOINTER);
#line - "yabasic.c"
}

static void ag_rp_86(char * s) {
#line - "yabasic.syn"
create_changestring(MYRIGHT);
#line - "yabasic.c"
}

static void ag_rp_87(void) {
#line - "yabasic.syn"
create_concat();
#line - "yabasic.c"
}

static void ag_rp_88(char * s) {
#line - "yabasic.syn"
create_pushstrsym(s);
#line - "yabasic.c"
}

static void ag_rp_89(char * s) {
#line - "yabasic.syn"
if (s==NULL) {error(ERROR,"String not terminated");create_pushstr("");} else {create_pushstr(s);}
#line - "yabasic.c"
}

static void ag_rp_90(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_91(char * s) {
#line - "yabasic.syn"
create_doarray(s,CALLSTRINGARRAY);
#line - "yabasic.c"
}

static void ag_rp_92(void) {
#line - "yabasic.syn"
create_function(MYLEFT);
#line - "yabasic.c"
}

static void ag_rp_93(void) {
#line - "yabasic.syn"
create_function(MYRIGHT);
#line - "yabasic.c"
}

static void ag_rp_94(void) {
#line - "yabasic.syn"
create_function(MYMID);
#line - "yabasic.c"
}

static void ag_rp_95(void) {
#line - "yabasic.syn"
create_function(MYSTR);
#line - "yabasic.c"
}

static void ag_rp_96(void) {
#line - "yabasic.syn"
create_function(MYSTR2);
#line - "yabasic.c"
}

static void ag_rp_97(void) {
#line - "yabasic.syn"
create_function(MYINKEY);
#line - "yabasic.c"
}

static void ag_rp_98(void) {
#line - "yabasic.syn"
create_function(MYCHR);
#line - "yabasic.c"
}

static void ag_rp_99(void) {
#line - "yabasic.syn"
create_function(MYUPPER);
#line - "yabasic.c"
}

static void ag_rp_100(void) {
#line - "yabasic.syn"
create_function(MYLOWER);
#line - "yabasic.c"
}

static void ag_rp_101(void) {
#line - "yabasic.syn"
create_function(MYLTRIM);
#line - "yabasic.c"
}

static void ag_rp_102(void) {
#line - "yabasic.syn"
create_function(MYRTRIM);
#line - "yabasic.c"
}

static void ag_rp_103(void) {
#line - "yabasic.syn"
create_function(MYTRIM);
#line - "yabasic.c"
}

static void ag_rp_104(void) {
#line - "yabasic.syn"
create_function(MYSYSTEM);
#line - "yabasic.c"
}

static void ag_rp_105(void) {
#line - "yabasic.syn"
create_function(MYDATE);
#line - "yabasic.c"
}

static void ag_rp_106(void) {
#line - "yabasic.syn"
create_function(MYTIME);
#line - "yabasic.c"
}

static void ag_rp_107(void) {
#line - "yabasic.syn"
create_function(MYPEEK2);
#line - "yabasic.c"
}

static void ag_rp_108(char * s) {
#line - "yabasic.syn"
create_popdblsym(s);
#line - "yabasic.c"
}

static void ag_rp_109(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_110(char * s) {
#line - "yabasic.syn"
create_doarray(s,ASSIGNARRAY);
#line - "yabasic.c"
}

#define ag_rp_111(n) (create_pushdbl(n))

#define ag_rp_112(s) (create_pushdblsym(s))

#define ag_rp_113(s) (pushcounter())

static void ag_rp_114(char * s) {
#line - "yabasic.syn"
create_doarray(s,CALLARRAY);
#line - "yabasic.c"
}

static void ag_rp_115(void) {
#line - "yabasic.syn"
create_negate();
#line - "yabasic.c"
}

static void ag_rp_116(void) {
#line - "yabasic.syn"
create_dblbin('^');
#line - "yabasic.c"
}

static void ag_rp_117(void) {
#line - "yabasic.syn"
create_dblbin('*');
#line - "yabasic.c"
}

static void ag_rp_118(void) {
#line - "yabasic.syn"
create_dblbin('/');
#line - "yabasic.c"
}

static void ag_rp_119(void) {
#line - "yabasic.syn"
create_dblbin('+');
#line - "yabasic.c"
}

static void ag_rp_120(void) {
#line - "yabasic.syn"
create_dblbin('-');
#line - "yabasic.c"
}

static void ag_rp_121(void) {
#line - "yabasic.syn"
create_map();
#line - "yabasic.c"
}

static void ag_rp_122(void) {
#line - "yabasic.syn"
create_function(MYSIN);
#line - "yabasic.c"
}

static void ag_rp_123(void) {
#line - "yabasic.syn"
create_function(MYASIN);
#line - "yabasic.c"
}

static void ag_rp_124(void) {
#line - "yabasic.syn"
create_function(MYCOS);
#line - "yabasic.c"
}

static void ag_rp_125(void) {
#line - "yabasic.syn"
create_function(MYACOS);
#line - "yabasic.c"
}

static void ag_rp_126(void) {
#line - "yabasic.syn"
create_function(MYTAN);
#line - "yabasic.c"
}

static void ag_rp_127(void) {
#line - "yabasic.syn"
create_function(MYATAN);
#line - "yabasic.c"
}

static void ag_rp_128(void) {
#line - "yabasic.syn"
create_function(MYATAN2);
#line - "yabasic.c"
}

static void ag_rp_129(void) {
#line - "yabasic.syn"
create_function(MYEXP);
#line - "yabasic.c"
}

static void ag_rp_130(void) {
#line - "yabasic.syn"
create_function(MYLOG);
#line - "yabasic.c"
}

static void ag_rp_131(void) {
#line - "yabasic.syn"
create_function(MYSQRT);
#line - "yabasic.c"
}

static void ag_rp_132(void) {
#line - "yabasic.syn"
create_function(MYINT);
#line - "yabasic.c"
}

static void ag_rp_133(void) {
#line - "yabasic.syn"
create_function(MYFRAC);
#line - "yabasic.c"
}

static void ag_rp_134(void) {
#line - "yabasic.syn"
create_function(MYMOD);
#line - "yabasic.c"
}

static void ag_rp_135(void) {
#line - "yabasic.syn"
create_function(MYRAN);
#line - "yabasic.c"
}

static void ag_rp_136(void) {
#line - "yabasic.syn"
create_function(MYRAN2);
#line - "yabasic.c"
}

static void ag_rp_137(void) {
#line - "yabasic.syn"
create_function(MYMIN);
#line - "yabasic.c"
}

static void ag_rp_138(void) {
#line - "yabasic.syn"
create_function(MYMAX);
#line - "yabasic.c"
}

static void ag_rp_139(void) {
#line - "yabasic.syn"
create_function(MYXMAP);
#line - "yabasic.c"
}

static void ag_rp_140(void) {
#line - "yabasic.syn"
create_function(MYYMAP);
#line - "yabasic.c"
}

static void ag_rp_141(void) {
#line - "yabasic.syn"
create_function(MYLEN);
#line - "yabasic.c"
}

static void ag_rp_142(void) {
#line - "yabasic.syn"
create_function(MYVAL);
#line - "yabasic.c"
}

static void ag_rp_143(void) {
#line - "yabasic.syn"
create_function(MYASC);
#line - "yabasic.c"
}

static void ag_rp_144(void) {
#line - "yabasic.syn"
create_function(MYINSTR);
#line - "yabasic.c"
}

static void ag_rp_145(void) {
#line - "yabasic.syn"
create_function(MYSYSTEM2);
#line - "yabasic.c"
}

static void ag_rp_146(void) {
#line - "yabasic.syn"
create_function(MYPEEK);
#line - "yabasic.c"
}

#define ag_rp_147(n) (n)

#define ag_rp_148(n) (n)

#define ag_rp_149(n) (-n)

#define ag_rp_150(d) (atoi(d))

#define ag_rp_151(s) (s)

#define ag_rp_152(s) (s)

static void ag_rp_153(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_154(char * s) {
#line - "yabasic.syn"
create_dim(s,'d');
#line - "yabasic.c"
}

static void ag_rp_155(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_156(char * s) {
#line - "yabasic.syn"
create_dim(s,'d');
#line - "yabasic.c"
}

static void ag_rp_157(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_158(char * s) {
#line - "yabasic.syn"
create_dim(s,'s');
#line - "yabasic.c"
}

static void ag_rp_159(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_160(char * s) {
#line - "yabasic.syn"
create_dim(s,'s');
#line - "yabasic.c"
}

static void ag_rp_161(void) {
#line - "yabasic.syn"
inccounter();
#line - "yabasic.c"
}

static void ag_rp_162(void) {
#line - "yabasic.syn"
inccounter();
#line - "yabasic.c"
}

static void ag_rp_163(char * s) {
#line - "yabasic.syn"
pushname(s);create_popdblsym(s);pushgoto();
             create_pushdblsym(s);
#line - "yabasic.c"
}

static void ag_rp_164(char * s, double p) {
#line - "yabasic.syn"
       create_dblrelop((p>0)?'{':'}');
             create_decide();
             pushlabel();
#line - "yabasic.c"
}

static void ag_rp_165(char * s, double p) {
#line - "yabasic.syn"
             create_pushdbl(p);
       create_pushdblsym(s);
             create_dblbin('+');
       create_popdblsym(s);
             swap();popgoto();poplabel();
#line - "yabasic.c"
}

static void ag_rp_166(char * s, double p) {
#line - "yabasic.syn"
/* cookie*/
#line - "yabasic.c"
}

static void ag_rp_167(void) {
#line - "yabasic.syn"
end_of_file=TRUE;
      error(ERROR,"'next'-statement is missing"); PCB.exit_flag = AG_SYNTAX_ERROR_CODE;
#line - "yabasic.c"
}

#define ag_rp_168() (1.0)

#define ag_rp_169(v) (v)

static void ag_rp_170(void) {
#line - "yabasic.syn"
pop();
#line - "yabasic.c"
}

static void ag_rp_171(char * s) {
#line - "yabasic.syn"
if (strcmp(pop()->pointer,s))
             {error(ERROR,"'for' and 'next' do not match"); PCB.exit_flag = AG_SYNTAX_ERROR_CODE;}
           
#line - "yabasic.c"
}

static void ag_rp_172(void) {
#line - "yabasic.syn"
create_decide();pushlabel();
#line - "yabasic.c"
}

static void ag_rp_173(void) {
#line - "yabasic.syn"
pushlabel();swap();poplabel();
#line - "yabasic.c"
}

static void ag_rp_174(void) {
#line - "yabasic.syn"
poplabel();
#line - "yabasic.c"
}

static void ag_rp_175(void) {
#line - "yabasic.syn"
end_of_file=TRUE;
            error(ERROR,"'endif'-statement is missing"); PCB.exit_flag = AG_SYNTAX_ERROR_CODE;
#line - "yabasic.c"
}

static void ag_rp_176(void) {
#line - "yabasic.syn"
create_boole('|');
#line - "yabasic.c"
}

static void ag_rp_177(void) {
#line - "yabasic.syn"
create_boole('&');
#line - "yabasic.c"
}

static void ag_rp_178(void) {
#line - "yabasic.syn"
create_strrelop('=');
#line - "yabasic.c"
}

static void ag_rp_179(void) {
#line - "yabasic.syn"
create_strrelop('!');
#line - "yabasic.c"
}

static void ag_rp_180(void) {
#line - "yabasic.syn"
create_strrelop('<');
#line - "yabasic.c"
}

static void ag_rp_181(void) {
#line - "yabasic.syn"
create_strrelop('{');
#line - "yabasic.c"
}

static void ag_rp_182(void) {
#line - "yabasic.syn"
create_strrelop('>');
#line - "yabasic.c"
}

static void ag_rp_183(void) {
#line - "yabasic.syn"
create_strrelop('}');
#line - "yabasic.c"
}

static void ag_rp_184(void) {
#line - "yabasic.syn"
create_dblrelop('=');
#line - "yabasic.c"
}

static void ag_rp_185(void) {
#line - "yabasic.syn"
create_dblrelop('!');
#line - "yabasic.c"
}

static void ag_rp_186(void) {
#line - "yabasic.syn"
create_dblrelop('<');
#line - "yabasic.c"
}

static void ag_rp_187(void) {
#line - "yabasic.syn"
create_dblrelop('{');
#line - "yabasic.c"
}

static void ag_rp_188(void) {
#line - "yabasic.syn"
create_dblrelop('>');
#line - "yabasic.c"
}

static void ag_rp_189(void) {
#line - "yabasic.syn"
create_dblrelop('}');
#line - "yabasic.c"
}

static void ag_rp_190(char * s) {
#line - "yabasic.syn"
create_myread('d');create_popdblsym(s);
#line - "yabasic.c"
}

static void ag_rp_191(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_192(char * s) {
#line - "yabasic.syn"
create_myread('d');create_doarray(s,ASSIGNARRAY);
#line - "yabasic.c"
}

static void ag_rp_193(char * s) {
#line - "yabasic.syn"
create_myread('s');create_popstrsym(s);
#line - "yabasic.c"
}

static void ag_rp_194(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_195(char * s) {
#line - "yabasic.syn"
create_myread('s');create_doarray(s,ASSIGNSTRINGARRAY);
#line - "yabasic.c"
}

static void ag_rp_196(char * s) {
#line - "yabasic.syn"
create_readdata('d');create_popdblsym(s);
#line - "yabasic.c"
}

static void ag_rp_197(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_198(char * s) {
#line - "yabasic.syn"
create_readdata('d');create_doarray(s,ASSIGNARRAY);
#line - "yabasic.c"
}

static void ag_rp_199(char * s) {
#line - "yabasic.syn"
create_readdata('s');create_popstrsym(s);
#line - "yabasic.c"
}

static void ag_rp_200(char * s) {
#line - "yabasic.syn"
pushcounter();
#line - "yabasic.c"
}

static void ag_rp_201(char * s) {
#line - "yabasic.syn"
create_readdata('s');create_doarray(s,ASSIGNSTRINGARRAY);
#line - "yabasic.c"
}

static void ag_rp_202(char * s) {
#line - "yabasic.syn"
create_strdata(s);
#line - "yabasic.c"
}

static void ag_rp_203(double v) {
#line - "yabasic.syn"
create_dbldata(v);
#line - "yabasic.c"
}

static void ag_rp_204(char * s) {
#line - "yabasic.syn"
create_strdata(s);
#line - "yabasic.c"
}

static void ag_rp_205(double v) {
#line - "yabasic.syn"
create_dbldata(v);
#line - "yabasic.c"
}

static void ag_rp_206(void) {
#line - "yabasic.syn"
create_print('d');
#line - "yabasic.c"
}

static void ag_rp_207(void) {
#line - "yabasic.syn"
create_print('d');
#line - "yabasic.c"
}

static void ag_rp_208(void) {
#line - "yabasic.syn"
create_print('s');
#line - "yabasic.c"
}

static void ag_rp_209(void) {
#line - "yabasic.syn"
create_print('s');
#line - "yabasic.c"
}

static void ag_rp_210(void) {
#line - "yabasic.syn"
create_myswitch(0);create_readline(NULL);
#line - "yabasic.c"
}

static void ag_rp_211(void) {
#line - "yabasic.syn"
create_myswitch(0);create_readline(NULL);
#line - "yabasic.c"
}

static void ag_rp_212(void) {
#line - "yabasic.syn"
create_myswitch(0);
#line - "yabasic.c"
}

static void ag_rp_213(void) {
#line - "yabasic.syn"
create_myswitch(0);
#line - "yabasic.c"
}

static void ag_rp_214(void) {
#line - "yabasic.syn"
create_myswitch(0);
#line - "yabasic.c"
}

static void ag_rp_215(void) {
#line - "yabasic.syn"
create_revert(TRUE);create_myswitch(0);
#line - "yabasic.c"
}

static void ag_rp_216(void) {
#line - "yabasic.syn"
create_myswitch(0);
#line - "yabasic.c"
}

static void ag_rp_217(void) {
#line - "yabasic.syn"
create_revert(TRUE);create_myswitch(0);
#line - "yabasic.c"
}

static void ag_rp_218(char * s) {
#line - "yabasic.syn"
create_readline(s);
#line - "yabasic.c"
}

static void ag_rp_219(void) {
#line - "yabasic.syn"
create_mymove();
#line - "yabasic.c"
}

static void ag_rp_220(int n) {
#line - "yabasic.syn"
create_myswitch(n);
#line - "yabasic.c"
}

#define ag_rp_221(n) (n)

#define ag_rp_222(n) (n)

static void ag_rp_223(void) {
#line - "yabasic.syn"
create_print('n');
#line - "yabasic.c"
}

static void ag_rp_224(char * s) {
#line - "yabasic.syn"
create_goto(s);create_findnop();
#line - "yabasic.c"
}

static void ag_rp_225(char * s) {
#line - "yabasic.syn"
create_goto(s);create_findnop();
#line - "yabasic.c"
}

static void ag_rp_226(char * s) {
#line - "yabasic.syn"
create_gosub(s);create_findnop();
#line - "yabasic.c"
}

static void ag_rp_227(char * s) {
#line - "yabasic.syn"
create_gosub(s);create_findnop();
#line - "yabasic.c"
}


#define READ_COUNTS 
#define WRITE_COUNTS 
#undef V
#define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i]))
#undef VS
#define VS(i) (PCB).vs[(PCB).ssx + i]

#ifndef GET_CONTEXT
#define GET_CONTEXT CONTEXT = (PCB).input_context
#endif

typedef enum {
  ag_action_1,
  ag_action_2,
  ag_action_3,
  ag_action_4,
  ag_action_5,
  ag_action_6,
  ag_action_7,
  ag_action_8,
  ag_action_9,
  ag_action_10,
  ag_action_11,
  ag_action_12
} ag_parser_action;


#ifndef NULL_VALUE_INITIALIZER
#define NULL_VALUE_INITIALIZER = { 0 }
#endif

static parseBasic_vs_type const ag_null_value NULL_VALUE_INITIALIZER;

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

static const unsigned char ag_key_itt[] = {
 0
};

static const unsigned short ag_key_pt[] = {
0
};

static const unsigned char ag_key_ch[] = {
    0, 82,255, 61, 62,255, 67, 73,255, 65,255, 67, 78, 82, 83, 84,255, 69,
   82,255, 69, 79,255, 78, 83,255, 72, 73, 76, 79,255, 65, 69,255, 84,255,
   65, 73, 79,255, 73,255, 68,255, 76, 78, 88,255, 79, 82,255, 83, 84,255,
   79,255, 69,255, 75, 80, 83, 84,255, 70, 78,255, 70, 78,255, 71, 87,255,
   65, 69, 73, 79, 84,255, 80, 88,255, 68, 78,255, 65, 73, 79,255, 69, 79,
  255, 78, 80, 82,255, 50,255, 75,255, 69,255, 69,255, 84,255, 78,255, 73,
  255, 69, 79, 82,255, 65, 77, 83, 84, 86,255, 65, 69, 73, 84,255, 69, 82,
  255, 50,255, 77,255, 69,255, 84,255, 83,255, 67, 73, 81, 84, 89,255, 65,
   69, 72, 73, 79, 82,255, 65, 73,255, 77, 84,255, 77, 84,255, 60, 62, 65,
   66, 67, 68, 69, 70, 71, 73, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87,
   88, 89,255, 69, 79,255, 73, 76,255, 65, 73, 79,255, 73,255, 68,255, 76,
   78,255, 83, 84,255, 79,255, 75, 80,255, 70, 78,255, 65, 69, 73,255, 65,
   73,255, 78, 80,255, 79, 82,255, 65, 77, 83, 84,255, 69, 73,255, 65, 66,
   67, 68, 69, 70, 71, 73, 76, 77, 78, 79, 80, 82, 83, 84, 87, 88, 89,255,
   67, 73,255, 67, 83, 84,255, 83, 84,255, 78,255, 69, 79,255, 65, 73, 79,
  255, 73, 81, 89,255, 65, 67, 69, 70, 73, 76, 77, 80, 82, 83, 84, 86, 88,
   89,255, 67, 73,255, 67, 83, 84,255, 72, 79,255, 75, 83, 84,255, 78,255,
   70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73, 79,255, 50,
  255, 75,255, 69,255, 69,255, 65, 73, 84,255, 50,255, 77,255, 69,255, 84,
  255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68, 69, 70, 73,
   76, 77, 80, 82, 83, 84, 85, 86, 88, 89,255, 76, 78,255, 69, 78, 82,255,
   67, 73,255, 67, 83, 84,255, 72, 79,255, 75, 83, 84,255, 78,255, 70, 78,
  255, 71, 87,255, 69, 79, 84,255, 80, 88,255, 68, 78,255, 65, 73, 79,255,
   50,255, 75,255, 69,255, 69,255, 65, 73, 84,255, 50,255, 77,255, 69,255,
   84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68, 69, 70,
   73, 76, 77, 80, 82, 83, 84, 85, 86, 88, 89,255, 61, 62,255, 67, 73,255,
   67, 78, 83, 84,255, 72, 79,255, 76, 78, 88,255, 83, 84,255, 79,255, 75,
   83, 84,255, 78,255, 70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255,
   65, 73, 79,255, 50,255, 75,255, 69,255, 69,255, 65, 69, 73, 84,255, 69,
   82,255, 50,255, 77,255, 69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65,
   72, 73, 79, 82,255, 60, 62, 65, 67, 68, 69, 70, 71, 73, 76, 77, 78, 79,
   80, 82, 83, 84, 85, 86, 88, 89,255, 67, 73,255, 67, 83, 84,255, 72, 79,
  255, 75, 83, 84,255, 78,255, 70, 78,255, 71, 87,255, 69, 79, 84,255, 68,
   78,255, 65, 73, 79,255, 50,255, 75,255, 69,255, 69,255, 65, 73, 84,255,
   50,255, 77,255, 69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,
  255, 65, 67, 68, 69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89,
  255, 67, 73,255, 67, 82, 83, 84,255, 69, 79,255, 72, 73, 76, 79,255, 65,
   69,255, 84,255, 65, 73, 79,255, 73,255, 68,255, 76, 78, 88,255, 79, 82,
  255, 83, 84,255, 79,255, 75, 80, 83, 84,255, 70, 78,255, 70, 78,255, 71,
   87,255, 69, 73, 79, 84,255, 80, 88,255, 68, 78,255, 65, 73, 79,255, 78,
   80,255, 50,255, 75,255, 69,255, 69, 79, 82,255, 65, 77, 83, 84,255, 65,
   69, 73, 84,255, 50,255, 77,255, 69,255, 84,255, 83,255, 73, 81, 84, 89,
  255, 65, 69, 73, 82,255, 77, 84,255, 77, 84,255, 65, 66, 67, 68, 69, 70,
   71, 73, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 89,255, 69, 79,
  255, 73, 76,255, 65, 73, 79,255, 73,255, 68,255, 76, 78,255, 83, 84,255,
   79,255, 75, 80,255, 70, 78,255, 69, 73,255, 65, 73,255, 78, 80,255, 79,
   82,255, 65, 77, 83, 84,255, 69, 73,255, 65, 66, 67, 68, 69, 70, 71, 73,
   76, 77, 78, 79, 80, 82, 83, 84, 87, 88, 89,255, 61, 62,255, 60, 62,255,
   61, 62,255, 76, 78,255, 60, 62, 65, 69, 78, 79, 82, 84,255, 69, 79, 84,
  255, 73, 84,255, 84, 89,255, 73, 82,255, 67, 68, 73, 76, 77, 80, 82, 83,
   84, 85,255, 83, 87,255, 67, 73,255, 67, 83, 84,255, 83, 84,255, 78,255,
   69, 79,255, 80, 88,255, 65, 73, 79,255, 73, 81, 89,255, 65, 67, 69, 70,
   73, 76, 77, 80, 82, 83, 84, 86, 88, 89,255, 65,255, 67, 73,255, 65,255,
   67, 83, 84,255, 72, 79,255, 76, 78, 88,255, 75, 83, 84,255, 78,255, 70,
   78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73, 79,255, 50,255,
   75,255, 69,255, 69,255, 77, 86,255, 65, 69, 73, 84,255, 50,255, 77,255,
   69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68,
   69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89,255, 80, 87,255,
   67, 73,255, 67, 83, 84,255, 69,255, 83, 84,255, 78,255, 69, 79,255, 65,
   73, 79,255, 73, 81, 89,255, 65, 67, 69, 70, 73, 76, 77, 80, 82, 83, 84,
   86, 88, 89,255, 61, 62,255, 76, 78,255, 83, 84,255, 79,255, 72, 79,255,
   60, 62, 65, 69, 71, 78, 79, 82, 83, 84,255, 61, 62,255, 83, 84,255, 79,
  255, 72, 79,255, 60, 62, 65, 71, 78, 79, 82, 83, 84,255, 92,255, 65, 79,
   84,255, 79, 84,255, 67, 73,255, 67, 83, 84,255, 76, 78, 88,255, 83, 84,
  255, 78,255, 69, 79,255, 65, 73, 79,255, 65, 69,255, 73, 81, 89,255, 65,
   67, 69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 86, 88, 89,255, 84,255, 67,
   73,255, 65,255, 67, 83, 84,255, 72, 79,255, 76, 78, 88,255, 75, 83, 84,
  255, 78,255, 70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73,
   79,255, 50,255, 75,255, 69,255, 69,255, 65, 69, 73, 84,255, 50,255, 77,
  255, 69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67,
   68, 69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89,255, 67, 73,
  255, 67, 83, 84,255, 72, 79,255, 76, 78, 88,255, 75, 83, 84,255, 78,255,
   70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73, 79,255, 50,
  255, 75,255, 69,255, 69,255, 65, 69, 73, 84,255, 50,255, 77,255, 69,255,
   84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68, 69, 70,
   73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89,255, 76, 78,255, 69, 79,
   84,255, 69, 73, 84,255, 84, 89,255, 73, 82,255, 67, 68, 69, 73, 76, 77,
   78, 80, 82, 83, 84, 85,255, 83, 84,255, 79,255, 71,255, 66, 67,255, 79,
  255, 84,255, 76, 78,255, 69, 82,255, 76, 78,255, 69, 78, 82, 84,255, 76,
   78,255, 69,255, 69, 82,255, 69,255, 82, 83,255, 78, 82,255, 78,255
};

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

static const unsigned short ag_key_parm[] = {
    0,214,  0,312,310,  0,298,280,  0,284,  0,282,308,242,  0,317,  0,249,
  221,  0,245,227,  0,224,281,  0,264,239,  0,  0,  0,231,271,  0,  0,  0,
    0,234,236,  0,306,  0,255,  0,315,  0,285,  0,301,289,  0,220,219,  0,
    0,  0,222,  0,250,229,299,288,  0,305,  0,  0,259,296,  0,286,266,  0,
  218,  0,238,  0,267,  0,241,293,  0,258,292,  0,  0,  0,290,  0,302,309,
    0,223,226,307,  0,273,  0,300,  0,  0,  0,247,  0,228,  0,  0,  0,  0,
    0,  0,254,  0,  0,230,214,232,233,316,  0,291,  0,260,268,  0,303,263,
    0,253,  0,270,  0,  0,  0,  0,  0,  0,  0,246,279,287,  0,  0,  0,283,
  240,304,272,237,269,  0,248,235,  0,294,243,  0,295,244,  0,  0,314,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,265,297,  0,
    0,  0,  0,245,227,  0,239,  0,  0,231,234,236,  0,306,  0,255,  0,315,
    0,  0,220,219,  0,  0,  0,250,229,  0,305,  0,  0,218,259,238,  0,241,
  258,  0,223,226,  0,254,228,  0,230,214,232,233,  0,  0,260,  0,242,249,
    0,  0,  0,301,  0,  0,  0,  0,302,  0,  0,  0,253,240,248,243,244,  0,
  298,280,  0,282,  0,284,  0,299,288,  0,  0,  0,296,286,  0,293,292,290,
    0,279,287,253,  0,  0,281,285,289,  0,  0,  0,300,291,  0,283,297,294,
  295,  0,298,280,  0,282,  0,284,  0,264,281,  0,250,299,288,  0,  0,  0,
  259,296,  0,286,266,  0,  0,  0,267,  0,258,292,  0,293,  0,290,  0,273,
    0,300,  0,  0,  0,  0,  0,291,260,268,  0,253,  0,270,  0,  0,  0,  0,
    0,  0,  0,279,287,263,  0,  0,283,272,269,  0,  0,  0,271,285,289,  0,
    0,  0,  0,  0,  0,  0,265,297,294,295,  0,315,306,  0,  0,302,214,  0,
  298,280,  0,282,  0,284,  0,264,281,  0,250,299,288,  0,  0,  0,259,296,
    0,286,266,  0,  0,  0,267,  0,241,293,  0,258,292,  0,  0,  0,290,  0,
  273,  0,300,  0,  0,  0,  0,  0,291,260,268,  0,253,  0,270,  0,  0,  0,
    0,  0,  0,  0,279,287,263,  0,  0,283,272,269,  0,  0,  0,271,285,289,
    0,  0,  0,  0,  0,  0,  0,265,297,294,295,  0,312,310,  0,298,280,  0,
  282,308,  0,284,  0,264,281,  0,315,306,285,  0,220,219,  0,  0,  0,250,
  299,288,  0,  0,  0,259,296,  0,286,266,  0,  0,  0,267,  0,258,292,  0,
  293,  0,290,  0,273,  0,300,  0,  0,  0,  0,  0,291,214,260,268,  0,303,
  263,  0,253,  0,270,  0,  0,  0,  0,  0,  0,  0,279,287,  0,  0,  0,283,
  304,272,237,269,  0,  0,314,  0,  0,271,  0,289,  0,  0,  0,  0,302,307,
    0,  0,  0,  0,265,297,294,295,  0,298,280,  0,282,  0,284,  0,264,281,
    0,250,299,288,  0,  0,  0,259,296,  0,286,266,  0,  0,  0,267,  0,258,
  292,  0,293,  0,290,  0,273,  0,300,  0,  0,  0,  0,  0,291,260,268,  0,
  253,  0,270,  0,  0,  0,  0,  0,  0,  0,279,287,263,  0,  0,283,272,269,
    0,  0,  0,271,285,289,  0,  0,  0,309,  0,  0,  0,  0,265,297,294,295,
    0,298,280,  0,282,242,  0,284,  0,245,227,  0,264,239,  0,281,  0,231,
  271,  0,  0,  0,  0,234,236,  0,306,  0,255,  0,315,  0,285,  0,301,289,
    0,220,219,  0,  0,  0,250,229,299,288,  0,305,  0,  0,259,296,  0,286,
  266,  0,  0,238,  0,267,  0,241,293,  0,258,292,  0,  0,  0,290,  0,223,
  226,  0,273,  0,300,  0,  0,  0,  0,254,228,  0,230,214,232,233,  0,291,
    0,260,268,  0,253,  0,270,  0,  0,  0,  0,  0,  0,  0,279,287,263,  0,
    0,283,240,272,269,  0,294,243,  0,295,244,  0,  0,249,  0,  0,  0,  0,
    0,  0,  0,  0,302,  0,  0,  0,  0,  0,265,297,248,  0,  0,  0,245,227,
    0,239,  0,  0,231,234,236,  0,306,  0,255,  0,315,  0,  0,220,219,  0,
    0,  0,250,229,  0,305,  0,  0,259,238,  0,241,258,  0,223,226,  0,254,
  228,  0,230,214,232,233,  0,  0,260,  0,242,249,  0,  0,  0,301,  0,  0,
    0,  0,302,  0,  0,  0,253,240,248,243,244,  0,312,310,  0,  0,314,  0,
  312,310,  0,315,306,  0,  0,314,308,  0,302,307,214,304,  0,259,266,267,
    0,260,268,  0,263,270,  0,272,269,  0,264,271,250,  0,258,273,  0,  0,
    0,265,  0,246,235,  0,298,280,  0,282,  0,284,  0,299,288,  0,  0,  0,
  296,286,  0,241,293,  0,  0,292,290,  0,279,287,253,  0,  0,281,285,289,
    0,  0,  0,300,291,  0,283,297,294,295,  0,317,  0,298,280,  0,284,  0,
  282,  0,317,  0,264,281,  0,315,306,285,  0,250,299,288,  0,  0,  0,259,
  296,  0,286,266,  0,  0,  0,267,  0,258,292,  0,293,  0,290,  0,273,  0,
  300,  0,  0,  0,  0,  0,214,316,  0,291,  0,260,268,  0,253,  0,270,  0,
    0,  0,  0,  0,  0,  0,279,287,263,  0,  0,283,272,269,  0,  0,  0,271,
    0,289,  0,  0,  0,302,  0,  0,  0,  0,265,297,294,295,  0,247,235,  0,
  298,280,  0,282,  0,284,  0,222,  0,299,288,  0,  0,  0,296,286,  0,293,
  292,290,  0,279,287,253,  0,  0,281,285,289,  0,  0,  0,300,291,  0,283,
  297,294,295,  0,312,310,  0,315,306,  0,220,219,  0,  0,  0,304,237,  0,
    0,314,308,  0,  0,302,307,214,303,  0,  0,312,310,  0,220,219,  0,  0,
    0,304,237,  0,  0,314,308,  0,302,307,214,303,  0,  0, 33,  0,308,307,
  304,  0,307,304,  0,298,280,  0,282,  0,284,  0,315,306,285,  0,299,288,
    0,  0,  0,296,286,  0,293,292,290,  0,291,214,  0,279,287,253,  0,  0,
  281,  0,289,  0,  0,  0,302,300,  0,  0,283,297,294,295,  0,237,  0,298,
  280,  0,284,  0,282,  0,317,  0,264,281,  0,315,306,285,  0,250,299,288,
    0,  0,  0,259,296,  0,286,266,  0,  0,  0,267,  0,258,292,  0,293,  0,
  290,  0,273,  0,300,  0,  0,  0,  0,  0,291,214,260,268,  0,253,  0,270,
    0,  0,  0,  0,  0,  0,  0,279,287,263,  0,  0,283,272,269,  0,  0,  0,
  271,  0,289,  0,  0,  0,302,  0,  0,  0,  0,265,297,294,295,  0,298,280,
    0,282,  0,284,  0,264,281,  0,315,306,285,  0,250,299,288,  0,  0,  0,
  259,296,  0,286,266,  0,  0,  0,267,  0,258,292,  0,293,  0,290,  0,273,
    0,300,  0,  0,  0,  0,  0,291,214,260,268,  0,253,  0,270,  0,  0,  0,
    0,  0,  0,  0,279,287,263,  0,  0,283,272,269,  0,  0,  0,271,  0,289,
    0,  0,  0,302,  0,  0,  0,  0,265,297,294,295,  0,315,306,  0,259,266,
  267,  0,214,260,268,  0,263,270,  0,272,269,  0,264,271,  0,250,  0,258,
  302,273,  0,  0,  0,265,  0,220,219,  0,  0,  0,  0,  0,221,224,  0,307,
    0,304,  0,315,306,  0,  0,214,  0,315,306,  0,  0,302,214,237,  0,315,
  306,  0,  0,  0,306,214,  0,306,  0,214,303,  0,302,214,  0,302,  0
};

static const unsigned short ag_key_jmp[] = {
    0,  0,  0,  0,  0,  0,  0, 14,  0, 16,  0,  5,  8, 10,  6,  9,  0, 18,
   21,  0, 32, 35,  0, 38,  0,  0, 25, 27, 20, 23,  0,  0,  0,  0, 31,  0,
   34, 44, 46,  0, 51,  0, 40,  0, 48, 42, 53,  0, 55, 57,  0, 60, 63,  0,
   51,  0, 74,  0, 65, 68, 71, 56,  0,  0, 58,  0, 84,  0,  0,  0, 89,  0,
   80, 66, 86, 69, 92,  0,  0,  0,  0,  0,  0,  0, 78, 81, 96,  0, 98,101,
    0,  0,103,  0,  0,  0,  0, 95,  0, 97,  0,109,  0,101,  0,103,  0,105,
    0, 99,106,107,  0,113,  0,115,120,124,  0,111,113,129,133,  0,147,  0,
    0,  0,  0,127,  0,129,  0,131,  0,133,  0,137,142,144,124,135,  0,149,
  151,154,157,  0,160,  0,171,174,  0,179,182,  0,186,189,  0,  3,  3, 11,
   17, 26, 36, 44, 48, 54, 63, 72, 84, 88, 91,109,119,137,143,163,168,150,
  153,156,  0,207,210,  0,202,183,  0,213,216,218,  0,223,  0,193,  0,220,
  195,  0,228,231,  0,200,  0,233,236,  0,  0,205,  0,239,243,246,  0,249,
  251,  0,  0,257,  0,260,263,  0,267,  0,269,274,  0,224,278,  0,193,198,
  186,189,197,225,203,208,211,215,253,218,221,229,282,289,293,297,302,  0,
    0,310,  0,307,252,312,  0,325,  0,  0,259,  0,328,330,  0,332,334,336,
    0,345,347,350,  0,255,315,318,321,262,264,267,338,342,271,356,359,362,
  366,  0,  0,373,  0,370,290,375,  0,378,380,  0,393,396,  0,  0,300,  0,
  399,  0,  0,  0,401,  0,306,309,404,  0,  0,  0,  0,408,316,410,  0,  0,
    0,323,  0,325,  0,327,  0,412,414,418,  0,  0,  0,335,  0,337,  0,339,
    0,341,  0,422,424,427,343,  0,429,431,434,  0,293,297,382,386,389,304,
  312,319,329,331,345,350,437,442,445,449,  0,453,456,  0,371,460,464,  0,
    0,470,  0,467,378,472,  0,475,477,  0,490,493,  0,  0,388,  0,496,  0,
    0,  0,498,  0,394,397,501,  0,  0,  0,  0,  0,  0,  0,404,407,505,  0,
    0,  0,414,  0,416,  0,418,  0,507,509,513,  0,  0,  0,426,  0,428,  0,
  430,  0,432,  0,517,519,522,434,  0,524,526,529,  0,381,385,479,483,486,
  392,400,410,420,422,436,441,532,537,540,544,  0,  0,  0,  0,  0,555,  0,
  550,553,465,557,  0,560,562,  0,568,571,575,  0,581,584,  0,480,  0,586,
  589,  0,  0,485,  0,592,  0,  0,  0,594,  0,491,494,597,  0,  0,  0,  0,
  601,501,603,  0,  0,  0,508,  0,510,  0,512,  0,611,613,615,619,  0,628,
    0,  0,  0,  0,524,  0,526,  0,528,  0,530,  0,623,625,521,532,  0,630,
  632,635,  0,638,  0,462,548,468,473,564,476,577,483,489,497,504,605,609,
  514,516,534,539,641,646,649,653,  0,  0,660,  0,657,567,662,  0,665,667,
    0,680,683,  0,  0,577,  0,686,  0,  0,  0,688,  0,583,586,691,  0,  0,
    0,  0,695,593,697,  0,  0,  0,600,  0,602,  0,604,  0,702,704,708,  0,
    0,  0,612,  0,614,  0,616,  0,618,  0,712,714,717,620,  0,719,721,724,
    0,570,574,669,673,676,581,589,596,699,606,608,622,627,727,732,735,739,
    0,  0,750,  0,743,746,649,752,  0,766,769,  0,759,761,657,772,  0,  0,
    0,  0,665,  0,668,774,776,  0,781,  0,674,  0,778,676,783,  0,785,787,
    0,790,793,  0,685,  0,795,798,801,  0,  0,  0,690,  0,804,  0,  0,  0,
  809,  0,698,806,701,812,  0,  0,  0,  0,  0,  0,  0,709,712,816,  0,  0,
  822,  0,  0,  0,722,  0,724,  0,726,825,828,  0,834,  0,836,841,  0,832,
  732,845,849,  0,  0,  0,742,  0,744,  0,746,  0,748,  0,853,855,858,750,
    0,860,862,865,868,  0,883,886,  0,890,893,  0,652,755,660,670,678,682,
  688,695,704,715,818,719,728,737,752,757,871,876,879,762,765,  0,911,914,
    0,906,790,  0,917,920,922,  0,927,  0,800,  0,924,802,  0,932,935,  0,
  807,  0,937,940,  0,  0,812,  0,943,946,  0,949,951,  0,  0,957,  0,960,
  963,  0,967,  0,969,974,  0,830,978,  0,897,902,793,796,804,929,810,815,
  818,821,953,824,827,835,982,989,993,997,1002,  0,  0,  0,  0,858,1007,
    0,  0,  0,  0,1014,1017,  0,864,1009,1011,867,1021,1025,1027,1030,  0,
  1046,1049,1053,  0,1065,1069,  0,1073,1075,  0,1080,1083,  0,1034,1037,
  1041,879,1057,1060,883,886,889,1086,  0,1091,1097,  0,  0,1106,  0,1103,
  906,1108,  0,1121,  0,  0,913,  0,1124,1126,  0,  0,  0,  0,921,1128,1130,
    0,1139,1141,1144,  0,909,1111,1114,1117,916,918,924,1132,1136,928,1150,
  1153,1156,1160,  0,1164,  0,  0,1169,  0,1171,  0,1166,949,952,  0,1173,
  1175,  0,1181,1184,1188,  0,1194,1197,  0,  0,965,  0,1200,  0,  0,  0,
  1202,  0,971,974,1205,  0,  0,  0,  0,1209,981,1211,  0,  0,  0,988,  0,
  990,  0,992,  0,  0,1219,  0,1217,996,1224,1228,  0,  0,  0,1004,  0,1006,
    0,1008,  0,1010,  0,1232,1234,1237,1012,  0,1239,1241,1244,  0,954,958,
  1177,961,1190,969,977,984,1213,994,999,1014,1019,1247,1252,1255,1259,  0,
  1263,1270,  0,  0,1279,  0,1276,1044,1281,  0,1297,  0,1294,1051,  0,1053,
    0,1303,1305,  0,1307,1309,1311,  0,1320,1322,1325,  0,1047,1284,1287,
  1290,1056,1058,1061,1313,1317,1065,1331,1334,1337,1341,  0,  0,  0,  0,
  1350,1353,  0,1357,1360,  0,1090,  0,1375,  0,  0,1084,1345,1347,1087,
  1093,1362,1366,1368,1371,1095,  0,  0,  0,  0,1383,1386,  0,1112,  0,1401,
    0,  0,1109,1378,1380,1115,1388,1392,1394,1397,1117,  0,1404,  0,1406,
  1409,1411,  0,1415,1417,  0,  0,1424,  0,1421,1139,1426,  0,1432,1435,
  1439,  0,1445,  0,  0,1150,  0,1448,1450,  0,1452,1454,1456,  0,1466,1468,
    0,1470,1472,1475,  0,1142,1429,1146,1441,1153,1155,1158,1458,1462,1162,
  1165,1481,1484,1487,1491,  0,1495,  0,  0,1500,  0,1502,  0,1497,1187,
  1190,  0,1504,1506,  0,1512,1515,1519,  0,1525,1528,  0,  0,1203,  0,1531,
    0,  0,  0,1533,  0,1209,1212,1536,  0,  0,  0,  0,1540,1219,1542,  0,
    0,  0,1226,  0,1228,  0,1230,  0,1548,1550,1552,1556,  0,  0,  0,1239,
    0,1241,  0,1243,  0,1245,  0,1560,1562,1565,1247,  0,1567,1569,1572,
    0,1192,1196,1508,1199,1521,1207,1215,1222,1544,1232,1234,1249,1254,1575,
  1580,1583,1587,  0,  0,1594,  0,1591,1276,1596,  0,1599,1601,  0,1607,
  1610,1614,  0,1620,1623,  0,  0,1290,  0,1626,  0,  0,  0,1628,  0,1296,
  1299,1631,  0,  0,  0,  0,1635,1306,1637,  0,  0,  0,1313,  0,1315,  0,
  1317,  0,1643,1645,1647,1651,  0,  0,  0,1326,  0,1328,  0,1330,  0,1332,
    0,1655,1657,1660,1334,  0,1662,1664,1667,  0,1279,1283,1603,1286,1616,
  1294,1302,1309,1639,1319,1321,1336,1341,1670,1675,1678,1682,  0,1693,1696,
    0,1705,1708,1712,  0,1728,1730,1734,  0,1738,1740,  0,1745,1748,  0,
  1686,1689,1363,1700,1366,1716,1719,1723,1370,1374,1377,1751,  0,1756,1759,
    0,1393,  0,1396,  0,1761,1766,  0,1774,  0,1776,  0,1780,1783,  0,1407,
  1787,  0,1790,1793,  0,1413,1797,1801,1804,  0,1806,1809,  0,1421,  0,
  1813,1818,  0,1821,  0,1826,1829,  0,1833,1837,  0,1840,  0
};

static const unsigned short ag_key_index[] = {
    1,159,  1,  1,  0,  0,  0,232,275,  0,  0,354,354,354,374,  0,275,  0,
  275,445,354,275,545,631,  0,  0,  0,  0,  0,232,768,  0,  0,838,861,631,
    0,  0,  0,  0,870,374,892,  0,870,374,275,903,932,932,932,275,445,932,
  932,932,  0,374,374,  0,  0,947,1023,1041,1041,1069,  0,  0,631,  0,  0,
    0,  0,  0,  0,892,  0,275,903,932,932,932,275,445,932,932,932,  0,374,
    0,  0,947,1023,1041,1041,1069,  0,  0,861,  0,1098,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,1120,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,1098,275,1098,1130,  0,870,870,  0,  0,  0,  0,  0,
    0,  0,  0,870,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,1098,870,
  1098,631,861,861,631,631,1132,1136,  0,275,275,  0,  0,  0,275,892,  0,
  892,  0,892,275,374,374,1169,  0,  0,374,374,1185,  0,  0,354,  0,  0,
  1185,  0,  0,374,  0,  0,374,374,374,374,  0,  0,  0,  0,  0,  0,1258,
  1258,1345,1380,  0,1380,275,  0,1398,1400,1400,1098,1098,  0,892,892,892,
  892,892,892,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,
  275,275,275,1130,892,892,892,892,892,892,892,275,275,892,892,892,275,275,
  275,275,354,275,275,354,275,275,354,275,275,275,275,892,892,892,892,892,
  892,892,1403,861,861,631,631,631,631,1405,275,275,374,  0,  0,  0,275,
  374,  0,354,  0,  0,275,275,892,892,932,932,275,892,932,275,932,275,275,
    0,  0,275,275,  0,275,  0,374,374,374,374,374,374,374,  0,892,  0,  0,
  374,374,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,275,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,275,1098,1098,1132,1132,1132,1132,1132,1132,1098,1098,
  1132,1132,1132,1132,1132,1132,1132,1410,1410,1185,  0,  0,275,  0,275,
    0,275,  0,  0,374,374,  0,1416,374,374,  0,374,374,275,275,  0,  0,275,
  275,  0,275,275,  0,354,374,275,374,  0,  0,1098,1098,892,275,275,275,
  275,  0,892,275,275,275,  0,1410,1185,275,  0,275,275,275,275,275,275,
    0,275,275,  0,  0,275,275,  0,  0,275,275,275,374,374,374,892,374,374,
    0,  0,  0,  0,  0,  0,  0,  0,  0,1424,275,  0,275,  0,  0,  0,  0,  0,
    0,892,  0,  0,275,275,  0,  0,  0,892,374,  0,  0,275,1426,1426,1429,
  1431,374,  0,  0,  0,  0,  0,275,374,275,  0,  0,374,  0,1426,1429,  0,
    0,  1,  0,892,  0,892,  0,  0,1185,374,  1,275,374,275,374,275,  0,275,
  1434,  0,  0,  0,892,  0,1434,  0,  0,275,374,275,1437,892,892,  0,  0,
  374,374,374,374,  0,275,892,  0,374,275,374
};

static const unsigned char ag_key_ends[] = {
69,77,0, 61,0, 79,83,0, 68,0, 82,79,87,0, 78,0, 78,0, 
76,76,0, 69,65,75,0, 82,0, 82,67,76,69,0, 65,82,0, 83,69,0, 
84,73,78,85,69,0, 77,0, 84,0, 83,69,0, 70,0, 80,0, 82,0, 
65,67,0, 85,66,0, 79,0, 69,89,0, 85,84,0, 84,82,0, 
82,82,85,80,84,0, 66,69,76,0, 84,0, 78,69,0, 69,82,0, 
82,73,77,0, 68,0, 88,84,0, 84,0, 69,78,0, 75,69,0, 82,0, 78,0, 
68,0, 84,79,82,69,0, 85,82,78,0, 69,82,83,69,0, 71,72,84,0, 
82,73,77,0, 82,69,69,78,0, 78,0, 82,84,0, 80,0, 78,0, 88,84,0, 
69,78,0, 77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 73,84,0, 
78,68,79,87,0, 65,80,0, 73,67,75,0, 65,80,0, 73,67,75,0, 
82,82,79,87,0, 69,76,76,0, 82,67,76,69,0, 65,82,0, 83,69,0, 
84,65,0, 77,0, 84,0, 83,69,0, 70,0, 79,82,0, 85,66,0, 79,0, 
69,89,0, 85,84,0, 66,69,76,0, 70,84,0, 78,69,0, 80,0, 68,0, 
69,88,84,0, 69,78,0, 75,69,0, 73,78,84,0, 68,0, 84,79,82,69,0, 
85,82,78,0, 71,72,84,0, 89,83,84,69,77,50,0, 69,88,84,0, 
65,73,84,0, 84,73,67,75,0, 84,73,67,75,0, 79,83,0, 78,0, 
65,78,0, 79,83,0, 88,80,0, 82,65,67,0, 84,82,0, 78,0, 71,0, 
88,0, 78,0, 68,0, 69,69,75,0, 65,78,0, 78,0, 82,84,0, 
83,84,69,77,50,0, 65,78,0, 65,76,0, 77,65,80,0, 77,65,80,0, 
79,83,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 88,80,0, 
82,65,67,0, 69,89,0, 84,82,0, 84,0, 69,82,0, 82,73,77,0, 88,0, 
68,0, 78,0, 71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 
77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 
77,65,80,0, 83,69,0, 68,73,70,0, 69,88,84,0, 69,77,0, 79,83,0, 
78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 88,80,0, 82,65,67,0, 
69,89,0, 84,82,0, 84,0, 69,82,0, 82,73,77,0, 68,0, 78,0, 
71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 77,69,0, 
73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 77,65,80,0, 61,0, 
79,83,0, 68,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 83,69,0, 
68,73,70,0, 80,0, 82,65,67,0, 85,66,0, 79,0, 69,89,0, 84,82,0, 
84,0, 69,82,0, 82,73,77,0, 88,0, 68,0, 69,88,84,0, 82,0, 78,0, 
77,0, 71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 80,0, 78,0, 
69,78,0, 77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 
77,65,80,0, 79,83,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 
88,80,0, 82,65,67,0, 69,89,0, 84,82,0, 84,0, 69,82,0, 
82,73,77,0, 88,0, 68,0, 79,84,0, 78,0, 71,72,84,0, 82,73,77,0, 
78,0, 82,84,0, 82,0, 78,0, 77,69,0, 73,77,0, 80,80,69,82,0, 
65,76,0, 77,65,80,0, 77,65,80,0, 79,83,0, 82,79,87,0, 78,0, 
65,78,0, 69,76,76,0, 82,0, 82,67,76,69,0, 65,82,0, 83,69,0, 
83,0, 77,0, 84,0, 83,69,0, 70,0, 80,0, 82,0, 65,67,0, 
85,66,0, 79,0, 69,89,0, 85,84,0, 84,82,0, 84,0, 78,69,0, 
69,82,0, 82,73,77,0, 68,0, 69,88,84,0, 69,78,0, 75,69,0, 
73,78,84,0, 78,0, 68,0, 84,79,82,69,0, 85,82,78,0, 71,72,84,0, 
82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 88,84,0, 77,69,0, 
73,77,0, 80,80,69,82,0, 65,76,0, 65,73,84,0, 65,80,0, 
73,67,75,0, 65,80,0, 73,67,75,0, 82,82,79,87,0, 69,76,76,0, 
82,67,76,69,0, 65,82,0, 83,69,0, 84,65,0, 77,0, 84,0, 83,69,0, 
70,0, 79,82,0, 85,66,0, 79,0, 69,89,0, 85,84,0, 70,84,0, 
78,69,0, 80,0, 68,0, 69,88,84,0, 69,78,0, 75,69,0, 73,78,84,0, 
68,0, 84,79,82,69,0, 85,82,78,0, 71,72,84,0, 89,83,84,69,77,50,0, 
69,88,84,0, 65,73,84,0, 84,73,67,75,0, 84,73,67,75,0, 61,0, 
61,0, 78,68,0, 83,69,0, 68,73,70,0, 69,88,84,0, 82,0, 69,77,0, 
72,69,78,0, 72,82,0, 65,84,69,0, 78,75,69,89,0, 70,84,0, 
87,69,82,0, 82,73,77,0, 73,68,0, 69,69,75,50,0, 71,72,84,0, 
82,73,77,0, 82,0, 83,84,69,77,0, 77,69,0, 73,77,0, 
80,80,69,82,0, 67,82,69,69,78,0, 73,78,68,79,87,0, 79,83,0, 78,0, 
65,78,0, 79,83,0, 88,80,0, 82,65,67,0, 84,82,0, 78,0, 71,0, 
78,0, 68,0, 69,69,75,0, 65,78,0, 78,0, 82,84,0, 
83,84,69,77,50,0, 65,78,0, 65,76,0, 77,65,80,0, 77,65,80,0, 
84,0, 79,83,0, 78,0, 78,0, 82,0, 83,0, 65,84,69,0, 83,69,0, 
68,73,70,0, 80,0, 82,65,67,0, 69,89,0, 84,82,0, 84,0, 69,82,0, 
82,73,77,0, 88,0, 68,0, 69,88,84,0, 78,0, 69,82,83,69,0, 
71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 77,69,0, 
73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 77,65,80,0, 
82,73,78,84,69,82,0, 73,78,68,79,87,0, 79,83,0, 78,0, 65,78,0, 
79,83,0, 88,80,0, 82,65,67,0, 84,82,0, 82,82,85,80,84,0, 78,0, 
71,0, 88,0, 78,0, 68,0, 69,69,75,0, 65,78,0, 78,0, 82,84,0, 
83,84,69,77,50,0, 65,78,0, 65,76,0, 77,65,80,0, 77,65,80,0, 
61,0, 78,68,0, 83,69,0, 68,73,70,0, 85,66,0, 79,0, 69,88,84,0, 
82,0, 69,77,0, 84,69,80,0, 69,78,0, 61,0, 78,68,0, 85,66,0, 
79,0, 69,88,84,0, 82,0, 69,77,0, 84,69,80,0, 69,78,0, 34,0, 
78,68,0, 82,0, 72,69,78,0, 82,0, 72,69,78,0, 79,83,0, 78,0, 
65,78,0, 79,83,0, 83,69,0, 68,73,70,0, 80,0, 82,65,67,0, 
84,82,0, 78,0, 71,0, 88,0, 78,0, 68,0, 69,88,84,0, 69,69,75,0, 
78,0, 77,0, 78,0, 82,84,0, 83,84,69,77,50,0, 65,78,0, 65,76,0, 
77,65,80,0, 77,65,80,0, 79,0, 79,83,0, 78,0, 78,0, 82,0, 83,0, 
65,84,69,0, 83,69,0, 68,73,70,0, 80,0, 82,65,67,0, 69,89,0, 
84,82,0, 84,0, 69,82,0, 82,73,77,0, 88,0, 68,0, 69,88,84,0, 
78,0, 77,0, 71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 
77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 
77,65,80,0, 79,83,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 
83,69,0, 68,73,70,0, 80,0, 82,65,67,0, 69,89,0, 84,82,0, 84,0, 
69,82,0, 82,73,77,0, 88,0, 68,0, 69,88,84,0, 78,0, 77,0, 
71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 77,69,0, 
73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 77,65,80,0, 
72,82,0, 65,84,69,0, 83,69,0, 68,73,70,0, 78,75,69,89,0, 
70,84,0, 87,69,82,0, 82,73,77,0, 73,68,0, 69,88,84,0, 
69,69,75,50,0, 77,0, 71,72,84,0, 82,73,77,0, 82,0, 
83,84,69,77,0, 77,69,0, 73,77,0, 80,80,69,82,0, 85,66,0, 79,0, 
82,69,65,75,0, 79,78,84,73,78,85,69,0, 82,0, 72,69,78,0, 83,69,0, 
68,73,70,0, 69,77,0, 83,69,0, 68,73,70,0, 69,88,84,0, 69,77,0, 
79,0, 83,69,0, 68,73,70,0, 78,68,73,70,0, 69,77,0, 
78,68,73,70,0, 69,77,0, 84,69,80,0, 69,88,84,0, 69,77,0, 
69,88,84,0, 
};
#define AG_TCV(x) (((int)(x) >= -1 && (int)(x) <= 255) ? ag_tcv[(x) + 1] : 0)

static const unsigned short ag_tcv[] = {
   36, 36,320,320,320,320,320,320,320,320,  1,215,320,320,320,320,320,320,
  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,  1,320,321,
  318,322,320,320,320,252,251,277,261,225,275,323,278,324,324,324,324,324,
  324,324,324,324,324,320,319,311,256,313,320,320,325,325,325,325,326,325,
  325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,
  325,325,320,320,320,276,320,320,325,325,325,325,326,325,325,325,325,325,
  325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,320,320,
  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
  320,320,320,320,320
};

#ifndef SYNTAX_ERROR
#define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \
  (PCB).error_message, (PCB).line, (PCB).column)
#endif

#ifndef FIRST_LINE
#define FIRST_LINE 1
#endif

#ifndef FIRST_COLUMN
#define FIRST_COLUMN 1
#endif

#ifndef PARSER_STACK_OVERFLOW
#define PARSER_STACK_OVERFLOW {fprintf(stderr, \
   "\nParser stack overflow, line %d, column %d\n",\
   (PCB).line, (PCB).column);}
#endif

#ifndef REDUCTION_TOKEN_ERROR
#define REDUCTION_TOKEN_ERROR {fprintf(stderr, \
    "\nReduction token error, line %d, column %d\n", \
    (PCB).line, (PCB).column);}
#endif


typedef enum
  {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key,
   ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words;

#ifndef GET_INPUT
#define GET_INPUT ((PCB).input_code = getchar())
#endif


static int ag_look_ahead(void) {
  if ((PCB).rx < (PCB).fx) {
    return CONVERT_CASE((PCB).lab[(PCB).rx++]);
  }
  GET_INPUT;
  (PCB).fx++;
  return CONVERT_CASE((PCB).lab[(PCB).rx++] = (PCB).input_code);
}

static void ag_get_key_word(int ag_k) {
  int save_index = (PCB).rx;
  const  unsigned char *sp;
  int ag_ch;
  while (1) {
    switch (ag_key_act[ag_k]) {
    case ag_cf_end_key:
      sp = ag_key_ends + ag_key_jmp[ag_k];
      do {
        if ((ag_ch = *sp++) == 0) {
          int ag_k1 = ag_key_parm[ag_k];
          int ag_k2 = ag_key_pt[ag_k1];
          if (ag_key_itt[ag_k2 + ag_look_ahead()]) goto ag_fail;
          (PCB).rx--;
          (PCB).token_number = (parseBasic_token_type) ag_key_pt[ag_k1 + 1];
          return;
        }
      } while (ag_look_ahead() == ag_ch);
      goto ag_fail;
    case ag_end_key:
      sp = ag_key_ends + ag_key_jmp[ag_k];
      do {
        if ((ag_ch = *sp++) == 0) {
          (PCB).token_number = (parseBasic_token_type) ag_key_parm[ag_k];
          return;
        }
      } while (ag_look_ahead() == ag_ch);
    case ag_no_match_key:
ag_fail:
      (PCB).rx = save_index;
      return;
    case ag_cf_set_key: {
      int ag_k1 = ag_key_parm[ag_k];
      int ag_k2 = ag_key_pt[ag_k1];
      ag_k = ag_key_jmp[ag_k];
      if (ag_key_itt[ag_k2 + (ag_ch = ag_look_ahead())]) break;
      save_index = --(PCB).rx;
      (PCB).token_number = (parseBasic_token_type) ag_key_pt[ag_k1+1];
      break;
    }
    case ag_set_key:
      save_index = (PCB).rx;
      (PCB).token_number = (parseBasic_token_type) ag_key_parm[ag_k];
    case ag_jmp_key:
      ag_k = ag_key_jmp[ag_k];
      ag_ch = ag_look_ahead();
      break;
    case ag_accept_key:
      (PCB).token_number =  (parseBasic_token_type) ag_key_parm[ag_k];
      return;
    case ag_cf_accept_key: {
      int ag_k1 = ag_key_parm[ag_k];
      int ag_k2 = ag_key_pt[ag_k1];
      if (ag_key_itt[ag_k2 + ag_look_ahead()]) (PCB).rx = save_index;
      else {
        (PCB).rx--;
        (PCB).token_number =  (parseBasic_token_type) ag_key_pt[ag_k1+1];
      }
      return;
    }
    default:
      /* not reachable; here to suppress compiler warnings */
      goto ag_fail;
    }
    if (ag_ch <= 255) while (ag_key_ch[ag_k] < ag_ch) ag_k++;
    if (ag_ch > 255 || ag_key_ch[ag_k] != ag_ch) {
      (PCB).rx = save_index;
      return;
    }
  }
}


#ifndef AG_NEWLINE
#define AG_NEWLINE 10
#endif

#ifndef AG_RETURN
#define AG_RETURN 13
#endif

#ifndef AG_FORMFEED
#define AG_FORMFEED 12
#endif

#ifndef AG_TABCHAR
#define AG_TABCHAR 9
#endif

static void ag_track(void) {
  int ag_k = 0;
  while (ag_k < (PCB).rx) {
    int ag_ch = (PCB).lab[ag_k++];
    switch (ag_ch) {
    case AG_NEWLINE:
      (PCB).column = 1, (PCB).line++;
    case AG_RETURN:
    case AG_FORMFEED:
      break;
    case AG_TABCHAR:
      (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING);
      break;
    default:
      (PCB).column++;
    }
  }
  ag_k = 0;
  while ((PCB).rx < (PCB).fx) (PCB).lab[ag_k++] = (PCB).lab[(PCB).rx++];
  (PCB).fx = ag_k;
  (PCB).rx = 0;
}


static void ag_prot(void) {
  int ag_k;
  ag_k = 128 - ++(PCB).btsx;
  if (ag_k <= (PCB).ssx) {
    (PCB).exit_flag = AG_STACK_ERROR_CODE;
    PARSER_STACK_OVERFLOW;
    return;
  }
  (PCB).bts[(PCB).btsx] = (PCB).sn;
  (PCB).bts[ag_k] = (PCB).ssx;
  (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx];
  (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx];
}

static void ag_undo(void) {
  if ((PCB).drt == -1) return;
  while ((PCB).btsx) {
    int ag_k = 128 - (PCB).btsx;
    (PCB).sn = (PCB).bts[(PCB).btsx--];
    (PCB).ssx = (PCB).bts[ag_k];
    (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k];
    (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k];
  }
  (PCB).token_number = (parseBasic_token_type) (PCB).drt;
  (PCB).ssx = (PCB).dssx;
  (PCB).sn = (PCB).dsn;
  (PCB).drt = -1;
}


static const unsigned short ag_tstt[] = {
215,214,36,1,0,212,213,
1,0,
215,214,36,0,34,35,
215,214,36,0,7,8,12,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,0,10,11,15,16,19,21,24,28,30,58,95,96,99,133,135,136,190,192,
  208,209,210,211,
215,0,13,
326,325,324,315,306,305,302,301,260,259,258,255,254,253,250,249,248,245,244,
  243,242,241,240,239,238,236,234,233,232,231,230,229,228,227,226,223,220,
  219,218,215,214,36,0,2,3,5,27,29,37,38,39,40,41,42,43,44,46,47,56,60,61,
  66,69,71,73,74,75,78,80,82,83,84,85,86,87,88,91,92,93,94,97,98,100,102,
  104,165,174,216,217,257,
326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
  261,256,253,252,251,225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
  273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252,
  251,250,225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
  273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252,
  251,250,225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
  273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252,
  251,250,225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,315,313,311,306,302,278,277,276,275,261,
  256,252,251,225,215,214,36,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
  261,256,253,252,251,225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
  261,256,253,252,251,225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
  273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252,
  251,250,241,225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
  273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252,
  251,250,225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
  261,256,253,252,251,225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,315,314,313,312,311,310,308,307,306,304,
  303,302,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,285,
  284,283,282,281,280,279,278,277,276,275,273,272,271,270,269,268,267,266,
  265,264,263,261,260,259,258,256,253,252,251,250,237,225,220,219,215,214,
  36,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,309,300,299,298,297,296,295,294,
  293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,
  275,273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,
  252,251,250,225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,1,0,212,213,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,0,15,16,19,21,24,28,30,58,95,96,99,133,135,136,190,192,208,209,210,
  211,
326,325,324,315,306,305,302,301,260,259,258,255,254,253,250,249,248,245,244,
  243,242,241,240,239,238,236,234,233,232,231,230,229,228,227,226,223,220,
  219,218,215,214,36,1,0,212,213,
326,325,324,323,321,319,315,306,305,302,301,300,299,298,297,296,295,294,293,
  292,291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,271,
  270,269,268,267,266,265,264,263,260,259,258,255,254,253,252,250,249,248,
  245,244,243,242,241,240,239,238,236,234,233,232,231,230,229,228,227,226,
  225,223,220,219,215,214,36,1,0,212,213,
326,325,1,0,212,213,
326,325,0,3,27,216,
326,325,315,306,305,302,301,260,259,258,255,254,253,250,249,248,245,244,243,
  242,241,240,239,238,236,234,233,232,231,230,229,228,227,226,223,220,219,
  215,214,36,0,3,5,27,37,40,41,42,43,44,46,47,56,60,61,66,69,71,73,74,75,
  78,80,82,83,84,85,86,87,88,91,92,93,94,97,98,100,102,104,165,174,216,
  257,
326,325,324,322,319,314,313,312,311,310,278,277,276,275,261,256,252,251,225,
  215,36,1,0,212,213,
326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
  265,264,263,260,259,258,253,252,250,1,0,212,213,
326,325,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
319,315,314,313,312,311,310,308,307,306,304,302,261,256,252,251,225,215,214,
  36,1,0,212,213,
315,306,302,215,214,36,1,0,212,213,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  1,0,212,213,
252,1,0,212,213,
319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215,214,36,
  1,0,212,213,
315,306,302,215,214,36,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,1,0,212,213,
246,235,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,1,0,212,213,
326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
  264,263,260,259,258,253,252,250,241,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
326,325,1,0,212,213,
315,306,302,215,214,36,1,0,212,213,
326,325,324,315,306,302,215,214,36,1,0,212,213,
324,323,321,275,261,1,0,212,213,
326,325,1,0,212,213,
326,325,321,318,317,1,0,212,213,
326,325,324,323,321,319,318,317,316,315,306,302,300,299,298,297,296,295,294,
  293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,
  271,270,269,268,267,266,265,264,263,260,259,258,253,252,250,225,215,214,
  36,1,0,212,213,
324,318,247,235,1,0,212,213,
324,318,247,235,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,222,1,0,212,213,
326,325,324,1,0,212,213,
326,325,324,1,0,212,213,
326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
  265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,
  95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,175,183,185,187,188,216,257,262,274,
326,325,0,3,27,216,
256,252,0,95,99,
252,0,95,
252,0,95,
252,0,95,
256,252,0,95,99,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
252,0,95,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
246,235,0,77,89,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
  149,150,151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
  149,150,151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
  149,150,151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
  264,263,260,259,258,253,252,250,241,0,3,4,5,6,14,19,20,27,51,59,79,84,
  93,94,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,
  127,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,
  150,151,152,153,154,155,156,157,158,216,257,262,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
  149,150,151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
  149,150,151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
  149,150,151,152,153,154,155,156,157,158,216,274,
326,325,0,3,5,27,76,216,257,
326,325,324,0,2,3,27,29,45,216,217,
324,323,321,275,261,0,4,6,14,16,19,20,72,159,262,274,
326,325,0,3,5,27,70,198,216,257,
326,325,321,318,317,0,67,201,202,203,207,208,
326,325,324,323,321,319,318,317,316,315,306,302,300,299,298,297,296,295,294,
  293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,
  271,270,269,268,267,266,265,264,263,260,259,258,253,252,250,225,215,214,
  36,0,62,201,202,206,207,208,
324,318,247,235,0,2,29,57,77,90,160,208,217,
324,318,247,235,0,2,29,57,77,90,160,208,217,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,222,0,3,6,14,19,20,27,48,51,94,
  95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,
  150,151,152,153,154,155,156,157,158,216,274,
326,325,324,0,2,3,27,29,45,216,217,
326,325,324,0,2,3,27,29,45,216,217,
326,325,324,319,314,313,312,311,310,278,277,276,275,261,256,252,251,225,215,
  36,1,0,212,213,
324,0,22,
326,324,323,319,315,314,313,312,311,310,308,307,306,304,303,302,278,277,276,
  275,261,256,251,237,225,220,219,215,214,36,1,0,23,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
326,0,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
319,315,314,313,312,311,310,308,307,306,304,303,302,278,277,276,275,261,256,
  251,237,225,220,219,215,214,36,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
  137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,
  155,156,157,158,216,274,
252,0,95,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,33,1,0,31,
252,1,0,212,213,
319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215,214,36,
  1,0,212,213,
319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215,214,36,
  1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
252,1,0,212,213,
326,325,319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215,
  214,36,1,0,212,213,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
252,0,95,
276,0,133,
252,0,95,
278,277,0,135,136,
326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
  265,264,263,260,259,258,253,252,250,1,0,212,213,
314,313,312,311,310,275,261,256,0,16,19,99,189,190,191,192,193,
314,313,312,311,310,261,256,0,16,99,189,190,191,192,193,
326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
  265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,
  95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,185,187,188,216,257,262,274,
326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
  265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,
  95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,175,183,185,187,188,216,257,262,274,
308,0,186,
307,304,0,176,184,
256,0,99,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,128,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,0,5,216,257,
326,325,0,5,216,257,
326,325,0,5,216,257,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,106,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,324,322,0,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
261,225,0,16,58,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
275,261,0,16,19,
315,306,302,215,214,36,1,0,212,213,
326,325,324,323,315,306,302,300,299,298,297,296,295,294,293,292,291,290,289,
  288,287,286,285,284,283,282,281,280,279,275,253,252,215,214,36,1,0,212,
  213,
252,0,95,
275,261,225,0,16,19,58,
225,0,58,
225,0,58,
237,0,81,
275,261,225,0,16,19,58,
225,0,58,
326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
  264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,95,
  100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,130,
  132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
  153,154,155,156,157,158,216,257,262,274,
261,225,0,16,58,
225,0,58,
237,0,81,
252,0,95,
252,0,95,
225,0,58,
324,323,0,6,14,20,274,
324,323,0,6,14,20,274,
225,0,58,
252,0,95,
252,0,95,
225,0,58,
252,1,0,212,213,
252,0,95,
324,0,2,29,160,217,
321,0,4,204,262,
326,325,321,0,205,
326,325,0,3,5,27,68,195,216,257,
326,325,324,323,321,319,317,315,306,302,300,299,298,297,296,295,294,293,292,
  291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,271,270,
  269,268,267,266,265,264,263,260,259,258,253,252,250,225,215,214,36,1,0,
  212,213,
317,0,202,207,
326,325,324,323,321,319,315,306,302,300,299,298,297,296,295,294,293,292,291,
  290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,
  268,267,266,265,264,263,260,259,258,253,252,250,225,215,214,36,0,3,4,5,
  6,14,19,20,27,51,59,63,93,94,95,100,102,104,114,115,117,118,119,120,121,
  122,123,124,125,126,127,129,130,132,134,137,138,139,140,141,142,143,144,
  145,146,147,148,149,150,151,152,153,154,155,156,157,158,216,257,262,274,
326,325,321,315,306,302,273,272,271,270,269,268,267,266,265,264,263,260,259,
  258,252,250,215,214,36,1,0,212,213,
324,0,2,29,160,217,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
225,0,58,
275,261,220,219,0,16,19,44,46,
224,221,1,0,212,213,
224,221,0,49,50,
324,0,22,
324,0,22,
324,275,261,0,17,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,251,0,3,6,14,19,20,27,51,94,95,
  96,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,
  150,151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,131,
326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
  225,215,33,1,0,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
  137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,
  155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,116,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
  132,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,
  154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
  132,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,
  154,155,156,157,158,216,274,
326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
  264,263,260,259,258,253,252,250,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
  264,263,260,259,258,253,252,250,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
  264,263,260,259,258,253,252,250,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
  132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
  153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
  132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
  153,154,155,156,157,158,216,274,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,
  127,216,257,262,
307,251,0,96,184,
314,313,312,311,310,275,261,256,251,0,16,19,96,99,189,190,191,192,193,
314,313,312,311,310,261,256,251,0,16,96,99,189,190,191,192,193,
326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
  265,264,263,260,259,258,253,252,250,1,0,212,213,
326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
  265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,
  95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,185,187,188,216,257,262,274,
326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
  265,264,263,260,259,258,253,252,250,1,0,212,213,
326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
  265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,
  95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,183,185,187,188,216,257,262,274,
304,0,177,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
275,261,0,16,19,
252,225,0,95,105,
252,225,0,95,103,
252,225,0,95,101,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
261,0,16,
261,251,0,16,96,
326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
  264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,95,
  100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,130,
  132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
  153,154,155,156,157,158,216,257,262,274,
261,251,0,16,96,
275,261,251,0,16,19,96,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
  149,150,151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
  149,150,151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
  149,150,151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,163,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,161,
326,325,0,3,5,27,216,257,
324,323,321,275,261,0,4,6,14,16,19,20,159,262,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,200,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,199,
326,325,0,3,5,27,198,216,257,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
321,0,4,204,262,
252,0,95,
252,0,95,
225,0,58,
261,0,16,
275,261,0,16,19,
319,315,306,302,225,215,214,36,0,58,64,
261,0,16,
275,261,225,0,16,19,58,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,324,0,54,
326,325,324,0,52,
315,306,302,215,214,36,1,0,212,213,
315,306,302,215,214,36,1,0,212,213,
324,0,18,
324,0,18,
261,251,0,16,96,
261,251,0,16,96,
261,225,0,16,58,
261,251,0,16,96,
261,251,0,16,96,
261,251,0,16,96,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
275,261,225,0,16,19,58,
275,261,225,0,16,19,58,
275,261,251,0,16,19,96,
275,261,225,0,16,19,58,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
275,261,251,225,0,16,19,58,96,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
261,251,0,16,96,
261,251,0,16,96,
261,251,0,16,96,
261,251,0,16,96,
261,251,0,16,96,
261,251,0,16,96,
261,251,0,16,96,
275,261,251,0,16,19,96,
275,261,251,225,0,16,19,58,96,
261,225,0,16,58,
261,225,0,16,58,
261,225,0,16,58,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
276,0,133,
276,0,133,
275,261,0,16,19,
275,261,0,16,19,
275,261,0,16,19,
275,261,0,16,19,
275,261,0,16,19,
275,261,0,16,19,
278,277,0,135,136,
278,277,0,135,136,
261,0,16,
261,0,16,
261,0,16,
261,0,16,
261,0,16,
261,0,16,
308,0,186,
315,306,215,214,36,1,0,212,213,
315,306,215,214,36,0,35,
275,261,237,0,16,19,166,
275,261,0,16,19,
251,225,0,58,96,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,112,
225,0,58,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,110,
225,0,58,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,108,
225,0,58,
251,225,0,58,96,
275,261,0,16,19,
261,0,16,
275,261,225,0,16,19,58,
275,261,0,16,19,
261,0,16,
261,0,16,
275,261,225,0,16,19,58,
261,0,16,
275,261,0,16,19,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
252,0,95,
252,0,95,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
275,261,225,0,16,19,58,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,197,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,196,
326,325,0,3,5,27,68,195,216,257,
326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
  264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,95,
  100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,130,
  132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
  153,154,155,156,157,158,216,257,262,274,
319,315,306,302,215,214,36,0,65,209,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
261,225,0,16,58,
326,325,324,0,2,3,27,29,45,55,216,217,
326,325,324,0,2,3,27,29,45,53,216,217,
324,0,
324,0,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
251,225,0,58,96,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
251,225,0,58,96,
315,306,215,214,36,0,7,8,12,178,
237,0,81,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
256,0,99,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
256,0,99,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
251,225,0,58,96,
251,225,0,58,96,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,164,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,162,
251,225,0,58,96,
251,225,0,58,96,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
261,0,16,
275,261,0,16,19,
275,261,225,0,16,19,58,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
225,0,58,
225,0,58,
261,251,0,16,96,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
261,251,0,16,96,
275,261,225,0,16,19,58,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
315,306,36,0,179,194,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
275,261,0,16,19,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
251,225,0,58,96,
275,261,251,0,16,19,96,
251,225,0,58,96,
275,261,251,0,16,19,96,
251,225,0,58,96,
275,261,225,0,16,19,58,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
275,261,251,0,16,19,96,
275,261,225,0,16,19,58,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  151,152,153,154,155,156,157,158,216,274,
275,261,251,0,16,19,96,
251,225,0,58,96,
251,225,0,58,96,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
261,0,16,
326,325,324,0,2,3,27,29,45,216,217,
326,325,324,0,2,3,27,29,45,216,217,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
306,215,214,36,1,0,212,213,
306,215,214,36,0,35,
306,36,0,180,
303,275,261,215,214,0,16,19,167,173,
275,261,0,16,19,
225,0,113,
256,0,99,
225,0,111,
256,0,99,
225,0,109,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
261,0,16,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
251,225,0,58,96,
251,225,0,58,96,
261,0,16,
275,261,251,0,16,19,96,
306,215,214,36,0,7,8,12,
306,36,0,181,182,
324,323,275,261,1,0,212,213,
324,323,275,261,0,6,14,16,19,20,159,274,
215,214,0,168,
225,0,58,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
225,0,58,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
225,0,58,
275,261,251,0,16,19,96,
275,261,237,0,16,19,81,
315,306,302,215,214,36,1,0,212,213,
215,214,0,7,8,12,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
261,0,16,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
261,0,16,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
256,0,99,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
302,215,214,36,0,35,
275,261,251,0,16,19,96,
275,261,251,0,16,19,96,
275,261,225,0,16,19,58,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
275,261,225,0,16,19,58,
302,215,214,36,0,7,8,12,169,
256,0,99,
256,0,99,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
261,0,16,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
302,36,0,170,172,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
275,261,251,0,16,19,96,
275,261,225,0,16,19,58,
326,325,315,306,302,215,214,36,1,0,212,213,
326,325,315,306,302,215,214,36,0,3,27,171,216,
261,0,16,
261,0,16,
256,0,99,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
  126,127,216,257,262,
275,261,225,0,16,19,58,
261,0,16,
326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
  152,153,154,155,156,157,158,216,274,
275,261,0,16,19,

};


static unsigned const char ag_astt[14392] = {
  8,8,8,1,7,1,1,9,5,8,8,8,7,0,1,8,1,2,7,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,1,7,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,7,1,3,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,2,2,5,5,1,5,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,7,2,2,1,1,2,3,1,1,3,3,3,
  3,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,2,1,1,1,1,1,1,1,1,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,
  3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,
  1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,
  7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  1,7,1,3,5,5,10,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,1,7,1,3,2,2,7,2,2,1,2,2,5,5,1,5,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,7,2,1,1,3,3,3,3,
  3,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,2,1,1,1,1,1,1,1,10,
  10,10,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,
  3,5,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,1,7,1,3,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,
  5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,
  1,3,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,
  1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,
  1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,
  5,1,7,1,3,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,1,7,1,3,
  5,5,1,7,1,3,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,
  3,5,5,5,5,1,7,1,3,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,1,7,1,3,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,7,2,1,1,1,1,7,
  1,1,1,7,1,1,7,1,1,7,1,1,1,7,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,
  1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
  2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,7,2,1,1,1,1,1,2,
  2,2,4,2,2,2,2,2,1,1,2,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,2,2,7,2,1,1,1,1,1,1,4,
  4,4,1,1,7,1,1,1,1,1,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,2,1,1,1,
  2,1,1,1,7,2,2,2,2,2,2,1,1,2,1,1,1,7,2,2,1,1,1,2,1,1,2,2,2,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,7,2,2,2,2,2,1,1,2,2,2,7,2,
  2,2,2,2,1,1,10,10,10,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,7,2,5,10,
  1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,3,5,1,7,1,3,5,
  1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,
  1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,
  5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,1,5,1,7,1,1,7,
  1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,
  1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  7,1,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,
  1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,1,7,1,3,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,
  1,7,1,1,7,1,1,5,1,1,4,1,1,1,5,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,1,1,1,1,1,1,
  1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,
  1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,
  1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,4,7,1,1,1,7,1,4,4,4,
  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,2,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,7,1,1,1,2,2,7,1,1,1,2,2,7,1,
  1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,
  1,1,1,10,10,10,2,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,7,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,5,5,5,5,5,5,1,7,1,3,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,
  3,1,7,1,1,1,1,7,1,1,1,1,4,1,1,4,1,1,7,1,1,1,1,7,1,1,1,1,7,1,2,2,2,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,7,1,1,7,1,1,7,
  1,1,7,1,1,5,1,2,1,7,2,1,1,1,2,1,7,2,1,1,1,1,5,1,1,4,1,1,4,1,1,5,1,5,1,7,1,
  3,1,7,1,2,7,2,2,2,1,1,7,2,3,1,4,4,4,7,1,2,2,7,2,1,1,2,1,1,1,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,4,2,1,2,2,2,1,1,5,5,5,5,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,5,5,5,7,2,2,
  1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,1,7,1,3,2,7,2,2,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,4,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1,1,5,5,1,7,1,3,
  1,1,7,2,2,1,4,2,1,5,2,8,1,1,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,
  1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,
  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,
  2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,
  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,2,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,
  2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,4,7,1,10,10,10,10,10,2,10,10,10,10,10,10,10,10,10,10,10,10,10,
  10,2,10,10,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
  1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,4,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,
  7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,
  3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2,
  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
  1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,2,1,1,1,
  1,2,2,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1,1,7,1,1,3,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,7,1,3,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2,2,2,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
  1,1,1,4,7,1,1,1,4,7,1,1,1,4,7,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,
  1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,1,7,1,1,3,2,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,
  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  7,2,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,4,4,4,
  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,7,2,1,1,1,1,2,
  1,1,1,1,7,2,2,1,1,1,1,2,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  7,1,2,2,7,2,1,1,3,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,7,2,3,1,1,4,1,1,4,1,1,5,1,1,4,1,1,1,4,1,1,4,4,4,4,1,4,4,4,7,1,1,
  1,4,1,1,1,1,7,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,4,4,4,7,1,4,4,4,7,1,5,5,5,5,5,5,1,7,1,3,
  5,5,5,5,5,5,1,7,1,3,2,7,1,2,7,1,1,1,7,1,2,1,1,7,1,2,1,1,7,1,1,1,1,7,1,2,1,
  1,7,1,2,1,1,7,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,1,1,1,1,7,1,1,1,
  1,1,1,7,1,1,2,1,1,1,7,1,1,1,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,
  1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,1,7,1,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,
  1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,7,1,2,1,1,7,1,2,1,1,7,1,2,1,1,7,1,
  2,1,1,7,1,2,1,1,7,1,2,1,1,1,7,1,1,2,1,1,1,1,7,1,1,1,2,1,1,7,1,1,1,1,7,1,1,
  1,1,7,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  4,1,1,4,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,
  4,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,5,5,5,5,5,1,7,1,
  3,5,5,8,8,5,7,1,1,1,4,7,1,1,1,1,1,4,1,1,1,1,7,1,1,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,1,1,7,1,1,1,1,4,1,1,1,4,1,1,1,1,7,1,1,1,1,
  1,5,1,1,1,4,1,1,4,1,1,1,1,7,1,1,1,1,4,1,1,1,4,1,1,2,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,7,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  7,1,2,2,7,2,1,1,3,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,4,4,4,4,4,4,7,3,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,4,1,1,2,2,2,7,2,2,2,2,2,1,1,1,2,2,2,7,2,2,2,2,2,1,1,
  1,10,4,10,4,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,
  2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,4,4,8,1,4,7,1,1,1,1,1,7,1,2,2,2,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,7,1,2,4,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,4,4,4,4,7,1,1,1,7,1,2,1,1,7,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,4,1,1,1,4,1,1,1,1,1,4,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,4,1,1,4,1,1,1,7,1,2,1,
  1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,7,1,2,1,1,1,7,1,
  1,1,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,5,5,7,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1,
  1,1,7,1,1,1,1,1,7,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,7,1,1,2,1,1,1,7,1,1,1,2,2,2,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,2,1,1,7,1,2,1,1,7,1,
  2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,2,2,1,1,1,1,1,4,1,2,2,2,7,2,2,2,2,2,1,1,2,2,2,7,2,2,2,2,2,1,1,2,2,2,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,1,7,1,3,5,8,8,
  5,7,1,4,4,7,1,1,1,1,4,4,7,1,1,1,1,1,1,4,1,1,4,7,1,1,7,1,4,7,1,1,7,1,4,7,1,
  2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,7,1,2,1,
  4,1,1,1,1,7,1,1,2,5,8,1,5,7,1,1,1,1,2,7,3,3,5,5,5,5,1,7,1,3,2,1,1,1,7,2,1,
  1,1,1,2,1,4,4,7,1,1,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,7,1,1,1,1,7,1,
  1,1,1,1,1,7,1,1,1,5,5,5,5,5,5,1,7,1,3,8,1,7,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,5,8,8,5,7,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,2,2,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,
  1,1,1,1,1,1,7,1,1,1,4,8,1,4,7,1,1,1,1,1,7,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,7,
  1,1,1,1,1,1,7,1,1,1,5,5,5,5,5,5,5,5,1,7,1,3,2,2,4,4,4,4,4,4,7,2,2,2,1,1,4,
  1,1,4,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,
  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,2,2,1,1,1,1,1,1,1,7,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,4,1,1
};


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

};


static const unsigned short ag_sbt[] = {
     0,   7,   9,  15,  22,  47,  91,  94, 184, 232, 257, 282, 345, 408,
   471, 501, 526, 574, 599, 647, 711, 774, 822, 900, 964, 989,1014,1039,
  1064,1105,1151,1235,1241,1247,1330,1355,1405,1411,1416,1421,1426,1450,
  1460,1483,1488,1511,1521,1554,1560,1594,1628,1662,1695,1745,1779,1813,
  1847,1853,1863,1876,1885,1891,1900,1960,1968,1976,2010,2017,2024,2135,
  2141,2146,2149,2152,2155,2160,2204,2207,2274,2279,2349,2419,2489,2556,
  2664,2734,2804,2874,2883,2894,2910,2920,2932,2995,3008,3021,3090,3101,
  3112,3136,3139,3172,3177,3182,3187,3192,3197,3202,3207,3212,3217,3222,
  3227,3232,3237,3242,3247,3252,3257,3262,3267,3272,3277,3282,3284,3287,
  3290,3293,3296,3299,3302,3305,3308,3311,3314,3317,3320,3323,3326,3329,
  3332,3335,3338,3341,3344,3347,3350,3353,3384,3448,3451,3476,3481,3504,
  3527,3532,3537,3542,3547,3552,3557,3562,3567,3592,3595,3598,3601,3604,
  3607,3610,3613,3616,3619,3622,3625,3628,3631,3634,3639,3689,3706,3721,
  3830,3941,3944,3949,3952,3983,4050,4056,4062,4068,4099,4143,4148,4192,
  4197,4241,4308,4313,4323,4362,4365,4372,4375,4378,4381,4388,4391,4496,
  4501,4504,4507,4510,4513,4516,4523,4530,4533,4536,4539,4542,4547,4550,
  4556,4561,4566,4576,4634,4638,4752,4781,4787,4831,4898,4901,4910,4916,
  4921,4924,4927,4932,4976,5020,5064,5108,5152,5196,5263,5330,5397,5464,
  5533,5600,5667,5734,5801,5868,5935,6002,6069,6136,6203,6270,6337,6368,
  6392,6436,6480,6524,6568,6612,6656,6700,6767,6834,6878,6922,6966,7030,
  7061,7126,7191,7240,7307,7374,7423,7490,7557,7606,7673,7740,7806,7872,
  7916,7960,8004,8048,8092,8136,8179,8184,8203,8220,8270,8379,8429,8539,
  8542,8609,8677,8682,8687,8692,8697,8765,8768,8773,8878,8883,8890,8957,
  9024,9068,9112,9146,9216,9283,9327,9397,9464,9534,9565,9596,9604,9619,
  9650,9681,9690,9757,9762,9765,9768,9771,9774,9779,9790,9793,9800,9844,
  9849,9854,9864,9874,9877,9880,9885,9890,9895,9900,9905,9910,9917,9924,
  9931,9938,9945,9952,9959,9966,9973,9980,9987,9996,10003,10010,10017,
  10024,10031,10099,10104,10109,10114,10119,10124,10129,10134,10141,10150,
  10155,10160,10165,10233,10236,10239,10244,10249,10254,10259,10264,10269,
  10274,10279,10282,10285,10288,10291,10294,10297,10300,10309,10316,10323,
  10328,10333,10364,10367,10398,10401,10432,10435,10440,10445,10448,10455,
  10460,10463,10466,10473,10476,10481,10549,10617,10620,10623,10691,10759,
  10766,10797,10828,10838,10943,10953,11020,11025,11037,11049,11051,11053,
  11097,11164,11231,11298,11365,11370,11414,11481,11548,11615,11620,11630,
  11633,11700,11703,11771,11838,11906,11973,12041,12108,12111,12178,12245,
  12250,12255,12286,12317,12322,12327,12394,12462,12530,12533,12538,12545,
  12589,12592,12595,12600,12607,12614,12621,12628,12633,12640,12647,12654,
  12660,12727,12732,12799,12804,12811,12816,12823,12828,12835,12879,12886,
  12893,12961,13029,13036,13041,13046,13090,13093,13104,13115,13182,13190,
  13196,13200,13210,13215,13218,13221,13224,13227,13230,13297,13300,13367,
  13372,13377,13380,13387,13395,13400,13408,13420,13424,13427,13471,13474,
  13518,13521,13528,13535,13545,13551,13618,13621,13688,13691,13758,13761,
  13828,13834,13841,13848,13855,13899,13906,13915,13918,13921,13988,13991,
  14058,14063,14107,14151,14158,14165,14177,14190,14193,14196,14199,14266,
  14310,14317,14320,14387,14392
};


static const unsigned short ag_sbe[] = {
     4,   8,  12,  18,  44,  68,  92, 136, 229, 254, 279, 342, 405, 468,
   498, 523, 571, 596, 644, 708, 771, 819, 897, 961, 986,1011,1036,1061,
  1084,1148,1232,1238,1243,1287,1352,1402,1408,1413,1418,1423,1447,1457,
  1480,1485,1508,1518,1551,1557,1591,1625,1659,1692,1742,1776,1810,1844,
  1850,1860,1873,1882,1888,1897,1957,1965,1973,2007,2014,2021,2070,2137,
  2143,2147,2150,2153,2157,2179,2205,2236,2276,2309,2379,2449,2518,2602,
  2694,2764,2834,2876,2886,2899,2912,2925,2988,2999,3012,3051,3093,3104,
  3133,3137,3170,3174,3179,3184,3189,3194,3199,3204,3209,3214,3219,3224,
  3229,3234,3239,3244,3249,3254,3259,3264,3269,3274,3279,3283,3285,3288,
  3291,3294,3297,3300,3303,3306,3309,3312,3315,3318,3321,3324,3327,3330,
  3333,3336,3339,3342,3345,3348,3351,3381,3413,3449,3474,3478,3501,3524,
  3529,3534,3539,3544,3549,3554,3559,3564,3589,3593,3596,3599,3602,3605,
  3608,3611,3614,3617,3620,3623,3626,3629,3632,3636,3686,3697,3713,3767,
  3876,3942,3946,3950,3981,4012,4052,4058,4064,4097,4118,4147,4167,4194,
  4216,4270,4310,4320,4359,4363,4368,4373,4376,4379,4384,4389,4436,4498,
  4502,4505,4508,4511,4514,4518,4525,4531,4534,4537,4540,4544,4548,4551,
  4557,4564,4568,4631,4635,4691,4778,4782,4806,4860,4899,4905,4913,4918,
  4922,4925,4930,4951,4995,5039,5083,5127,5171,5225,5292,5359,5426,5494,
  5562,5629,5696,5763,5830,5897,5964,6031,6098,6165,6232,6299,6366,6391,
  6411,6455,6499,6543,6587,6631,6675,6729,6796,6853,6897,6941,6995,7059,
  7090,7155,7237,7269,7336,7420,7452,7519,7603,7635,7702,7769,7835,7891,
  7935,7979,8023,8067,8111,8155,8181,8193,8211,8267,8316,8426,8475,8540,
  8571,8638,8679,8684,8689,8694,8726,8766,8770,8818,8880,8886,8919,8986,
  9043,9087,9143,9176,9245,9302,9357,9426,9494,9563,9594,9598,9609,9648,
  9679,9683,9719,9758,9763,9766,9769,9772,9776,9787,9791,9796,9819,9847,
  9852,9861,9871,9875,9878,9882,9887,9892,9897,9902,9907,9913,9920,9927,
  9934,9941,9948,9955,9962,9969,9976,9983,9991,9999,10006,10013,10020,
  10027,10060,10101,10106,10111,10116,10121,10126,10131,10137,10145,10152,
  10157,10162,10194,10234,10237,10241,10246,10251,10256,10261,10266,10271,
  10276,10280,10283,10286,10289,10292,10295,10298,10306,10314,10319,10325,
  10330,10362,10365,10396,10399,10430,10433,10437,10442,10446,10451,10457,
  10461,10464,10469,10474,10478,10510,10578,10618,10621,10652,10720,10762,
  10795,10826,10830,10883,10950,10982,11022,11028,11040,11050,11052,11072,
  11126,11193,11260,11327,11367,11389,11443,11510,11577,11617,11625,11631,
  11662,11701,11732,11800,11867,11935,12002,12070,12109,12140,12207,12247,
  12252,12284,12315,12319,12324,12356,12423,12491,12531,12535,12541,12564,
  12590,12593,12597,12603,12610,12617,12624,12630,12636,12643,12650,12657,
  12689,12729,12761,12801,12807,12813,12819,12825,12831,12854,12882,12889,
  12922,12990,13032,13038,13043,13065,13091,13096,13107,13144,13187,13194,
  13198,13205,13212,13216,13219,13222,13225,13228,13259,13298,13329,13369,
  13374,13378,13383,13391,13397,13405,13412,13422,13425,13446,13472,13493,
  13519,13524,13531,13542,13547,13580,13619,13650,13689,13720,13759,13790,
  13832,13837,13844,13851,13874,13902,13910,13916,13919,13950,13989,14020,
  14060,14082,14126,14154,14161,14174,14185,14191,14194,14197,14228,14285,
  14313,14318,14349,14389,14392
};


static const unsigned char ag_fl[] = {
  2,1,2,0,1,0,2,2,1,0,1,4,4,3,0,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,3,3,0,2,
  2,2,0,3,4,2,1,0,1,1,1,1,2,2,3,3,0,5,0,5,6,4,2,0,5,3,2,2,1,2,1,2,5,7,2,
  4,4,4,4,16,4,4,4,2,2,2,2,2,2,3,2,2,1,1,4,4,4,1,3,0,11,0,9,0,9,0,7,0,0,
  15,0,0,13,0,0,13,1,3,1,1,1,0,5,3,6,6,8,4,6,1,4,4,4,4,4,4,4,1,1,4,3,0,7,
  1,1,1,0,5,3,2,1,3,1,3,3,1,3,3,3,6,4,4,4,4,4,4,6,4,4,4,4,4,6,4,3,6,6,4,
  4,4,4,4,6,4,4,1,2,2,1,1,1,0,5,0,7,0,5,0,7,1,3,0,0,0,14,1,1,0,2,0,1,0,0,
  0,9,1,1,1,3,1,3,1,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,2,1,3,1,0,5,1,0,5,1,3,
  1,0,5,1,0,5,1,1,3,3,0,1,3,1,3,0,1,1,0,2,0,3,0,1,1,1,2,1,6,2,2,1,0,1,1,
  3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
};

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


static void ag_ra(void)
{
  switch(ag_rpx[(PCB).ag_ap]) {
    case 1: ag_rp_1(); break;
    case 2: V(0,(double *)) = ag_rp_2(V(0,(double *)), V(3,(int *))); break;
    case 3: V(0,(double *)) = ag_rp_3(V(0,(double *)), V(3,(int *))); break;
    case 4: V(0,(double *)) = ag_rp_4(V(0,(double *)), V(2,(double *))); break;
    case 5: V(0,(double *)) = ag_rp_5(V(1,(double *))); break;
    case 6: V(0,(double *)) = ag_rp_6(V(0,(int *))); break;
    case 7: V(0,(double *)) = ag_rp_7(V(0,(double *)), V(1,(int *))); break;
    case 8: V(0,(double *)) = ag_rp_8(V(0,(int *))); break;
    case 9: V(0,(double *)) = ag_rp_9(V(0,(int *)), V(1,(double *))); break;
    case 10: V(0,(int *)) = ag_rp_10(V(0,(int *))); break;
    case 11: V(0,(int *)) = ag_rp_11(V(0,(int *)), V(1,(int *))); break;
    case 12: V(0,(int *)) = ag_rp_12(V(0,(int *))); break;
    case 13: V(0,(int *)) = ag_rp_13(V(0,(int *)), V(1,(int *))); break;
    case 14: V(0,(char * *)) = ag_rp_14(V(0,(int *))); break;
    case 15: V(0,(char * *)) = ag_rp_15(V(0,(int *))); break;
    case 16: V(0,(char * *)) = ag_rp_16(V(0,(int *))); break;
    case 17: V(0,(int *)) = ag_rp_17(V(0,(int *))); break;
    case 18: V(0,(int *)) = ag_rp_18(V(0,(int *)), V(1,(int *))); break;
    case 19: V(0,(char * *)) = ag_rp_19(V(1,(int *))); break;
    case 20: V(0,(char * *)) = ag_rp_20(V(1,(int *))); break;
    case 21: V(0,(int *)) = ag_rp_21(); break;
    case 22: V(0,(int *)) = ag_rp_22(V(0,(int *)), V(1,(int *))); break;
    case 23: V(0,(int *)) = ag_rp_23(V(0,(int *))); break;
    case 24: ag_rp_24(); break;
    case 25: ag_rp_25(V(1,(char * *))); break;
    case 26: ag_rp_26(V(0,(char * *))); break;
    case 27: ag_rp_27(V(1,(char * *))); break;
    case 28: ag_rp_28(V(1,(char * *))); break;
    case 29: ag_rp_29(); break;
    case 30: ag_rp_30(); break;
    case 31: ag_rp_31(); break;
    case 32: ag_rp_32(); break;
    case 33: ag_rp_33(); break;
    case 34: ag_rp_34(); break;
    case 35: ag_rp_35(V(1,(int *))); break;
    case 36: ag_rp_36(V(1,(int *))); break;
    case 37: ag_rp_37(V(1,(int *))); break;
    case 38: ag_rp_38(); break;
    case 39: ag_rp_39(); break;
    case 40: ag_rp_40(); break;
    case 41: ag_rp_41(V(1,(char * *))); break;
    case 42: ag_rp_42(); break;
    case 43: ag_rp_43(); break;
    case 44: ag_rp_44(); break;
    case 45: ag_rp_45(); break;
    case 46: ag_rp_46(); break;
    case 47: ag_rp_47(); break;
    case 48: ag_rp_48(); break;
    case 49: ag_rp_49(); break;
    case 50: ag_rp_50(); break;
    case 51: ag_rp_51(); break;
    case 52: ag_rp_52(); break;
    case 53: ag_rp_53(); break;
    case 54: ag_rp_54(); break;
    case 55: ag_rp_55(); break;
    case 56: ag_rp_56(); break;
    case 57: ag_rp_57(); break;
    case 58: ag_rp_58(); break;
    case 59: ag_rp_59(); break;
    case 60: ag_rp_60(); break;
    case 61: ag_rp_61(); break;
    case 62: ag_rp_62(); break;
    case 63: ag_rp_63(); break;
    case 64: ag_rp_64(); break;
    case 65: ag_rp_65(); break;
    case 66: ag_rp_66(); break;
    case 67: ag_rp_67(); break;
    case 68: ag_rp_68(); break;
    case 69: ag_rp_69(V(0,(char * *))); break;
    case 70: ag_rp_70(V(-1,(char * *))); break;
    case 71: ag_rp_71(V(2,(char * *))); break;
    case 72: ag_rp_72(V(-1,(char * *))); break;
    case 73: ag_rp_73(V(2,(char * *))); break;
    case 74: ag_rp_74(V(-1,(char * *))); break;
    case 75: ag_rp_75(V(2,(char * *))); break;
    case 76: ag_rp_76(V(-2,(char * *))); break;
    case 77: ag_rp_77(V(0,(char * *))); break;
    case 78: ag_rp_78(V(-2,(char * *))); break;
    case 79: ag_rp_79(V(-5,(char * *))); break;
    case 80: ag_rp_80(V(2,(char * *))); break;
    case 81: ag_rp_81(V(-2,(char * *))); break;
    case 82: ag_rp_82(V(-5,(char * *))); break;
    case 83: ag_rp_83(V(2,(char * *))); break;
    case 84: ag_rp_84(V(-2,(char * *))); break;
    case 85: ag_rp_85(V(-5,(char * *))); break;
    case 86: ag_rp_86(V(2,(char * *))); break;
    case 87: ag_rp_87(); break;
    case 88: ag_rp_88(V(0,(char * *))); break;
    case 89: ag_rp_89(V(0,(char * *))); break;
    case 90: ag_rp_90(V(-2,(char * *))); break;
    case 91: ag_rp_91(V(0,(char * *))); break;
    case 92: ag_rp_92(); break;
    case 93: ag_rp_93(); break;
    case 94: ag_rp_94(); break;
    case 95: ag_rp_95(); break;
    case 96: ag_rp_96(); break;
    case 97: ag_rp_97(); break;
    case 98: ag_rp_98(); break;
    case 99: ag_rp_99(); break;
    case 100: ag_rp_100(); break;
    case 101: ag_rp_101(); break;
    case 102: ag_rp_102(); break;
    case 103: ag_rp_103(); break;
    case 104: ag_rp_104(); break;
    case 105: ag_rp_105(); break;
    case 106: ag_rp_106(); break;
    case 107: ag_rp_107(); break;
    case 108: ag_rp_108(V(0,(char * *))); break;
    case 109: ag_rp_109(V(-2,(char * *))); break;
    case 110: ag_rp_110(V(0,(char * *))); break;
    case 111: ag_rp_111(V(0,(double *))); break;
    case 112: ag_rp_112(V(0,(char * *))); break;
    case 113: ag_rp_113(V(-2,(char * *))); break;
    case 114: ag_rp_114(V(0,(char * *))); break;
    case 115: ag_rp_115(); break;
    case 116: ag_rp_116(); break;
    case 117: ag_rp_117(); break;
    case 118: ag_rp_118(); break;
    case 119: ag_rp_119(); break;
    case 120: ag_rp_120(); break;
    case 121: ag_rp_121(); break;
    case 122: ag_rp_122(); break;
    case 123: ag_rp_123(); break;
    case 124: ag_rp_124(); break;
    case 125: ag_rp_125(); break;
    case 126: ag_rp_126(); break;
    case 127: ag_rp_127(); break;
    case 128: ag_rp_128(); break;
    case 129: ag_rp_129(); break;
    case 130: ag_rp_130(); break;
    case 131: ag_rp_131(); break;
    case 132: ag_rp_132(); break;
    case 133: ag_rp_133(); break;
    case 134: ag_rp_134(); break;
    case 135: ag_rp_135(); break;
    case 136: ag_rp_136(); break;
    case 137: ag_rp_137(); break;
    case 138: ag_rp_138(); break;
    case 139: ag_rp_139(); break;
    case 140: ag_rp_140(); break;
    case 141: ag_rp_141(); break;
    case 142: ag_rp_142(); break;
    case 143: ag_rp_143(); break;
    case 144: ag_rp_144(); break;
    case 145: ag_rp_145(); break;
    case 146: ag_rp_146(); break;
    case 147: V(0,(double *)) = ag_rp_147(V(0,(double *))); break;
    case 148: V(0,(double *)) = ag_rp_148(V(1,(double *))); break;
    case 149: V(0,(double *)) = ag_rp_149(V(1,(double *))); break;
    case 150: V(0,(int *)) = ag_rp_150(V(0,(char * *))); break;
    case 151: V(0,(char * *)) = ag_rp_151(V(0,(char * *))); break;
    case 152: V(0,(char * *)) = ag_rp_152(V(0,(char * *))); break;
    case 153: ag_rp_153(V(-2,(char * *))); break;
    case 154: ag_rp_154(V(0,(char * *))); break;
    case 155: ag_rp_155(V(-2,(char * *))); break;
    case 156: ag_rp_156(V(2,(char * *))); break;
    case 157: ag_rp_157(V(-2,(char * *))); break;
    case 158: ag_rp_158(V(0,(char * *))); break;
    case 159: ag_rp_159(V(-2,(char * *))); break;
    case 160: ag_rp_160(V(2,(char * *))); break;
    case 161: ag_rp_161(); break;
    case 162: ag_rp_162(); break;
    case 163: ag_rp_163(V(-3,(char * *))); break;
    case 164: ag_rp_164(V(-7,(char * *)), V(-1,(double *))); break;
    case 165: ag_rp_165(V(-10,(char * *)), V(-4,(double *))); break;
    case 166: ag_rp_166(V(1,(char * *)), V(7,(double *))); break;
    case 167: ag_rp_167(); break;
    case 168: V(0,(double *)) = ag_rp_168(); break;
    case 169: V(0,(double *)) = ag_rp_169(V(1,(double *))); break;
    case 170: ag_rp_170(); break;
    case 171: ag_rp_171(V(0,(char * *))); break;
    case 172: ag_rp_172(); break;
    case 173: ag_rp_173(); break;
    case 174: ag_rp_174(); break;
    case 175: ag_rp_175(); break;
    case 176: ag_rp_176(); break;
    case 177: ag_rp_177(); break;
    case 178: ag_rp_178(); break;
    case 179: ag_rp_179(); break;
    case 180: ag_rp_180(); break;
    case 181: ag_rp_181(); break;
    case 182: ag_rp_182(); break;
    case 183: ag_rp_183(); break;
    case 184: ag_rp_184(); break;
    case 185: ag_rp_185(); break;
    case 186: ag_rp_186(); break;
    case 187: ag_rp_187(); break;
    case 188: ag_rp_188(); break;
    case 189: ag_rp_189(); break;
    case 190: ag_rp_190(V(0,(char * *))); break;
    case 191: ag_rp_191(V(-2,(char * *))); break;
    case 192: ag_rp_192(V(0,(char * *))); break;
    case 193: ag_rp_193(V(0,(char * *))); break;
    case 194: ag_rp_194(V(-2,(char * *))); break;
    case 195: ag_rp_195(V(0,(char * *))); break;
    case 196: ag_rp_196(V(0,(char * *))); break;
    case 197: ag_rp_197(V(-2,(char * *))); break;
    case 198: ag_rp_198(V(0,(char * *))); break;
    case 199: ag_rp_199(V(0,(char * *))); break;
    case 200: ag_rp_200(V(-2,(char * *))); break;
    case 201: ag_rp_201(V(0,(char * *))); break;
    case 202: ag_rp_202(V(0,(char * *))); break;
    case 203: ag_rp_203(V(0,(double *))); break;
    case 204: ag_rp_204(V(2,(char * *))); break;
    case 205: ag_rp_205(V(2,(double *))); break;
    case 206: ag_rp_206(); break;
    case 207: ag_rp_207(); break;
    case 208: ag_rp_208(); break;
    case 209: ag_rp_209(); break;
    case 210: ag_rp_210(); break;
    case 211: ag_rp_211(); break;
    case 212: ag_rp_212(); break;
    case 213: ag_rp_213(); break;
    case 214: ag_rp_214(); break;
    case 215: ag_rp_215(); break;
    case 216: ag_rp_216(); break;
    case 217: ag_rp_217(); break;
    case 218: ag_rp_218(V(0,(char * *))); break;
    case 219: ag_rp_219(); break;
    case 220: ag_rp_220(V(1,(int *))); break;
    case 221: V(0,(int *)) = ag_rp_221(V(1,(int *))); break;
    case 222: V(0,(int *)) = ag_rp_222(V(0,(int *))); break;
    case 223: ag_rp_223(); break;
    case 224: ag_rp_224(V(0,(char * *))); break;
    case 225: ag_rp_225(V(2,(char * *))); break;
    case 226: ag_rp_226(V(0,(char * *))); break;
    case 227: ag_rp_227(V(2,(char * *))); break;
  }
}

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

};

#ifndef MISSING_FORMAT
#define MISSING_FORMAT "Missing %s"
#endif
#ifndef UNEXPECTED_FORMAT
#define UNEXPECTED_FORMAT "Unexpected %s"
#endif
#ifndef UNNAMED_TOKEN
#define UNNAMED_TOKEN "input"
#endif


static void ag_diagnose(void) {
  int ag_snd = (PCB).sn;
  int ag_k = ag_sbt[ag_snd];

  if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) {
    sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
  }
  else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8
          && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1
          && *TOKEN_NAMES[ag_tstt[ag_k]]) {
    sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
  }
  else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) {
    sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]);
  }
  else if (isprint((*(PCB).lab)) && (*(PCB).lab) != '\\') {
    char buf[20];
    sprintf(buf, "\'%c\'", (char) (*(PCB).lab));
    sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf);
  }
  else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN);
  (PCB).error_message = (PCB).ag_msg;


}
static int ag_action_1_r_proc(void);
static int ag_action_2_r_proc(void);
static int ag_action_3_r_proc(void);
static int ag_action_4_r_proc(void);
static int ag_action_1_s_proc(void);
static int ag_action_3_s_proc(void);
static int ag_action_1_proc(void);
static int ag_action_2_proc(void);
static int ag_action_3_proc(void);
static int ag_action_4_proc(void);
static int ag_action_5_proc(void);
static int ag_action_6_proc(void);
static int ag_action_7_proc(void);
static int ag_action_8_proc(void);
static int ag_action_9_proc(void);
static int ag_action_10_proc(void);
static int ag_action_11_proc(void);
static int ag_action_8_proc(void);


static int (*const  ag_r_procs_scan[])(void) = {
  ag_action_1_r_proc,
  ag_action_2_r_proc,
  ag_action_3_r_proc,
  ag_action_4_r_proc
};

static int (*const  ag_s_procs_scan[])(void) = {
  ag_action_1_s_proc,
  ag_action_2_r_proc,
  ag_action_3_s_proc,
  ag_action_4_r_proc
};

static int (*const  ag_gt_procs_scan[])(void) = {
  ag_action_1_proc,
  ag_action_2_proc,
  ag_action_3_proc,
  ag_action_4_proc,
  ag_action_5_proc,
  ag_action_6_proc,
  ag_action_7_proc,
  ag_action_8_proc,
  ag_action_9_proc,
  ag_action_10_proc,
  ag_action_11_proc,
  ag_action_8_proc
};


static int ag_action_10_proc(void) {
  int ag_t = (PCB).token_number;
  (PCB).btsx = 0, (PCB).drt = -1;
  do {
    ag_track();
    if ((PCB).rx < (PCB).fx) {
      (PCB).input_code = (PCB).lab[(PCB).rx++];
      (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);}
    else {
      GET_INPUT;
      (PCB).lab[(PCB).fx++] = (PCB).input_code;
      (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);
      (PCB).rx++;
    }
    if (ag_key_index[(PCB).sn]) {
      unsigned ag_k = ag_key_index[(PCB).sn];
      int ag_ch = CONVERT_CASE((PCB).input_code);
      if (ag_ch < 255) {
        while (ag_key_ch[ag_k] < ag_ch) ag_k++;
        if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
      }
    }
  } while ((PCB).token_number == (parseBasic_token_type) ag_t);
  (PCB).rx = 0;
  return 1;
}

static int ag_action_11_proc(void) {
  int ag_t = (PCB).token_number;

  (PCB).btsx = 0, (PCB).drt = -1;
  do {
    (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
    (PCB).ssx--;
    ag_track();
    ag_ra();
    if ((PCB).exit_flag != AG_RUNNING_CODE) return 0;
    (PCB).ssx++;
    if ((PCB).rx < (PCB).fx) {
      (PCB).input_code = (PCB).lab[(PCB).rx++];
      (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);}
    else {
      GET_INPUT;
      (PCB).lab[(PCB).fx++] = (PCB).input_code;
      (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);
      (PCB).rx++;
    }
    if (ag_key_index[(PCB).sn]) {
      unsigned ag_k = ag_key_index[(PCB).sn];
      int ag_ch = CONVERT_CASE((PCB).input_code);
      if (ag_ch < 255) {
        while (ag_key_ch[ag_k] < ag_ch) ag_k++;
        if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
      }
    }
  }
  while ((PCB).token_number == (parseBasic_token_type) ag_t);
  (PCB).rx = 0;
  return 1;
}

static int ag_action_3_r_proc(void) {
  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
  (PCB).btsx = 0, (PCB).drt = -1;
  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
  ag_ra();
  return (PCB).exit_flag == AG_RUNNING_CODE;
}

static int ag_action_3_s_proc(void) {
  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
  (PCB).btsx = 0, (PCB).drt = -1;
  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
  ag_ra();
  return (PCB).exit_flag == AG_RUNNING_CODE;
}

static int ag_action_4_r_proc(void) {
  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
  return 1;
}

static int ag_action_2_proc(void) {
  (PCB).btsx = 0, (PCB).drt = -1;
  if ((PCB).ssx >= 128) {
    (PCB).exit_flag = AG_STACK_ERROR_CODE;
    PARSER_STACK_OVERFLOW;
  }
  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
  (PCB).ss[(PCB).ssx] = (PCB).sn;
  (PCB).ssx++;
  (PCB).sn = (PCB).ag_ap;
  ag_track();
  return 0;
}

static int ag_action_9_proc(void) {
  if ((PCB).drt == -1) {
    (PCB).drt=(PCB).token_number;
    (PCB).dssx=(PCB).ssx;
    (PCB).dsn=(PCB).sn;
  }
  ag_prot();
  (PCB).vs[(PCB).ssx] = ag_null_value;
  (PCB).ss[(PCB).ssx] = (PCB).sn;
  (PCB).ssx++;
  (PCB).sn = (PCB).ag_ap;
  (PCB).rx = 0;
  return (PCB).exit_flag == AG_RUNNING_CODE;
}

static int ag_action_2_r_proc(void) {
  (PCB).ssx++;
  (PCB).sn = (PCB).ag_ap;
  return 0;
}

static int ag_action_7_proc(void) {
  --(PCB).ssx;
  (PCB).rx = 0;
  (PCB).exit_flag = AG_SUCCESS_CODE;
  return 0;
}

static int ag_action_1_proc(void) {
  ag_track();
  (PCB).exit_flag = AG_SUCCESS_CODE;
  return 0;
}

static int ag_action_1_r_proc(void) {
  (PCB).exit_flag = AG_SUCCESS_CODE;
  return 0;
}

static int ag_action_1_s_proc(void) {
  (PCB).exit_flag = AG_SUCCESS_CODE;
  return 0;
}

static int ag_action_4_proc(void) {
  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
  (PCB).btsx = 0, (PCB).drt = -1;
  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
  else (PCB).ss[(PCB).ssx] = (PCB).sn;
  ag_track();
  while ((PCB).exit_flag == AG_RUNNING_CODE) {
    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
    do {
      unsigned ag_tx = (ag_t1 + ag_t2)/2;
      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
      else ag_t2 = ag_tx;
    } while (ag_t1 < ag_t2);
    (PCB).ag_ap = ag_pstt[ag_t1];
    if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
  }
  return 0;
}

static int ag_action_3_proc(void) {
  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
  (PCB).btsx = 0, (PCB).drt = -1;
  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
  else (PCB).ss[(PCB).ssx] = (PCB).sn;
  ag_track();
  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
  ag_ra();
  while ((PCB).exit_flag == AG_RUNNING_CODE) {
    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
    do {
      unsigned ag_tx = (ag_t1 + ag_t2)/2;
      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
      else ag_t2 = ag_tx;
    } while (ag_t1 < ag_t2);
    (PCB).ag_ap = ag_pstt[ag_t1];
    if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
  }
  return 0;
}

static int ag_action_8_proc(void) {
  ag_undo();
  (PCB).rx = 0;
  (PCB).exit_flag = AG_SYNTAX_ERROR_CODE;
  ag_diagnose();
  SYNTAX_ERROR;
  {(PCB).rx = 1; ag_track();}
  return (PCB).exit_flag == AG_RUNNING_CODE;
}

static int ag_action_5_proc(void) {
  int ag_sd = ag_fl[(PCB).ag_ap];
  (PCB).btsx = 0, (PCB).drt = -1;
  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
  else {
    (PCB).ss[(PCB).ssx] = (PCB).sn;
  }
  (PCB).rx = 0;
  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
  ag_ra();
  while ((PCB).exit_flag == AG_RUNNING_CODE) {
    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
    do {
      unsigned ag_tx = (ag_t1 + ag_t2)/2;
      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
      else ag_t2 = ag_tx;
    } while (ag_t1 < ag_t2);
    (PCB).ag_ap = ag_pstt[ag_t1];
    if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
  }
  return (PCB).exit_flag == AG_RUNNING_CODE;
}

static int ag_action_6_proc(void) {
  int ag_sd = ag_fl[(PCB).ag_ap];
  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
  if ((PCB).drt == -1) {
    (PCB).drt=(PCB).token_number;
    (PCB).dssx=(PCB).ssx;
    (PCB).dsn=(PCB).sn;
  }
  if (ag_sd) {
    (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
  }
  else {
    ag_prot();
    (PCB).vs[(PCB).ssx] = ag_null_value;
    (PCB).ss[(PCB).ssx] = (PCB).sn;
  }
  (PCB).rx = 0;
  while ((PCB).exit_flag == AG_RUNNING_CODE) {
    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
    do {
      unsigned ag_tx = (ag_t1 + ag_t2)/2;
      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
      else ag_t2 = ag_tx;
    } while (ag_t1 < ag_t2);
    (PCB).ag_ap = ag_pstt[ag_t1];
    if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
  }
  return (PCB).exit_flag == AG_RUNNING_CODE;
}


void init_parseBasic(void) {
  (PCB).rx = (PCB).fx = 0;
  (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0;
  (PCB).exit_flag = AG_RUNNING_CODE;
  (PCB).line = FIRST_LINE;
  (PCB).column = FIRST_COLUMN;
  (PCB).btsx = 0, (PCB).drt = -1;
}

void parseBasic(void) {
  init_parseBasic();
  (PCB).exit_flag = AG_RUNNING_CODE;
  while ((PCB).exit_flag == AG_RUNNING_CODE) {
    unsigned ag_t1 = ag_sbt[(PCB).sn];
    if (ag_tstt[ag_t1]) {
      unsigned ag_t2 = ag_sbe[(PCB).sn] - 1;
      if ((PCB).rx < (PCB).fx) {
        (PCB).input_code = (PCB).lab[(PCB).rx++];
        (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);}
      else {
        GET_INPUT;
        (PCB).lab[(PCB).fx++] = (PCB).input_code;
        (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);
        (PCB).rx++;
      }
      if (ag_key_index[(PCB).sn]) {
        unsigned ag_k = ag_key_index[(PCB).sn];
        int ag_ch = CONVERT_CASE((PCB).input_code);
        if (ag_ch < 255) {
          while (ag_key_ch[ag_k] < ag_ch) ag_k++;
          if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
        }
      }
      do {
        unsigned ag_tx = (ag_t1 + ag_t2)/2;
        if (ag_tstt[ag_tx] > (unsigned short)(PCB).token_number)
          ag_t1 = ag_tx + 1;
        else ag_t2 = ag_tx;
      } while (ag_t1 < ag_t2);
      if (ag_tstt[ag_t1] != (unsigned short)(PCB).token_number)
        ag_t1 = ag_sbe[(PCB).sn];
    }
    (PCB).ag_ap = ag_pstt[ag_t1];
    (ag_gt_procs_scan[ag_astt[ag_t1]])();
  }
}