diff tests/agcl/contrib/good/yabasic.c @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/agcl/contrib/good/yabasic.c	Sat Dec 22 17:52:45 2007 -0500
@@ -0,0 +1,5737 @@
+/*
+     YABASIC --- a tiny integrated Basic Compiler/Interpreter
+
+     BISON - part
+
+     this Program is subject to the GNU General Public License;
+     see the file yabasic.c for details.
+*/
+
+
+//#undef WINDOWS
+#include "yabasic.h"     /* definitions of yabasic */
+#include <malloc.h>
+
+#if HAVE_ALLOCA_H
+#include <alloca.h>
+#endif
+
+void __yy_bcopy(char *,char *,int); /* prototype missing */
+
+int yylineno=1;
+int yylex(void);
+
+char *popString(int);
+void pushChar(int);
+
+
+/*
+ * AnaGram, A System for Syntax Directed Programming
+ * File generated by: ...
+ *
+ * AnaGram Parsing Engine
+ * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ */
+
+#ifndef YABASIC_H
+#include "yabasic.h"
+#endif
+
+#ifndef YABASIC_H
+#error Mismatched header file
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+
+#define RULE_CONTEXT (&((PCB).cs[(PCB).ssx]))
+#define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx])
+#define CONTEXT ((PCB).cs[(PCB).ssx])
+
+
+
+parseBasic_pcb_type parseBasic_pcb;
+#define PCB parseBasic_pcb
+
+#line - "yabasic.syn"
+#define CHAR_STACK_LENGTH 500
+
+static char  charStack[CHAR_STACK_LENGTH+1];
+static char *charStackTop = charStack;
+
+/* Define an error record */
+typedef struct {
+  char *message;                 /* identifies error */
+  int line;                      /* location of error */
+  int column;
+} ErrorRecord;
+
+ErrorRecord errorRecord;           /* define an error record */
+
+void diagnoseError(char *msg) {
+  if (parseBasic_pcb.exit_flag == AG_RUNNING_CODE)
+    parseBasic_pcb.exit_flag = AG_SEMANTIC_ERROR_CODE;      /* stop parse */
+  errorRecord.message = msg;
+  errorRecord.line    = parseBasic_pcb.line;
+  errorRecord.column  = parseBasic_pcb.column;
+}
+
+void pushChar(int c) {              /* append char to name string */
+  if (charStackTop < charStack+CHAR_STACK_LENGTH) {
+    *charStackTop++ = (char) c;
+    return;
+  }
+  /* buffer overflow, kill parse and issue diagnostic */
+  diagnoseError("Character Stack Overflow");
+}
+
+static char *popString(int nChars) {                /* get string */
+  *charStackTop = 0;
+  return charStackTop -= nChars;
+}
+
+FILE *parserInputFile;
+void switch_to_my_file(FILE *inputfile) /* switches lex input to given file */
+{
+  parserInputFile = inputfile;
+  return;
+}
+
+#define GET_INPUT ((PCB).input_code = fgetc(parserInputFile))
+
+int yyparse() {
+  parseBasic();
+  return !(PCB.exit_flag == AG_SUCCESS_CODE);
+}
+
+
+#line - "yabasic.c"
+
+#ifndef CONVERT_CASE
+
+static const char agCaseTable[31] = {
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,    0,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
+};
+
+static int agConvertCase(int c) {
+  if (c >= 'a' && c <= 'z') return c ^= 0x20;
+  if (c >= 0xe0 && c < 0xff) c ^= agCaseTable[c-0xe0];
+  return c;
+}
+
+#define CONVERT_CASE(c) agConvertCase(c)
+
+#endif
+
+
+#ifndef TAB_SPACING
+#define TAB_SPACING 8
+#endif
+
+static void ag_rp_1(void) {
+#line - "yabasic.syn"
+     yylineno++;
+     if (interactive) PCB.exit_flag = AG_SUCCESS_CODE;
+     return;
+ 
+#line - "yabasic.c"
+}
+
+#define ag_rp_2(x, e) (x*pow(10,e))
+
+#define ag_rp_3(x, e) (x*pow(10,-e))
+
+#define ag_rp_4(i, f) (i+f)
+
+#define ag_rp_5(f) (f)
+
+#define ag_rp_6(d) (d-'0')
+
+#define ag_rp_7(x, d) (10*x + d-'0')
+
+#define ag_rp_8(d) ((d-'0')/10.)
+
+#define ag_rp_9(d, f) ((d-'0' + f)/10.)
+
+#define ag_rp_10(d) (d-'0')
+
+#define ag_rp_11(x, d) (10*x + d-'0')
+
+#define ag_rp_12(c) (pushChar(c), 1)
+
+#define ag_rp_13(k, c) (pushChar(c), k+1)
+
+#define ag_rp_14(k) (strdup(popString(k)))
+
+#define ag_rp_15(k) (pushChar('$'), strdup(popString(k+1)))
+
+#define ag_rp_16(k) (strdup(popString(k)))
+
+#define ag_rp_17(d) (pushChar(d), 1)
+
+#define ag_rp_18(k, d) (pushChar(d), k+1)
+
+#define ag_rp_19(k) (strdup(popString(k)))
+
+#define ag_rp_20(k) (strdup(popString(k)))
+
+#define ag_rp_21() (0)
+
+#define ag_rp_22(k, c) (pushChar(c), k+1)
+
+#define ag_rp_23(k) (pushChar('"'), k+1)
+
+#define ag_rp_24() (end_of_file = TRUE)
+
+#define ag_rp_25(s) (create_label(s))
+
+#define ag_rp_26(s) (create_label(s))
+
+static void ag_rp_27(char * s) {
+#line - "yabasic.syn"
+create_goto(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_28(char * s) {
+#line - "yabasic.syn"
+create_gosub(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_29(void) {
+#line - "yabasic.syn"
+create_exception(TRUE);
+#line - "yabasic.c"
+}
+
+static void ag_rp_30(void) {
+#line - "yabasic.syn"
+create_exception(FALSE);
+#line - "yabasic.c"
+}
+
+static void ag_rp_31(void) {
+#line - "yabasic.syn"
+create_skipper();
+#line - "yabasic.c"
+}
+
+static void ag_rp_32(void) {
+#line - "yabasic.syn"
+create_nop();
+#line - "yabasic.c"
+}
+
+static void ag_rp_33(void) {
+#line - "yabasic.syn"
+create_skipper();
+#line - "yabasic.c"
+}
+
+static void ag_rp_34(void) {
+#line - "yabasic.syn"
+create_nop();
+#line - "yabasic.c"
+}
+
+static void ag_rp_35(int n) {
+#line - "yabasic.syn"
+create_myopen(n,'+');
+#line - "yabasic.c"
+}
+
+static void ag_rp_36(int n) {
+#line - "yabasic.syn"
+create_myopen(n,'-');
+#line - "yabasic.c"
+}
+
+static void ag_rp_37(int n) {
+#line - "yabasic.syn"
+create_myclose(n);
+#line - "yabasic.c"
+}
+
+static void ag_rp_38(void) {
+#line - "yabasic.syn"
+create_revert(FALSE);
+#line - "yabasic.c"
+}
+
+#define ag_rp_39() (lastinput->args=0)
+
+#define ag_rp_40() (create_restore(""))
+
+#define ag_rp_41(s) (create_restore(s))
+
+static void ag_rp_42(void) {
+#line - "yabasic.syn"
+create_return();
+#line - "yabasic.c"
+}
+
+#define ag_rp_43() (create_openwin(FALSE))
+
+static void ag_rp_44(void) {
+#line - "yabasic.syn"
+create_openwin(TRUE);
+#line - "yabasic.c"
+}
+
+#define ag_rp_45() (create_dot())
+
+#define ag_rp_46() (create_line('l'))
+
+#define ag_rp_47() (create_circle())
+
+#define ag_rp_48() (create_text(TRUE))
+
+#define ag_rp_49() (create_text(FALSE))
+
+#define ag_rp_50() (create_makemap())
+
+#define ag_rp_51() (create_line('a'))
+
+#define ag_rp_52() (create_tick(1))
+
+#define ag_rp_53() (create_tick(3))
+
+#define ag_rp_54() (create_tick(0))
+
+#define ag_rp_55() (create_tick(2))
+
+#define ag_rp_56() (create_closewin())
+
+#define ag_rp_57() (create_clearwin())
+
+#define ag_rp_58() (create_clearscreen())
+
+#define ag_rp_59() (create_openprinter(0))
+
+#define ag_rp_60() (create_openprinter(1))
+
+#define ag_rp_61() (create_closeprinter())
+
+#define ag_rp_62() (create_mywait())
+
+#define ag_rp_63() (create_bell())
+
+static void ag_rp_64(void) {
+#line - "yabasic.syn"
+create_function(MYINKEY); create_popstrsym(NULL);
+#line - "yabasic.c"
+}
+
+static void ag_rp_65(void) {
+#line - "yabasic.syn"
+create_function(MYSYSTEM2);
+	create_popdblsym(NULL);
+#line - "yabasic.c"
+}
+
+static void ag_rp_66(void) {
+#line - "yabasic.syn"
+create_poke('s');
+#line - "yabasic.c"
+}
+
+static void ag_rp_67(void) {
+#line - "yabasic.syn"
+create_poke('d');
+#line - "yabasic.c"
+}
+
+static void ag_rp_68(void) {
+#line - "yabasic.syn"
+create_myend();
+#line - "yabasic.c"
+}
+
+static void ag_rp_69(char * s) {
+#line - "yabasic.syn"
+create_popstrsym(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_70(char * s) {
+#line - "yabasic.syn"
+create_pushstrptr(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_71(char * s) {
+#line - "yabasic.syn"
+create_changestring(MYMID);
+#line - "yabasic.c"
+}
+
+static void ag_rp_72(char * s) {
+#line - "yabasic.syn"
+create_pushstrptr(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_73(char * s) {
+#line - "yabasic.syn"
+create_changestring(MYLEFT);
+#line - "yabasic.c"
+}
+
+static void ag_rp_74(char * s) {
+#line - "yabasic.syn"
+create_pushstrptr(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_75(char * s) {
+#line - "yabasic.syn"
+create_changestring(MYRIGHT);
+#line - "yabasic.c"
+}
+
+static void ag_rp_76(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_77(char * s) {
+#line - "yabasic.syn"
+create_doarray(s,ASSIGNSTRINGARRAY);
+#line - "yabasic.c"
+}
+
+static void ag_rp_78(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_79(char * s) {
+#line - "yabasic.syn"
+create_doarray(s,GETSTRINGPOINTER);
+#line - "yabasic.c"
+}
+
+static void ag_rp_80(char * s) {
+#line - "yabasic.syn"
+create_changestring(MYMID);
+#line - "yabasic.c"
+}
+
+static void ag_rp_81(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_82(char * s) {
+#line - "yabasic.syn"
+create_doarray(s,GETSTRINGPOINTER);
+#line - "yabasic.c"
+}
+
+static void ag_rp_83(char * s) {
+#line - "yabasic.syn"
+create_changestring(MYLEFT);
+#line - "yabasic.c"
+}
+
+static void ag_rp_84(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_85(char * s) {
+#line - "yabasic.syn"
+create_doarray(s,GETSTRINGPOINTER);
+#line - "yabasic.c"
+}
+
+static void ag_rp_86(char * s) {
+#line - "yabasic.syn"
+create_changestring(MYRIGHT);
+#line - "yabasic.c"
+}
+
+static void ag_rp_87(void) {
+#line - "yabasic.syn"
+create_concat();
+#line - "yabasic.c"
+}
+
+static void ag_rp_88(char * s) {
+#line - "yabasic.syn"
+create_pushstrsym(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_89(char * s) {
+#line - "yabasic.syn"
+if (s==NULL) {error(ERROR,"String not terminated");create_pushstr("");} else {create_pushstr(s);}
+#line - "yabasic.c"
+}
+
+static void ag_rp_90(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_91(char * s) {
+#line - "yabasic.syn"
+create_doarray(s,CALLSTRINGARRAY);
+#line - "yabasic.c"
+}
+
+static void ag_rp_92(void) {
+#line - "yabasic.syn"
+create_function(MYLEFT);
+#line - "yabasic.c"
+}
+
+static void ag_rp_93(void) {
+#line - "yabasic.syn"
+create_function(MYRIGHT);
+#line - "yabasic.c"
+}
+
+static void ag_rp_94(void) {
+#line - "yabasic.syn"
+create_function(MYMID);
+#line - "yabasic.c"
+}
+
+static void ag_rp_95(void) {
+#line - "yabasic.syn"
+create_function(MYSTR);
+#line - "yabasic.c"
+}
+
+static void ag_rp_96(void) {
+#line - "yabasic.syn"
+create_function(MYSTR2);
+#line - "yabasic.c"
+}
+
+static void ag_rp_97(void) {
+#line - "yabasic.syn"
+create_function(MYINKEY);
+#line - "yabasic.c"
+}
+
+static void ag_rp_98(void) {
+#line - "yabasic.syn"
+create_function(MYCHR);
+#line - "yabasic.c"
+}
+
+static void ag_rp_99(void) {
+#line - "yabasic.syn"
+create_function(MYUPPER);
+#line - "yabasic.c"
+}
+
+static void ag_rp_100(void) {
+#line - "yabasic.syn"
+create_function(MYLOWER);
+#line - "yabasic.c"
+}
+
+static void ag_rp_101(void) {
+#line - "yabasic.syn"
+create_function(MYLTRIM);
+#line - "yabasic.c"
+}
+
+static void ag_rp_102(void) {
+#line - "yabasic.syn"
+create_function(MYRTRIM);
+#line - "yabasic.c"
+}
+
+static void ag_rp_103(void) {
+#line - "yabasic.syn"
+create_function(MYTRIM);
+#line - "yabasic.c"
+}
+
+static void ag_rp_104(void) {
+#line - "yabasic.syn"
+create_function(MYSYSTEM);
+#line - "yabasic.c"
+}
+
+static void ag_rp_105(void) {
+#line - "yabasic.syn"
+create_function(MYDATE);
+#line - "yabasic.c"
+}
+
+static void ag_rp_106(void) {
+#line - "yabasic.syn"
+create_function(MYTIME);
+#line - "yabasic.c"
+}
+
+static void ag_rp_107(void) {
+#line - "yabasic.syn"
+create_function(MYPEEK2);
+#line - "yabasic.c"
+}
+
+static void ag_rp_108(char * s) {
+#line - "yabasic.syn"
+create_popdblsym(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_109(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_110(char * s) {
+#line - "yabasic.syn"
+create_doarray(s,ASSIGNARRAY);
+#line - "yabasic.c"
+}
+
+#define ag_rp_111(n) (create_pushdbl(n))
+
+#define ag_rp_112(s) (create_pushdblsym(s))
+
+#define ag_rp_113(s) (pushcounter())
+
+static void ag_rp_114(char * s) {
+#line - "yabasic.syn"
+create_doarray(s,CALLARRAY);
+#line - "yabasic.c"
+}
+
+static void ag_rp_115(void) {
+#line - "yabasic.syn"
+create_negate();
+#line - "yabasic.c"
+}
+
+static void ag_rp_116(void) {
+#line - "yabasic.syn"
+create_dblbin('^');
+#line - "yabasic.c"
+}
+
+static void ag_rp_117(void) {
+#line - "yabasic.syn"
+create_dblbin('*');
+#line - "yabasic.c"
+}
+
+static void ag_rp_118(void) {
+#line - "yabasic.syn"
+create_dblbin('/');
+#line - "yabasic.c"
+}
+
+static void ag_rp_119(void) {
+#line - "yabasic.syn"
+create_dblbin('+');
+#line - "yabasic.c"
+}
+
+static void ag_rp_120(void) {
+#line - "yabasic.syn"
+create_dblbin('-');
+#line - "yabasic.c"
+}
+
+static void ag_rp_121(void) {
+#line - "yabasic.syn"
+create_map();
+#line - "yabasic.c"
+}
+
+static void ag_rp_122(void) {
+#line - "yabasic.syn"
+create_function(MYSIN);
+#line - "yabasic.c"
+}
+
+static void ag_rp_123(void) {
+#line - "yabasic.syn"
+create_function(MYASIN);
+#line - "yabasic.c"
+}
+
+static void ag_rp_124(void) {
+#line - "yabasic.syn"
+create_function(MYCOS);
+#line - "yabasic.c"
+}
+
+static void ag_rp_125(void) {
+#line - "yabasic.syn"
+create_function(MYACOS);
+#line - "yabasic.c"
+}
+
+static void ag_rp_126(void) {
+#line - "yabasic.syn"
+create_function(MYTAN);
+#line - "yabasic.c"
+}
+
+static void ag_rp_127(void) {
+#line - "yabasic.syn"
+create_function(MYATAN);
+#line - "yabasic.c"
+}
+
+static void ag_rp_128(void) {
+#line - "yabasic.syn"
+create_function(MYATAN2);
+#line - "yabasic.c"
+}
+
+static void ag_rp_129(void) {
+#line - "yabasic.syn"
+create_function(MYEXP);
+#line - "yabasic.c"
+}
+
+static void ag_rp_130(void) {
+#line - "yabasic.syn"
+create_function(MYLOG);
+#line - "yabasic.c"
+}
+
+static void ag_rp_131(void) {
+#line - "yabasic.syn"
+create_function(MYSQRT);
+#line - "yabasic.c"
+}
+
+static void ag_rp_132(void) {
+#line - "yabasic.syn"
+create_function(MYINT);
+#line - "yabasic.c"
+}
+
+static void ag_rp_133(void) {
+#line - "yabasic.syn"
+create_function(MYFRAC);
+#line - "yabasic.c"
+}
+
+static void ag_rp_134(void) {
+#line - "yabasic.syn"
+create_function(MYMOD);
+#line - "yabasic.c"
+}
+
+static void ag_rp_135(void) {
+#line - "yabasic.syn"
+create_function(MYRAN);
+#line - "yabasic.c"
+}
+
+static void ag_rp_136(void) {
+#line - "yabasic.syn"
+create_function(MYRAN2);
+#line - "yabasic.c"
+}
+
+static void ag_rp_137(void) {
+#line - "yabasic.syn"
+create_function(MYMIN);
+#line - "yabasic.c"
+}
+
+static void ag_rp_138(void) {
+#line - "yabasic.syn"
+create_function(MYMAX);
+#line - "yabasic.c"
+}
+
+static void ag_rp_139(void) {
+#line - "yabasic.syn"
+create_function(MYXMAP);
+#line - "yabasic.c"
+}
+
+static void ag_rp_140(void) {
+#line - "yabasic.syn"
+create_function(MYYMAP);
+#line - "yabasic.c"
+}
+
+static void ag_rp_141(void) {
+#line - "yabasic.syn"
+create_function(MYLEN);
+#line - "yabasic.c"
+}
+
+static void ag_rp_142(void) {
+#line - "yabasic.syn"
+create_function(MYVAL);
+#line - "yabasic.c"
+}
+
+static void ag_rp_143(void) {
+#line - "yabasic.syn"
+create_function(MYASC);
+#line - "yabasic.c"
+}
+
+static void ag_rp_144(void) {
+#line - "yabasic.syn"
+create_function(MYINSTR);
+#line - "yabasic.c"
+}
+
+static void ag_rp_145(void) {
+#line - "yabasic.syn"
+create_function(MYSYSTEM2);
+#line - "yabasic.c"
+}
+
+static void ag_rp_146(void) {
+#line - "yabasic.syn"
+create_function(MYPEEK);
+#line - "yabasic.c"
+}
+
+#define ag_rp_147(n) (n)
+
+#define ag_rp_148(n) (n)
+
+#define ag_rp_149(n) (-n)
+
+#define ag_rp_150(d) (atoi(d))
+
+#define ag_rp_151(s) (s)
+
+#define ag_rp_152(s) (s)
+
+static void ag_rp_153(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_154(char * s) {
+#line - "yabasic.syn"
+create_dim(s,'d');
+#line - "yabasic.c"
+}
+
+static void ag_rp_155(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_156(char * s) {
+#line - "yabasic.syn"
+create_dim(s,'d');
+#line - "yabasic.c"
+}
+
+static void ag_rp_157(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_158(char * s) {
+#line - "yabasic.syn"
+create_dim(s,'s');
+#line - "yabasic.c"
+}
+
+static void ag_rp_159(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_160(char * s) {
+#line - "yabasic.syn"
+create_dim(s,'s');
+#line - "yabasic.c"
+}
+
+static void ag_rp_161(void) {
+#line - "yabasic.syn"
+inccounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_162(void) {
+#line - "yabasic.syn"
+inccounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_163(char * s) {
+#line - "yabasic.syn"
+pushname(s);create_popdblsym(s);pushgoto();
+             create_pushdblsym(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_164(char * s, double p) {
+#line - "yabasic.syn"
+       create_dblrelop((p>0)?'{':'}');
+             create_decide();
+             pushlabel();
+#line - "yabasic.c"
+}
+
+static void ag_rp_165(char * s, double p) {
+#line - "yabasic.syn"
+             create_pushdbl(p);
+       create_pushdblsym(s);
+             create_dblbin('+');
+       create_popdblsym(s);
+             swap();popgoto();poplabel();
+#line - "yabasic.c"
+}
+
+static void ag_rp_166(char * s, double p) {
+#line - "yabasic.syn"
+/* cookie*/
+#line - "yabasic.c"
+}
+
+static void ag_rp_167(void) {
+#line - "yabasic.syn"
+end_of_file=TRUE;
+      error(ERROR,"'next'-statement is missing"); PCB.exit_flag = AG_SYNTAX_ERROR_CODE;
+#line - "yabasic.c"
+}
+
+#define ag_rp_168() (1.0)
+
+#define ag_rp_169(v) (v)
+
+static void ag_rp_170(void) {
+#line - "yabasic.syn"
+pop();
+#line - "yabasic.c"
+}
+
+static void ag_rp_171(char * s) {
+#line - "yabasic.syn"
+if (strcmp(pop()->pointer,s))
+             {error(ERROR,"'for' and 'next' do not match"); PCB.exit_flag = AG_SYNTAX_ERROR_CODE;}
+           
+#line - "yabasic.c"
+}
+
+static void ag_rp_172(void) {
+#line - "yabasic.syn"
+create_decide();pushlabel();
+#line - "yabasic.c"
+}
+
+static void ag_rp_173(void) {
+#line - "yabasic.syn"
+pushlabel();swap();poplabel();
+#line - "yabasic.c"
+}
+
+static void ag_rp_174(void) {
+#line - "yabasic.syn"
+poplabel();
+#line - "yabasic.c"
+}
+
+static void ag_rp_175(void) {
+#line - "yabasic.syn"
+end_of_file=TRUE;
+            error(ERROR,"'endif'-statement is missing"); PCB.exit_flag = AG_SYNTAX_ERROR_CODE;
+#line - "yabasic.c"
+}
+
+static void ag_rp_176(void) {
+#line - "yabasic.syn"
+create_boole('|');
+#line - "yabasic.c"
+}
+
+static void ag_rp_177(void) {
+#line - "yabasic.syn"
+create_boole('&');
+#line - "yabasic.c"
+}
+
+static void ag_rp_178(void) {
+#line - "yabasic.syn"
+create_strrelop('=');
+#line - "yabasic.c"
+}
+
+static void ag_rp_179(void) {
+#line - "yabasic.syn"
+create_strrelop('!');
+#line - "yabasic.c"
+}
+
+static void ag_rp_180(void) {
+#line - "yabasic.syn"
+create_strrelop('<');
+#line - "yabasic.c"
+}
+
+static void ag_rp_181(void) {
+#line - "yabasic.syn"
+create_strrelop('{');
+#line - "yabasic.c"
+}
+
+static void ag_rp_182(void) {
+#line - "yabasic.syn"
+create_strrelop('>');
+#line - "yabasic.c"
+}
+
+static void ag_rp_183(void) {
+#line - "yabasic.syn"
+create_strrelop('}');
+#line - "yabasic.c"
+}
+
+static void ag_rp_184(void) {
+#line - "yabasic.syn"
+create_dblrelop('=');
+#line - "yabasic.c"
+}
+
+static void ag_rp_185(void) {
+#line - "yabasic.syn"
+create_dblrelop('!');
+#line - "yabasic.c"
+}
+
+static void ag_rp_186(void) {
+#line - "yabasic.syn"
+create_dblrelop('<');
+#line - "yabasic.c"
+}
+
+static void ag_rp_187(void) {
+#line - "yabasic.syn"
+create_dblrelop('{');
+#line - "yabasic.c"
+}
+
+static void ag_rp_188(void) {
+#line - "yabasic.syn"
+create_dblrelop('>');
+#line - "yabasic.c"
+}
+
+static void ag_rp_189(void) {
+#line - "yabasic.syn"
+create_dblrelop('}');
+#line - "yabasic.c"
+}
+
+static void ag_rp_190(char * s) {
+#line - "yabasic.syn"
+create_myread('d');create_popdblsym(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_191(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_192(char * s) {
+#line - "yabasic.syn"
+create_myread('d');create_doarray(s,ASSIGNARRAY);
+#line - "yabasic.c"
+}
+
+static void ag_rp_193(char * s) {
+#line - "yabasic.syn"
+create_myread('s');create_popstrsym(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_194(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_195(char * s) {
+#line - "yabasic.syn"
+create_myread('s');create_doarray(s,ASSIGNSTRINGARRAY);
+#line - "yabasic.c"
+}
+
+static void ag_rp_196(char * s) {
+#line - "yabasic.syn"
+create_readdata('d');create_popdblsym(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_197(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_198(char * s) {
+#line - "yabasic.syn"
+create_readdata('d');create_doarray(s,ASSIGNARRAY);
+#line - "yabasic.c"
+}
+
+static void ag_rp_199(char * s) {
+#line - "yabasic.syn"
+create_readdata('s');create_popstrsym(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_200(char * s) {
+#line - "yabasic.syn"
+pushcounter();
+#line - "yabasic.c"
+}
+
+static void ag_rp_201(char * s) {
+#line - "yabasic.syn"
+create_readdata('s');create_doarray(s,ASSIGNSTRINGARRAY);
+#line - "yabasic.c"
+}
+
+static void ag_rp_202(char * s) {
+#line - "yabasic.syn"
+create_strdata(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_203(double v) {
+#line - "yabasic.syn"
+create_dbldata(v);
+#line - "yabasic.c"
+}
+
+static void ag_rp_204(char * s) {
+#line - "yabasic.syn"
+create_strdata(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_205(double v) {
+#line - "yabasic.syn"
+create_dbldata(v);
+#line - "yabasic.c"
+}
+
+static void ag_rp_206(void) {
+#line - "yabasic.syn"
+create_print('d');
+#line - "yabasic.c"
+}
+
+static void ag_rp_207(void) {
+#line - "yabasic.syn"
+create_print('d');
+#line - "yabasic.c"
+}
+
+static void ag_rp_208(void) {
+#line - "yabasic.syn"
+create_print('s');
+#line - "yabasic.c"
+}
+
+static void ag_rp_209(void) {
+#line - "yabasic.syn"
+create_print('s');
+#line - "yabasic.c"
+}
+
+static void ag_rp_210(void) {
+#line - "yabasic.syn"
+create_myswitch(0);create_readline(NULL);
+#line - "yabasic.c"
+}
+
+static void ag_rp_211(void) {
+#line - "yabasic.syn"
+create_myswitch(0);create_readline(NULL);
+#line - "yabasic.c"
+}
+
+static void ag_rp_212(void) {
+#line - "yabasic.syn"
+create_myswitch(0);
+#line - "yabasic.c"
+}
+
+static void ag_rp_213(void) {
+#line - "yabasic.syn"
+create_myswitch(0);
+#line - "yabasic.c"
+}
+
+static void ag_rp_214(void) {
+#line - "yabasic.syn"
+create_myswitch(0);
+#line - "yabasic.c"
+}
+
+static void ag_rp_215(void) {
+#line - "yabasic.syn"
+create_revert(TRUE);create_myswitch(0);
+#line - "yabasic.c"
+}
+
+static void ag_rp_216(void) {
+#line - "yabasic.syn"
+create_myswitch(0);
+#line - "yabasic.c"
+}
+
+static void ag_rp_217(void) {
+#line - "yabasic.syn"
+create_revert(TRUE);create_myswitch(0);
+#line - "yabasic.c"
+}
+
+static void ag_rp_218(char * s) {
+#line - "yabasic.syn"
+create_readline(s);
+#line - "yabasic.c"
+}
+
+static void ag_rp_219(void) {
+#line - "yabasic.syn"
+create_mymove();
+#line - "yabasic.c"
+}
+
+static void ag_rp_220(int n) {
+#line - "yabasic.syn"
+create_myswitch(n);
+#line - "yabasic.c"
+}
+
+#define ag_rp_221(n) (n)
+
+#define ag_rp_222(n) (n)
+
+static void ag_rp_223(void) {
+#line - "yabasic.syn"
+create_print('n');
+#line - "yabasic.c"
+}
+
+static void ag_rp_224(char * s) {
+#line - "yabasic.syn"
+create_goto(s);create_findnop();
+#line - "yabasic.c"
+}
+
+static void ag_rp_225(char * s) {
+#line - "yabasic.syn"
+create_goto(s);create_findnop();
+#line - "yabasic.c"
+}
+
+static void ag_rp_226(char * s) {
+#line - "yabasic.syn"
+create_gosub(s);create_findnop();
+#line - "yabasic.c"
+}
+
+static void ag_rp_227(char * s) {
+#line - "yabasic.syn"
+create_gosub(s);create_findnop();
+#line - "yabasic.c"
+}
+
+
+#define READ_COUNTS 
+#define WRITE_COUNTS 
+#undef V
+#define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i]))
+#undef VS
+#define VS(i) (PCB).vs[(PCB).ssx + i]
+
+#ifndef GET_CONTEXT
+#define GET_CONTEXT CONTEXT = (PCB).input_context
+#endif
+
+typedef enum {
+  ag_action_1,
+  ag_action_2,
+  ag_action_3,
+  ag_action_4,
+  ag_action_5,
+  ag_action_6,
+  ag_action_7,
+  ag_action_8,
+  ag_action_9,
+  ag_action_10,
+  ag_action_11,
+  ag_action_12
+} ag_parser_action;
+
+
+#ifndef NULL_VALUE_INITIALIZER
+#define NULL_VALUE_INITIALIZER = { 0 }
+#endif
+
+static parseBasic_vs_type const ag_null_value NULL_VALUE_INITIALIZER;
+
+static const unsigned char ag_rpx[] = {
+    0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  2,  3,  4,  0,  0,  0,  5,
+    6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+   24,  0,  0,  0, 25, 26,  0,  0,  0,  0,  0, 27, 28, 29, 30, 31, 32, 33,
+   34, 35, 36, 37, 38,  0, 39,  0,  0, 40, 41, 42,  0, 43, 44, 45, 46, 47,
+   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+   66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+   84, 85, 86,  0, 87, 88,  0, 89, 90, 91,  0, 92, 93, 94, 95, 96, 97, 98,
+   99,100,101,102,103,104,105,106,107,108,109,110,111,  0,112,113,114,  0,
+  115,  0,116,  0,117,118,  0,119,120,  0,121,122,123,124,125,126,127,128,
+  129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,
+  147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,
+  165,166,  0,167,168,169,170,171,172,173,174,  0,  0,175,  0,176,  0,177,
+    0,  0,  0,178,179,180,181,182,183,184,185,186,187,188,189,  0,  0,  0,
+    0,190,191,192,193,194,195,  0,  0,196,197,198,199,200,201,202,203,204,
+  205,  0,206,207,208,209,210,  0,211,212,  0,213,  0,214,  0,215,216,217,
+  218,219,220,221,222,223,  0,224,225,226,227
+};
+
+static const unsigned char ag_key_itt[] = {
+ 0
+};
+
+static const unsigned short ag_key_pt[] = {
+0
+};
+
+static const unsigned char ag_key_ch[] = {
+    0, 82,255, 61, 62,255, 67, 73,255, 65,255, 67, 78, 82, 83, 84,255, 69,
+   82,255, 69, 79,255, 78, 83,255, 72, 73, 76, 79,255, 65, 69,255, 84,255,
+   65, 73, 79,255, 73,255, 68,255, 76, 78, 88,255, 79, 82,255, 83, 84,255,
+   79,255, 69,255, 75, 80, 83, 84,255, 70, 78,255, 70, 78,255, 71, 87,255,
+   65, 69, 73, 79, 84,255, 80, 88,255, 68, 78,255, 65, 73, 79,255, 69, 79,
+  255, 78, 80, 82,255, 50,255, 75,255, 69,255, 69,255, 84,255, 78,255, 73,
+  255, 69, 79, 82,255, 65, 77, 83, 84, 86,255, 65, 69, 73, 84,255, 69, 82,
+  255, 50,255, 77,255, 69,255, 84,255, 83,255, 67, 73, 81, 84, 89,255, 65,
+   69, 72, 73, 79, 82,255, 65, 73,255, 77, 84,255, 77, 84,255, 60, 62, 65,
+   66, 67, 68, 69, 70, 71, 73, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87,
+   88, 89,255, 69, 79,255, 73, 76,255, 65, 73, 79,255, 73,255, 68,255, 76,
+   78,255, 83, 84,255, 79,255, 75, 80,255, 70, 78,255, 65, 69, 73,255, 65,
+   73,255, 78, 80,255, 79, 82,255, 65, 77, 83, 84,255, 69, 73,255, 65, 66,
+   67, 68, 69, 70, 71, 73, 76, 77, 78, 79, 80, 82, 83, 84, 87, 88, 89,255,
+   67, 73,255, 67, 83, 84,255, 83, 84,255, 78,255, 69, 79,255, 65, 73, 79,
+  255, 73, 81, 89,255, 65, 67, 69, 70, 73, 76, 77, 80, 82, 83, 84, 86, 88,
+   89,255, 67, 73,255, 67, 83, 84,255, 72, 79,255, 75, 83, 84,255, 78,255,
+   70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73, 79,255, 50,
+  255, 75,255, 69,255, 69,255, 65, 73, 84,255, 50,255, 77,255, 69,255, 84,
+  255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68, 69, 70, 73,
+   76, 77, 80, 82, 83, 84, 85, 86, 88, 89,255, 76, 78,255, 69, 78, 82,255,
+   67, 73,255, 67, 83, 84,255, 72, 79,255, 75, 83, 84,255, 78,255, 70, 78,
+  255, 71, 87,255, 69, 79, 84,255, 80, 88,255, 68, 78,255, 65, 73, 79,255,
+   50,255, 75,255, 69,255, 69,255, 65, 73, 84,255, 50,255, 77,255, 69,255,
+   84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68, 69, 70,
+   73, 76, 77, 80, 82, 83, 84, 85, 86, 88, 89,255, 61, 62,255, 67, 73,255,
+   67, 78, 83, 84,255, 72, 79,255, 76, 78, 88,255, 83, 84,255, 79,255, 75,
+   83, 84,255, 78,255, 70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255,
+   65, 73, 79,255, 50,255, 75,255, 69,255, 69,255, 65, 69, 73, 84,255, 69,
+   82,255, 50,255, 77,255, 69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65,
+   72, 73, 79, 82,255, 60, 62, 65, 67, 68, 69, 70, 71, 73, 76, 77, 78, 79,
+   80, 82, 83, 84, 85, 86, 88, 89,255, 67, 73,255, 67, 83, 84,255, 72, 79,
+  255, 75, 83, 84,255, 78,255, 70, 78,255, 71, 87,255, 69, 79, 84,255, 68,
+   78,255, 65, 73, 79,255, 50,255, 75,255, 69,255, 69,255, 65, 73, 84,255,
+   50,255, 77,255, 69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,
+  255, 65, 67, 68, 69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89,
+  255, 67, 73,255, 67, 82, 83, 84,255, 69, 79,255, 72, 73, 76, 79,255, 65,
+   69,255, 84,255, 65, 73, 79,255, 73,255, 68,255, 76, 78, 88,255, 79, 82,
+  255, 83, 84,255, 79,255, 75, 80, 83, 84,255, 70, 78,255, 70, 78,255, 71,
+   87,255, 69, 73, 79, 84,255, 80, 88,255, 68, 78,255, 65, 73, 79,255, 78,
+   80,255, 50,255, 75,255, 69,255, 69, 79, 82,255, 65, 77, 83, 84,255, 65,
+   69, 73, 84,255, 50,255, 77,255, 69,255, 84,255, 83,255, 73, 81, 84, 89,
+  255, 65, 69, 73, 82,255, 77, 84,255, 77, 84,255, 65, 66, 67, 68, 69, 70,
+   71, 73, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 89,255, 69, 79,
+  255, 73, 76,255, 65, 73, 79,255, 73,255, 68,255, 76, 78,255, 83, 84,255,
+   79,255, 75, 80,255, 70, 78,255, 69, 73,255, 65, 73,255, 78, 80,255, 79,
+   82,255, 65, 77, 83, 84,255, 69, 73,255, 65, 66, 67, 68, 69, 70, 71, 73,
+   76, 77, 78, 79, 80, 82, 83, 84, 87, 88, 89,255, 61, 62,255, 60, 62,255,
+   61, 62,255, 76, 78,255, 60, 62, 65, 69, 78, 79, 82, 84,255, 69, 79, 84,
+  255, 73, 84,255, 84, 89,255, 73, 82,255, 67, 68, 73, 76, 77, 80, 82, 83,
+   84, 85,255, 83, 87,255, 67, 73,255, 67, 83, 84,255, 83, 84,255, 78,255,
+   69, 79,255, 80, 88,255, 65, 73, 79,255, 73, 81, 89,255, 65, 67, 69, 70,
+   73, 76, 77, 80, 82, 83, 84, 86, 88, 89,255, 65,255, 67, 73,255, 65,255,
+   67, 83, 84,255, 72, 79,255, 76, 78, 88,255, 75, 83, 84,255, 78,255, 70,
+   78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73, 79,255, 50,255,
+   75,255, 69,255, 69,255, 77, 86,255, 65, 69, 73, 84,255, 50,255, 77,255,
+   69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68,
+   69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89,255, 80, 87,255,
+   67, 73,255, 67, 83, 84,255, 69,255, 83, 84,255, 78,255, 69, 79,255, 65,
+   73, 79,255, 73, 81, 89,255, 65, 67, 69, 70, 73, 76, 77, 80, 82, 83, 84,
+   86, 88, 89,255, 61, 62,255, 76, 78,255, 83, 84,255, 79,255, 72, 79,255,
+   60, 62, 65, 69, 71, 78, 79, 82, 83, 84,255, 61, 62,255, 83, 84,255, 79,
+  255, 72, 79,255, 60, 62, 65, 71, 78, 79, 82, 83, 84,255, 92,255, 65, 79,
+   84,255, 79, 84,255, 67, 73,255, 67, 83, 84,255, 76, 78, 88,255, 83, 84,
+  255, 78,255, 69, 79,255, 65, 73, 79,255, 65, 69,255, 73, 81, 89,255, 65,
+   67, 69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 86, 88, 89,255, 84,255, 67,
+   73,255, 65,255, 67, 83, 84,255, 72, 79,255, 76, 78, 88,255, 75, 83, 84,
+  255, 78,255, 70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73,
+   79,255, 50,255, 75,255, 69,255, 69,255, 65, 69, 73, 84,255, 50,255, 77,
+  255, 69,255, 84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67,
+   68, 69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89,255, 67, 73,
+  255, 67, 83, 84,255, 72, 79,255, 76, 78, 88,255, 75, 83, 84,255, 78,255,
+   70, 78,255, 71, 87,255, 69, 79, 84,255, 68, 78,255, 65, 73, 79,255, 50,
+  255, 75,255, 69,255, 69,255, 65, 69, 73, 84,255, 50,255, 77,255, 69,255,
+   84,255, 83,255, 73, 81, 84, 89,255, 65, 73, 82,255, 65, 67, 68, 69, 70,
+   73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89,255, 76, 78,255, 69, 79,
+   84,255, 69, 73, 84,255, 84, 89,255, 73, 82,255, 67, 68, 69, 73, 76, 77,
+   78, 80, 82, 83, 84, 85,255, 83, 84,255, 79,255, 71,255, 66, 67,255, 79,
+  255, 84,255, 76, 78,255, 69, 82,255, 76, 78,255, 69, 78, 82, 84,255, 76,
+   78,255, 69,255, 69, 82,255, 69,255, 82, 83,255, 78, 82,255, 78,255
+};
+
+static const unsigned char ag_key_act[] = {
+  0,3,4,0,0,4,0,3,4,3,4,3,3,3,2,1,4,3,3,4,3,3,4,3,0,4,3,3,2,2,4,0,0,4,2,
+  4,2,3,3,4,3,4,1,4,3,2,3,4,3,3,4,3,3,4,2,4,3,4,3,3,3,1,4,0,2,4,3,0,4,0,
+  3,4,3,2,3,2,3,4,0,0,4,0,0,4,2,2,3,4,3,3,4,0,3,0,4,0,4,1,4,2,4,3,4,1,4,
+  2,4,2,4,2,3,2,4,3,0,3,3,3,4,3,2,3,3,4,3,0,4,0,4,1,4,2,4,2,4,2,4,3,3,3,
+  2,2,4,3,3,3,3,0,3,4,3,3,4,3,3,4,3,3,4,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,3,3,2,2,2,4,3,3,4,3,2,4,3,3,3,4,3,4,1,4,3,2,4,3,3,4,2,4,3,3,4,0,2,
+  4,3,3,3,4,3,3,4,0,3,4,3,3,4,3,0,3,3,4,2,3,4,3,3,2,2,2,3,2,2,2,2,3,2,2,
+  2,3,3,3,3,3,4,0,3,4,3,2,3,4,3,0,4,2,4,3,3,4,3,3,3,4,3,3,3,4,2,3,3,3,2,
+  2,2,3,3,2,3,3,3,3,4,0,3,4,3,2,3,4,3,3,4,3,3,0,4,2,4,3,0,4,0,3,4,2,2,3,
+  4,0,0,4,3,2,3,4,0,4,1,4,2,4,2,4,3,3,3,4,0,4,1,4,2,4,2,4,2,4,3,3,3,2,4,
+  3,3,3,4,2,2,3,3,3,2,2,2,2,2,2,2,3,3,3,3,4,3,3,4,2,3,3,4,0,3,4,3,2,3,4,
+  3,3,4,3,3,0,4,2,4,3,0,4,0,3,4,2,2,3,4,0,0,4,0,0,4,2,2,3,4,0,4,1,4,2,4,
+  2,4,3,3,3,4,0,4,1,4,2,4,2,4,2,4,3,3,3,2,4,3,3,3,4,2,2,3,3,3,2,2,2,2,2,
+  2,2,3,3,3,3,4,0,0,4,0,3,4,3,3,2,3,4,3,3,4,3,3,3,4,3,3,4,2,4,3,3,0,4,2,
+  4,3,0,4,0,3,4,2,2,3,4,0,0,4,3,2,3,4,0,4,1,4,2,4,2,4,3,3,3,3,4,3,0,4,0,
+  4,1,4,2,4,2,4,2,4,3,3,2,2,4,3,3,3,0,3,4,2,3,2,2,3,2,3,2,2,2,2,3,3,2,2,
+  2,2,3,3,3,3,4,0,3,4,3,2,3,4,3,3,4,3,3,0,4,2,4,3,0,4,0,3,4,2,2,3,4,0,0,
+  4,3,2,3,4,0,4,1,4,2,4,2,4,3,3,3,4,0,4,1,4,2,4,2,4,2,4,3,3,3,2,4,3,3,3,
+  4,2,2,3,3,3,2,2,2,3,2,2,2,2,3,3,3,3,4,0,3,4,3,3,2,3,4,3,3,4,3,3,2,3,4,
+  0,0,4,2,4,2,3,3,4,3,4,1,4,3,2,3,4,3,3,4,3,3,4,2,4,3,3,3,0,4,0,2,4,3,0,
+  4,0,3,4,2,3,2,3,4,0,0,4,0,0,4,2,2,3,4,0,3,4,0,4,1,4,2,4,2,3,3,4,3,0,3,
+  3,4,3,2,3,3,4,0,4,1,4,2,4,2,4,2,4,3,3,3,2,4,3,3,3,3,4,3,3,4,3,3,4,2,3,
+  2,2,2,2,2,2,2,2,3,2,2,2,2,2,3,3,3,2,2,4,3,3,4,3,2,4,3,3,3,4,3,4,1,4,3,
+  2,4,3,3,4,2,4,3,3,4,0,2,4,3,3,4,3,3,4,0,3,4,3,3,4,3,0,3,3,4,2,3,4,3,3,
+  2,2,2,3,2,2,2,2,3,2,2,2,3,3,3,3,3,4,0,0,4,2,3,4,0,0,4,3,3,4,2,3,3,2,3,
+  3,3,3,4,3,3,3,4,3,3,4,3,3,4,3,3,4,3,3,3,2,3,3,2,2,2,3,4,3,3,4,0,3,4,3,
+  2,3,4,3,0,4,2,4,3,3,4,0,0,4,2,3,3,4,3,3,3,4,2,3,3,3,2,2,2,3,3,2,3,3,3,
+  3,4,3,4,0,3,4,3,4,3,2,1,4,3,3,4,3,3,3,4,3,3,0,4,2,4,3,0,4,0,3,4,2,2,3,
+  4,0,0,4,3,2,3,4,0,4,1,4,2,4,2,4,0,3,4,3,2,3,3,4,0,4,1,4,2,4,2,4,2,4,3,
+  3,3,2,4,3,3,3,4,2,2,3,2,3,2,2,2,3,2,2,2,2,3,3,3,3,4,3,3,4,0,3,4,3,2,3,
+  4,3,4,3,1,4,2,4,3,3,4,3,3,3,4,3,3,3,4,2,3,3,3,2,2,2,3,3,2,3,3,3,3,4,0,
+  0,4,3,3,4,3,3,4,2,4,3,0,4,2,3,3,2,2,3,3,3,3,2,4,0,0,4,3,3,4,2,4,3,0,4,
+  2,3,3,2,3,3,3,3,2,4,3,4,3,3,3,4,3,3,4,0,3,4,3,2,3,4,3,3,3,4,3,0,4,2,4,
+  3,3,4,3,3,3,4,3,3,4,3,3,3,4,2,3,2,3,2,2,2,3,3,2,2,3,3,3,3,4,3,4,0,3,4,
+  3,4,3,2,1,4,3,3,4,3,3,3,4,3,3,0,4,2,4,3,0,4,0,3,4,2,2,3,4,0,0,4,3,2,3,
+  4,0,4,1,4,2,4,2,4,3,3,3,3,4,0,4,1,4,2,4,2,4,2,4,3,3,3,2,4,3,3,3,4,2,2,
+  3,2,3,2,2,2,3,2,2,2,2,3,3,3,3,4,0,3,4,3,2,3,4,3,3,4,3,3,3,4,3,3,0,4,2,
+  4,3,0,4,0,3,4,2,2,3,4,0,0,4,3,2,3,4,0,4,1,4,2,4,2,4,3,3,3,3,4,0,4,1,4,
+  2,4,2,4,2,4,3,3,3,2,4,3,3,3,4,2,2,3,2,3,2,2,2,3,2,2,2,2,3,3,3,3,4,3,3,
+  4,3,3,3,4,3,3,3,4,3,3,4,3,3,4,3,3,2,3,2,3,3,3,2,2,2,3,4,3,3,4,2,4,2,4,
+  3,3,4,3,4,3,4,3,3,4,2,3,4,3,3,4,2,3,3,3,4,3,3,4,2,4,3,3,4,3,4,3,3,4,3,
+  3,4,3,4
+};
+
+static const unsigned short ag_key_parm[] = {
+    0,214,  0,312,310,  0,298,280,  0,284,  0,282,308,242,  0,317,  0,249,
+  221,  0,245,227,  0,224,281,  0,264,239,  0,  0,  0,231,271,  0,  0,  0,
+    0,234,236,  0,306,  0,255,  0,315,  0,285,  0,301,289,  0,220,219,  0,
+    0,  0,222,  0,250,229,299,288,  0,305,  0,  0,259,296,  0,286,266,  0,
+  218,  0,238,  0,267,  0,241,293,  0,258,292,  0,  0,  0,290,  0,302,309,
+    0,223,226,307,  0,273,  0,300,  0,  0,  0,247,  0,228,  0,  0,  0,  0,
+    0,  0,254,  0,  0,230,214,232,233,316,  0,291,  0,260,268,  0,303,263,
+    0,253,  0,270,  0,  0,  0,  0,  0,  0,  0,246,279,287,  0,  0,  0,283,
+  240,304,272,237,269,  0,248,235,  0,294,243,  0,295,244,  0,  0,314,  0,
+    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,265,297,  0,
+    0,  0,  0,245,227,  0,239,  0,  0,231,234,236,  0,306,  0,255,  0,315,
+    0,  0,220,219,  0,  0,  0,250,229,  0,305,  0,  0,218,259,238,  0,241,
+  258,  0,223,226,  0,254,228,  0,230,214,232,233,  0,  0,260,  0,242,249,
+    0,  0,  0,301,  0,  0,  0,  0,302,  0,  0,  0,253,240,248,243,244,  0,
+  298,280,  0,282,  0,284,  0,299,288,  0,  0,  0,296,286,  0,293,292,290,
+    0,279,287,253,  0,  0,281,285,289,  0,  0,  0,300,291,  0,283,297,294,
+  295,  0,298,280,  0,282,  0,284,  0,264,281,  0,250,299,288,  0,  0,  0,
+  259,296,  0,286,266,  0,  0,  0,267,  0,258,292,  0,293,  0,290,  0,273,
+    0,300,  0,  0,  0,  0,  0,291,260,268,  0,253,  0,270,  0,  0,  0,  0,
+    0,  0,  0,279,287,263,  0,  0,283,272,269,  0,  0,  0,271,285,289,  0,
+    0,  0,  0,  0,  0,  0,265,297,294,295,  0,315,306,  0,  0,302,214,  0,
+  298,280,  0,282,  0,284,  0,264,281,  0,250,299,288,  0,  0,  0,259,296,
+    0,286,266,  0,  0,  0,267,  0,241,293,  0,258,292,  0,  0,  0,290,  0,
+  273,  0,300,  0,  0,  0,  0,  0,291,260,268,  0,253,  0,270,  0,  0,  0,
+    0,  0,  0,  0,279,287,263,  0,  0,283,272,269,  0,  0,  0,271,285,289,
+    0,  0,  0,  0,  0,  0,  0,265,297,294,295,  0,312,310,  0,298,280,  0,
+  282,308,  0,284,  0,264,281,  0,315,306,285,  0,220,219,  0,  0,  0,250,
+  299,288,  0,  0,  0,259,296,  0,286,266,  0,  0,  0,267,  0,258,292,  0,
+  293,  0,290,  0,273,  0,300,  0,  0,  0,  0,  0,291,214,260,268,  0,303,
+  263,  0,253,  0,270,  0,  0,  0,  0,  0,  0,  0,279,287,  0,  0,  0,283,
+  304,272,237,269,  0,  0,314,  0,  0,271,  0,289,  0,  0,  0,  0,302,307,
+    0,  0,  0,  0,265,297,294,295,  0,298,280,  0,282,  0,284,  0,264,281,
+    0,250,299,288,  0,  0,  0,259,296,  0,286,266,  0,  0,  0,267,  0,258,
+  292,  0,293,  0,290,  0,273,  0,300,  0,  0,  0,  0,  0,291,260,268,  0,
+  253,  0,270,  0,  0,  0,  0,  0,  0,  0,279,287,263,  0,  0,283,272,269,
+    0,  0,  0,271,285,289,  0,  0,  0,309,  0,  0,  0,  0,265,297,294,295,
+    0,298,280,  0,282,242,  0,284,  0,245,227,  0,264,239,  0,281,  0,231,
+  271,  0,  0,  0,  0,234,236,  0,306,  0,255,  0,315,  0,285,  0,301,289,
+    0,220,219,  0,  0,  0,250,229,299,288,  0,305,  0,  0,259,296,  0,286,
+  266,  0,  0,238,  0,267,  0,241,293,  0,258,292,  0,  0,  0,290,  0,223,
+  226,  0,273,  0,300,  0,  0,  0,  0,254,228,  0,230,214,232,233,  0,291,
+    0,260,268,  0,253,  0,270,  0,  0,  0,  0,  0,  0,  0,279,287,263,  0,
+    0,283,240,272,269,  0,294,243,  0,295,244,  0,  0,249,  0,  0,  0,  0,
+    0,  0,  0,  0,302,  0,  0,  0,  0,  0,265,297,248,  0,  0,  0,245,227,
+    0,239,  0,  0,231,234,236,  0,306,  0,255,  0,315,  0,  0,220,219,  0,
+    0,  0,250,229,  0,305,  0,  0,259,238,  0,241,258,  0,223,226,  0,254,
+  228,  0,230,214,232,233,  0,  0,260,  0,242,249,  0,  0,  0,301,  0,  0,
+    0,  0,302,  0,  0,  0,253,240,248,243,244,  0,312,310,  0,  0,314,  0,
+  312,310,  0,315,306,  0,  0,314,308,  0,302,307,214,304,  0,259,266,267,
+    0,260,268,  0,263,270,  0,272,269,  0,264,271,250,  0,258,273,  0,  0,
+    0,265,  0,246,235,  0,298,280,  0,282,  0,284,  0,299,288,  0,  0,  0,
+  296,286,  0,241,293,  0,  0,292,290,  0,279,287,253,  0,  0,281,285,289,
+    0,  0,  0,300,291,  0,283,297,294,295,  0,317,  0,298,280,  0,284,  0,
+  282,  0,317,  0,264,281,  0,315,306,285,  0,250,299,288,  0,  0,  0,259,
+  296,  0,286,266,  0,  0,  0,267,  0,258,292,  0,293,  0,290,  0,273,  0,
+  300,  0,  0,  0,  0,  0,214,316,  0,291,  0,260,268,  0,253,  0,270,  0,
+    0,  0,  0,  0,  0,  0,279,287,263,  0,  0,283,272,269,  0,  0,  0,271,
+    0,289,  0,  0,  0,302,  0,  0,  0,  0,265,297,294,295,  0,247,235,  0,
+  298,280,  0,282,  0,284,  0,222,  0,299,288,  0,  0,  0,296,286,  0,293,
+  292,290,  0,279,287,253,  0,  0,281,285,289,  0,  0,  0,300,291,  0,283,
+  297,294,295,  0,312,310,  0,315,306,  0,220,219,  0,  0,  0,304,237,  0,
+    0,314,308,  0,  0,302,307,214,303,  0,  0,312,310,  0,220,219,  0,  0,
+    0,304,237,  0,  0,314,308,  0,302,307,214,303,  0,  0, 33,  0,308,307,
+  304,  0,307,304,  0,298,280,  0,282,  0,284,  0,315,306,285,  0,299,288,
+    0,  0,  0,296,286,  0,293,292,290,  0,291,214,  0,279,287,253,  0,  0,
+  281,  0,289,  0,  0,  0,302,300,  0,  0,283,297,294,295,  0,237,  0,298,
+  280,  0,284,  0,282,  0,317,  0,264,281,  0,315,306,285,  0,250,299,288,
+    0,  0,  0,259,296,  0,286,266,  0,  0,  0,267,  0,258,292,  0,293,  0,
+  290,  0,273,  0,300,  0,  0,  0,  0,  0,291,214,260,268,  0,253,  0,270,
+    0,  0,  0,  0,  0,  0,  0,279,287,263,  0,  0,283,272,269,  0,  0,  0,
+  271,  0,289,  0,  0,  0,302,  0,  0,  0,  0,265,297,294,295,  0,298,280,
+    0,282,  0,284,  0,264,281,  0,315,306,285,  0,250,299,288,  0,  0,  0,
+  259,296,  0,286,266,  0,  0,  0,267,  0,258,292,  0,293,  0,290,  0,273,
+    0,300,  0,  0,  0,  0,  0,291,214,260,268,  0,253,  0,270,  0,  0,  0,
+    0,  0,  0,  0,279,287,263,  0,  0,283,272,269,  0,  0,  0,271,  0,289,
+    0,  0,  0,302,  0,  0,  0,  0,265,297,294,295,  0,315,306,  0,259,266,
+  267,  0,214,260,268,  0,263,270,  0,272,269,  0,264,271,  0,250,  0,258,
+  302,273,  0,  0,  0,265,  0,220,219,  0,  0,  0,  0,  0,221,224,  0,307,
+    0,304,  0,315,306,  0,  0,214,  0,315,306,  0,  0,302,214,237,  0,315,
+  306,  0,  0,  0,306,214,  0,306,  0,214,303,  0,302,214,  0,302,  0
+};
+
+static const unsigned short ag_key_jmp[] = {
+    0,  0,  0,  0,  0,  0,  0, 14,  0, 16,  0,  5,  8, 10,  6,  9,  0, 18,
+   21,  0, 32, 35,  0, 38,  0,  0, 25, 27, 20, 23,  0,  0,  0,  0, 31,  0,
+   34, 44, 46,  0, 51,  0, 40,  0, 48, 42, 53,  0, 55, 57,  0, 60, 63,  0,
+   51,  0, 74,  0, 65, 68, 71, 56,  0,  0, 58,  0, 84,  0,  0,  0, 89,  0,
+   80, 66, 86, 69, 92,  0,  0,  0,  0,  0,  0,  0, 78, 81, 96,  0, 98,101,
+    0,  0,103,  0,  0,  0,  0, 95,  0, 97,  0,109,  0,101,  0,103,  0,105,
+    0, 99,106,107,  0,113,  0,115,120,124,  0,111,113,129,133,  0,147,  0,
+    0,  0,  0,127,  0,129,  0,131,  0,133,  0,137,142,144,124,135,  0,149,
+  151,154,157,  0,160,  0,171,174,  0,179,182,  0,186,189,  0,  3,  3, 11,
+   17, 26, 36, 44, 48, 54, 63, 72, 84, 88, 91,109,119,137,143,163,168,150,
+  153,156,  0,207,210,  0,202,183,  0,213,216,218,  0,223,  0,193,  0,220,
+  195,  0,228,231,  0,200,  0,233,236,  0,  0,205,  0,239,243,246,  0,249,
+  251,  0,  0,257,  0,260,263,  0,267,  0,269,274,  0,224,278,  0,193,198,
+  186,189,197,225,203,208,211,215,253,218,221,229,282,289,293,297,302,  0,
+    0,310,  0,307,252,312,  0,325,  0,  0,259,  0,328,330,  0,332,334,336,
+    0,345,347,350,  0,255,315,318,321,262,264,267,338,342,271,356,359,362,
+  366,  0,  0,373,  0,370,290,375,  0,378,380,  0,393,396,  0,  0,300,  0,
+  399,  0,  0,  0,401,  0,306,309,404,  0,  0,  0,  0,408,316,410,  0,  0,
+    0,323,  0,325,  0,327,  0,412,414,418,  0,  0,  0,335,  0,337,  0,339,
+    0,341,  0,422,424,427,343,  0,429,431,434,  0,293,297,382,386,389,304,
+  312,319,329,331,345,350,437,442,445,449,  0,453,456,  0,371,460,464,  0,
+    0,470,  0,467,378,472,  0,475,477,  0,490,493,  0,  0,388,  0,496,  0,
+    0,  0,498,  0,394,397,501,  0,  0,  0,  0,  0,  0,  0,404,407,505,  0,
+    0,  0,414,  0,416,  0,418,  0,507,509,513,  0,  0,  0,426,  0,428,  0,
+  430,  0,432,  0,517,519,522,434,  0,524,526,529,  0,381,385,479,483,486,
+  392,400,410,420,422,436,441,532,537,540,544,  0,  0,  0,  0,  0,555,  0,
+  550,553,465,557,  0,560,562,  0,568,571,575,  0,581,584,  0,480,  0,586,
+  589,  0,  0,485,  0,592,  0,  0,  0,594,  0,491,494,597,  0,  0,  0,  0,
+  601,501,603,  0,  0,  0,508,  0,510,  0,512,  0,611,613,615,619,  0,628,
+    0,  0,  0,  0,524,  0,526,  0,528,  0,530,  0,623,625,521,532,  0,630,
+  632,635,  0,638,  0,462,548,468,473,564,476,577,483,489,497,504,605,609,
+  514,516,534,539,641,646,649,653,  0,  0,660,  0,657,567,662,  0,665,667,
+    0,680,683,  0,  0,577,  0,686,  0,  0,  0,688,  0,583,586,691,  0,  0,
+    0,  0,695,593,697,  0,  0,  0,600,  0,602,  0,604,  0,702,704,708,  0,
+    0,  0,612,  0,614,  0,616,  0,618,  0,712,714,717,620,  0,719,721,724,
+    0,570,574,669,673,676,581,589,596,699,606,608,622,627,727,732,735,739,
+    0,  0,750,  0,743,746,649,752,  0,766,769,  0,759,761,657,772,  0,  0,
+    0,  0,665,  0,668,774,776,  0,781,  0,674,  0,778,676,783,  0,785,787,
+    0,790,793,  0,685,  0,795,798,801,  0,  0,  0,690,  0,804,  0,  0,  0,
+  809,  0,698,806,701,812,  0,  0,  0,  0,  0,  0,  0,709,712,816,  0,  0,
+  822,  0,  0,  0,722,  0,724,  0,726,825,828,  0,834,  0,836,841,  0,832,
+  732,845,849,  0,  0,  0,742,  0,744,  0,746,  0,748,  0,853,855,858,750,
+    0,860,862,865,868,  0,883,886,  0,890,893,  0,652,755,660,670,678,682,
+  688,695,704,715,818,719,728,737,752,757,871,876,879,762,765,  0,911,914,
+    0,906,790,  0,917,920,922,  0,927,  0,800,  0,924,802,  0,932,935,  0,
+  807,  0,937,940,  0,  0,812,  0,943,946,  0,949,951,  0,  0,957,  0,960,
+  963,  0,967,  0,969,974,  0,830,978,  0,897,902,793,796,804,929,810,815,
+  818,821,953,824,827,835,982,989,993,997,1002,  0,  0,  0,  0,858,1007,
+    0,  0,  0,  0,1014,1017,  0,864,1009,1011,867,1021,1025,1027,1030,  0,
+  1046,1049,1053,  0,1065,1069,  0,1073,1075,  0,1080,1083,  0,1034,1037,
+  1041,879,1057,1060,883,886,889,1086,  0,1091,1097,  0,  0,1106,  0,1103,
+  906,1108,  0,1121,  0,  0,913,  0,1124,1126,  0,  0,  0,  0,921,1128,1130,
+    0,1139,1141,1144,  0,909,1111,1114,1117,916,918,924,1132,1136,928,1150,
+  1153,1156,1160,  0,1164,  0,  0,1169,  0,1171,  0,1166,949,952,  0,1173,
+  1175,  0,1181,1184,1188,  0,1194,1197,  0,  0,965,  0,1200,  0,  0,  0,
+  1202,  0,971,974,1205,  0,  0,  0,  0,1209,981,1211,  0,  0,  0,988,  0,
+  990,  0,992,  0,  0,1219,  0,1217,996,1224,1228,  0,  0,  0,1004,  0,1006,
+    0,1008,  0,1010,  0,1232,1234,1237,1012,  0,1239,1241,1244,  0,954,958,
+  1177,961,1190,969,977,984,1213,994,999,1014,1019,1247,1252,1255,1259,  0,
+  1263,1270,  0,  0,1279,  0,1276,1044,1281,  0,1297,  0,1294,1051,  0,1053,
+    0,1303,1305,  0,1307,1309,1311,  0,1320,1322,1325,  0,1047,1284,1287,
+  1290,1056,1058,1061,1313,1317,1065,1331,1334,1337,1341,  0,  0,  0,  0,
+  1350,1353,  0,1357,1360,  0,1090,  0,1375,  0,  0,1084,1345,1347,1087,
+  1093,1362,1366,1368,1371,1095,  0,  0,  0,  0,1383,1386,  0,1112,  0,1401,
+    0,  0,1109,1378,1380,1115,1388,1392,1394,1397,1117,  0,1404,  0,1406,
+  1409,1411,  0,1415,1417,  0,  0,1424,  0,1421,1139,1426,  0,1432,1435,
+  1439,  0,1445,  0,  0,1150,  0,1448,1450,  0,1452,1454,1456,  0,1466,1468,
+    0,1470,1472,1475,  0,1142,1429,1146,1441,1153,1155,1158,1458,1462,1162,
+  1165,1481,1484,1487,1491,  0,1495,  0,  0,1500,  0,1502,  0,1497,1187,
+  1190,  0,1504,1506,  0,1512,1515,1519,  0,1525,1528,  0,  0,1203,  0,1531,
+    0,  0,  0,1533,  0,1209,1212,1536,  0,  0,  0,  0,1540,1219,1542,  0,
+    0,  0,1226,  0,1228,  0,1230,  0,1548,1550,1552,1556,  0,  0,  0,1239,
+    0,1241,  0,1243,  0,1245,  0,1560,1562,1565,1247,  0,1567,1569,1572,
+    0,1192,1196,1508,1199,1521,1207,1215,1222,1544,1232,1234,1249,1254,1575,
+  1580,1583,1587,  0,  0,1594,  0,1591,1276,1596,  0,1599,1601,  0,1607,
+  1610,1614,  0,1620,1623,  0,  0,1290,  0,1626,  0,  0,  0,1628,  0,1296,
+  1299,1631,  0,  0,  0,  0,1635,1306,1637,  0,  0,  0,1313,  0,1315,  0,
+  1317,  0,1643,1645,1647,1651,  0,  0,  0,1326,  0,1328,  0,1330,  0,1332,
+    0,1655,1657,1660,1334,  0,1662,1664,1667,  0,1279,1283,1603,1286,1616,
+  1294,1302,1309,1639,1319,1321,1336,1341,1670,1675,1678,1682,  0,1693,1696,
+    0,1705,1708,1712,  0,1728,1730,1734,  0,1738,1740,  0,1745,1748,  0,
+  1686,1689,1363,1700,1366,1716,1719,1723,1370,1374,1377,1751,  0,1756,1759,
+    0,1393,  0,1396,  0,1761,1766,  0,1774,  0,1776,  0,1780,1783,  0,1407,
+  1787,  0,1790,1793,  0,1413,1797,1801,1804,  0,1806,1809,  0,1421,  0,
+  1813,1818,  0,1821,  0,1826,1829,  0,1833,1837,  0,1840,  0
+};
+
+static const unsigned short ag_key_index[] = {
+    1,159,  1,  1,  0,  0,  0,232,275,  0,  0,354,354,354,374,  0,275,  0,
+  275,445,354,275,545,631,  0,  0,  0,  0,  0,232,768,  0,  0,838,861,631,
+    0,  0,  0,  0,870,374,892,  0,870,374,275,903,932,932,932,275,445,932,
+  932,932,  0,374,374,  0,  0,947,1023,1041,1041,1069,  0,  0,631,  0,  0,
+    0,  0,  0,  0,892,  0,275,903,932,932,932,275,445,932,932,932,  0,374,
+    0,  0,947,1023,1041,1041,1069,  0,  0,861,  0,1098,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,1120,
+    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,1098,275,1098,1130,  0,870,870,  0,  0,  0,  0,  0,
+    0,  0,  0,870,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,1098,870,
+  1098,631,861,861,631,631,1132,1136,  0,275,275,  0,  0,  0,275,892,  0,
+  892,  0,892,275,374,374,1169,  0,  0,374,374,1185,  0,  0,354,  0,  0,
+  1185,  0,  0,374,  0,  0,374,374,374,374,  0,  0,  0,  0,  0,  0,1258,
+  1258,1345,1380,  0,1380,275,  0,1398,1400,1400,1098,1098,  0,892,892,892,
+  892,892,892,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,
+  275,275,275,1130,892,892,892,892,892,892,892,275,275,892,892,892,275,275,
+  275,275,354,275,275,354,275,275,354,275,275,275,275,892,892,892,892,892,
+  892,892,1403,861,861,631,631,631,631,1405,275,275,374,  0,  0,  0,275,
+  374,  0,354,  0,  0,275,275,892,892,932,932,275,892,932,275,932,275,275,
+    0,  0,275,275,  0,275,  0,374,374,374,374,374,374,374,  0,892,  0,  0,
+  374,374,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  0,  0,  0,  0,275,  0,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,275,1098,1098,1132,1132,1132,1132,1132,1132,1098,1098,
+  1132,1132,1132,1132,1132,1132,1132,1410,1410,1185,  0,  0,275,  0,275,
+    0,275,  0,  0,374,374,  0,1416,374,374,  0,374,374,275,275,  0,  0,275,
+  275,  0,275,275,  0,354,374,275,374,  0,  0,1098,1098,892,275,275,275,
+  275,  0,892,275,275,275,  0,1410,1185,275,  0,275,275,275,275,275,275,
+    0,275,275,  0,  0,275,275,  0,  0,275,275,275,374,374,374,892,374,374,
+    0,  0,  0,  0,  0,  0,  0,  0,  0,1424,275,  0,275,  0,  0,  0,  0,  0,
+    0,892,  0,  0,275,275,  0,  0,  0,892,374,  0,  0,275,1426,1426,1429,
+  1431,374,  0,  0,  0,  0,  0,275,374,275,  0,  0,374,  0,1426,1429,  0,
+    0,  1,  0,892,  0,892,  0,  0,1185,374,  1,275,374,275,374,275,  0,275,
+  1434,  0,  0,  0,892,  0,1434,  0,  0,275,374,275,1437,892,892,  0,  0,
+  374,374,374,374,  0,275,892,  0,374,275,374
+};
+
+static const unsigned char ag_key_ends[] = {
+69,77,0, 61,0, 79,83,0, 68,0, 82,79,87,0, 78,0, 78,0, 
+76,76,0, 69,65,75,0, 82,0, 82,67,76,69,0, 65,82,0, 83,69,0, 
+84,73,78,85,69,0, 77,0, 84,0, 83,69,0, 70,0, 80,0, 82,0, 
+65,67,0, 85,66,0, 79,0, 69,89,0, 85,84,0, 84,82,0, 
+82,82,85,80,84,0, 66,69,76,0, 84,0, 78,69,0, 69,82,0, 
+82,73,77,0, 68,0, 88,84,0, 84,0, 69,78,0, 75,69,0, 82,0, 78,0, 
+68,0, 84,79,82,69,0, 85,82,78,0, 69,82,83,69,0, 71,72,84,0, 
+82,73,77,0, 82,69,69,78,0, 78,0, 82,84,0, 80,0, 78,0, 88,84,0, 
+69,78,0, 77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 73,84,0, 
+78,68,79,87,0, 65,80,0, 73,67,75,0, 65,80,0, 73,67,75,0, 
+82,82,79,87,0, 69,76,76,0, 82,67,76,69,0, 65,82,0, 83,69,0, 
+84,65,0, 77,0, 84,0, 83,69,0, 70,0, 79,82,0, 85,66,0, 79,0, 
+69,89,0, 85,84,0, 66,69,76,0, 70,84,0, 78,69,0, 80,0, 68,0, 
+69,88,84,0, 69,78,0, 75,69,0, 73,78,84,0, 68,0, 84,79,82,69,0, 
+85,82,78,0, 71,72,84,0, 89,83,84,69,77,50,0, 69,88,84,0, 
+65,73,84,0, 84,73,67,75,0, 84,73,67,75,0, 79,83,0, 78,0, 
+65,78,0, 79,83,0, 88,80,0, 82,65,67,0, 84,82,0, 78,0, 71,0, 
+88,0, 78,0, 68,0, 69,69,75,0, 65,78,0, 78,0, 82,84,0, 
+83,84,69,77,50,0, 65,78,0, 65,76,0, 77,65,80,0, 77,65,80,0, 
+79,83,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 88,80,0, 
+82,65,67,0, 69,89,0, 84,82,0, 84,0, 69,82,0, 82,73,77,0, 88,0, 
+68,0, 78,0, 71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 
+77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 
+77,65,80,0, 83,69,0, 68,73,70,0, 69,88,84,0, 69,77,0, 79,83,0, 
+78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 88,80,0, 82,65,67,0, 
+69,89,0, 84,82,0, 84,0, 69,82,0, 82,73,77,0, 68,0, 78,0, 
+71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 77,69,0, 
+73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 77,65,80,0, 61,0, 
+79,83,0, 68,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 83,69,0, 
+68,73,70,0, 80,0, 82,65,67,0, 85,66,0, 79,0, 69,89,0, 84,82,0, 
+84,0, 69,82,0, 82,73,77,0, 88,0, 68,0, 69,88,84,0, 82,0, 78,0, 
+77,0, 71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 80,0, 78,0, 
+69,78,0, 77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 
+77,65,80,0, 79,83,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 
+88,80,0, 82,65,67,0, 69,89,0, 84,82,0, 84,0, 69,82,0, 
+82,73,77,0, 88,0, 68,0, 79,84,0, 78,0, 71,72,84,0, 82,73,77,0, 
+78,0, 82,84,0, 82,0, 78,0, 77,69,0, 73,77,0, 80,80,69,82,0, 
+65,76,0, 77,65,80,0, 77,65,80,0, 79,83,0, 82,79,87,0, 78,0, 
+65,78,0, 69,76,76,0, 82,0, 82,67,76,69,0, 65,82,0, 83,69,0, 
+83,0, 77,0, 84,0, 83,69,0, 70,0, 80,0, 82,0, 65,67,0, 
+85,66,0, 79,0, 69,89,0, 85,84,0, 84,82,0, 84,0, 78,69,0, 
+69,82,0, 82,73,77,0, 68,0, 69,88,84,0, 69,78,0, 75,69,0, 
+73,78,84,0, 78,0, 68,0, 84,79,82,69,0, 85,82,78,0, 71,72,84,0, 
+82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 88,84,0, 77,69,0, 
+73,77,0, 80,80,69,82,0, 65,76,0, 65,73,84,0, 65,80,0, 
+73,67,75,0, 65,80,0, 73,67,75,0, 82,82,79,87,0, 69,76,76,0, 
+82,67,76,69,0, 65,82,0, 83,69,0, 84,65,0, 77,0, 84,0, 83,69,0, 
+70,0, 79,82,0, 85,66,0, 79,0, 69,89,0, 85,84,0, 70,84,0, 
+78,69,0, 80,0, 68,0, 69,88,84,0, 69,78,0, 75,69,0, 73,78,84,0, 
+68,0, 84,79,82,69,0, 85,82,78,0, 71,72,84,0, 89,83,84,69,77,50,0, 
+69,88,84,0, 65,73,84,0, 84,73,67,75,0, 84,73,67,75,0, 61,0, 
+61,0, 78,68,0, 83,69,0, 68,73,70,0, 69,88,84,0, 82,0, 69,77,0, 
+72,69,78,0, 72,82,0, 65,84,69,0, 78,75,69,89,0, 70,84,0, 
+87,69,82,0, 82,73,77,0, 73,68,0, 69,69,75,50,0, 71,72,84,0, 
+82,73,77,0, 82,0, 83,84,69,77,0, 77,69,0, 73,77,0, 
+80,80,69,82,0, 67,82,69,69,78,0, 73,78,68,79,87,0, 79,83,0, 78,0, 
+65,78,0, 79,83,0, 88,80,0, 82,65,67,0, 84,82,0, 78,0, 71,0, 
+78,0, 68,0, 69,69,75,0, 65,78,0, 78,0, 82,84,0, 
+83,84,69,77,50,0, 65,78,0, 65,76,0, 77,65,80,0, 77,65,80,0, 
+84,0, 79,83,0, 78,0, 78,0, 82,0, 83,0, 65,84,69,0, 83,69,0, 
+68,73,70,0, 80,0, 82,65,67,0, 69,89,0, 84,82,0, 84,0, 69,82,0, 
+82,73,77,0, 88,0, 68,0, 69,88,84,0, 78,0, 69,82,83,69,0, 
+71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 77,69,0, 
+73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 77,65,80,0, 
+82,73,78,84,69,82,0, 73,78,68,79,87,0, 79,83,0, 78,0, 65,78,0, 
+79,83,0, 88,80,0, 82,65,67,0, 84,82,0, 82,82,85,80,84,0, 78,0, 
+71,0, 88,0, 78,0, 68,0, 69,69,75,0, 65,78,0, 78,0, 82,84,0, 
+83,84,69,77,50,0, 65,78,0, 65,76,0, 77,65,80,0, 77,65,80,0, 
+61,0, 78,68,0, 83,69,0, 68,73,70,0, 85,66,0, 79,0, 69,88,84,0, 
+82,0, 69,77,0, 84,69,80,0, 69,78,0, 61,0, 78,68,0, 85,66,0, 
+79,0, 69,88,84,0, 82,0, 69,77,0, 84,69,80,0, 69,78,0, 34,0, 
+78,68,0, 82,0, 72,69,78,0, 82,0, 72,69,78,0, 79,83,0, 78,0, 
+65,78,0, 79,83,0, 83,69,0, 68,73,70,0, 80,0, 82,65,67,0, 
+84,82,0, 78,0, 71,0, 88,0, 78,0, 68,0, 69,88,84,0, 69,69,75,0, 
+78,0, 77,0, 78,0, 82,84,0, 83,84,69,77,50,0, 65,78,0, 65,76,0, 
+77,65,80,0, 77,65,80,0, 79,0, 79,83,0, 78,0, 78,0, 82,0, 83,0, 
+65,84,69,0, 83,69,0, 68,73,70,0, 80,0, 82,65,67,0, 69,89,0, 
+84,82,0, 84,0, 69,82,0, 82,73,77,0, 88,0, 68,0, 69,88,84,0, 
+78,0, 77,0, 71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 
+77,69,0, 73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 
+77,65,80,0, 79,83,0, 78,0, 65,78,0, 82,0, 83,0, 65,84,69,0, 
+83,69,0, 68,73,70,0, 80,0, 82,65,67,0, 69,89,0, 84,82,0, 84,0, 
+69,82,0, 82,73,77,0, 88,0, 68,0, 69,88,84,0, 78,0, 77,0, 
+71,72,84,0, 82,73,77,0, 78,0, 82,84,0, 82,0, 78,0, 77,69,0, 
+73,77,0, 80,80,69,82,0, 65,76,0, 77,65,80,0, 77,65,80,0, 
+72,82,0, 65,84,69,0, 83,69,0, 68,73,70,0, 78,75,69,89,0, 
+70,84,0, 87,69,82,0, 82,73,77,0, 73,68,0, 69,88,84,0, 
+69,69,75,50,0, 77,0, 71,72,84,0, 82,73,77,0, 82,0, 
+83,84,69,77,0, 77,69,0, 73,77,0, 80,80,69,82,0, 85,66,0, 79,0, 
+82,69,65,75,0, 79,78,84,73,78,85,69,0, 82,0, 72,69,78,0, 83,69,0, 
+68,73,70,0, 69,77,0, 83,69,0, 68,73,70,0, 69,88,84,0, 69,77,0, 
+79,0, 83,69,0, 68,73,70,0, 78,68,73,70,0, 69,77,0, 
+78,68,73,70,0, 69,77,0, 84,69,80,0, 69,88,84,0, 69,77,0, 
+69,88,84,0, 
+};
+#define AG_TCV(x) (((int)(x) >= -1 && (int)(x) <= 255) ? ag_tcv[(x) + 1] : 0)
+
+static const unsigned short ag_tcv[] = {
+   36, 36,320,320,320,320,320,320,320,320,  1,215,320,320,320,320,320,320,
+  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,  1,320,321,
+  318,322,320,320,320,252,251,277,261,225,275,323,278,324,324,324,324,324,
+  324,324,324,324,324,320,319,311,256,313,320,320,325,325,325,325,326,325,
+  325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,
+  325,325,320,320,320,276,320,320,325,325,325,325,326,325,325,325,325,325,
+  325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,320,320,
+  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
+  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
+  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
+  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
+  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
+  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
+  320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,
+  320,320,320,320,320
+};
+
+#ifndef SYNTAX_ERROR
+#define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \
+  (PCB).error_message, (PCB).line, (PCB).column)
+#endif
+
+#ifndef FIRST_LINE
+#define FIRST_LINE 1
+#endif
+
+#ifndef FIRST_COLUMN
+#define FIRST_COLUMN 1
+#endif
+
+#ifndef PARSER_STACK_OVERFLOW
+#define PARSER_STACK_OVERFLOW {fprintf(stderr, \
+   "\nParser stack overflow, line %d, column %d\n",\
+   (PCB).line, (PCB).column);}
+#endif
+
+#ifndef REDUCTION_TOKEN_ERROR
+#define REDUCTION_TOKEN_ERROR {fprintf(stderr, \
+    "\nReduction token error, line %d, column %d\n", \
+    (PCB).line, (PCB).column);}
+#endif
+
+
+typedef enum
+  {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key,
+   ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words;
+
+#ifndef GET_INPUT
+#define GET_INPUT ((PCB).input_code = getchar())
+#endif
+
+
+static int ag_look_ahead(void) {
+  if ((PCB).rx < (PCB).fx) {
+    return CONVERT_CASE((PCB).lab[(PCB).rx++]);
+  }
+  GET_INPUT;
+  (PCB).fx++;
+  return CONVERT_CASE((PCB).lab[(PCB).rx++] = (PCB).input_code);
+}
+
+static void ag_get_key_word(int ag_k) {
+  int save_index = (PCB).rx;
+  const  unsigned char *sp;
+  int ag_ch;
+  while (1) {
+    switch (ag_key_act[ag_k]) {
+    case ag_cf_end_key:
+      sp = ag_key_ends + ag_key_jmp[ag_k];
+      do {
+        if ((ag_ch = *sp++) == 0) {
+          int ag_k1 = ag_key_parm[ag_k];
+          int ag_k2 = ag_key_pt[ag_k1];
+          if (ag_key_itt[ag_k2 + ag_look_ahead()]) goto ag_fail;
+          (PCB).rx--;
+          (PCB).token_number = (parseBasic_token_type) ag_key_pt[ag_k1 + 1];
+          return;
+        }
+      } while (ag_look_ahead() == ag_ch);
+      goto ag_fail;
+    case ag_end_key:
+      sp = ag_key_ends + ag_key_jmp[ag_k];
+      do {
+        if ((ag_ch = *sp++) == 0) {
+          (PCB).token_number = (parseBasic_token_type) ag_key_parm[ag_k];
+          return;
+        }
+      } while (ag_look_ahead() == ag_ch);
+    case ag_no_match_key:
+ag_fail:
+      (PCB).rx = save_index;
+      return;
+    case ag_cf_set_key: {
+      int ag_k1 = ag_key_parm[ag_k];
+      int ag_k2 = ag_key_pt[ag_k1];
+      ag_k = ag_key_jmp[ag_k];
+      if (ag_key_itt[ag_k2 + (ag_ch = ag_look_ahead())]) break;
+      save_index = --(PCB).rx;
+      (PCB).token_number = (parseBasic_token_type) ag_key_pt[ag_k1+1];
+      break;
+    }
+    case ag_set_key:
+      save_index = (PCB).rx;
+      (PCB).token_number = (parseBasic_token_type) ag_key_parm[ag_k];
+    case ag_jmp_key:
+      ag_k = ag_key_jmp[ag_k];
+      ag_ch = ag_look_ahead();
+      break;
+    case ag_accept_key:
+      (PCB).token_number =  (parseBasic_token_type) ag_key_parm[ag_k];
+      return;
+    case ag_cf_accept_key: {
+      int ag_k1 = ag_key_parm[ag_k];
+      int ag_k2 = ag_key_pt[ag_k1];
+      if (ag_key_itt[ag_k2 + ag_look_ahead()]) (PCB).rx = save_index;
+      else {
+        (PCB).rx--;
+        (PCB).token_number =  (parseBasic_token_type) ag_key_pt[ag_k1+1];
+      }
+      return;
+    }
+    default:
+      /* not reachable; here to suppress compiler warnings */
+      goto ag_fail;
+    }
+    if (ag_ch <= 255) while (ag_key_ch[ag_k] < ag_ch) ag_k++;
+    if (ag_ch > 255 || ag_key_ch[ag_k] != ag_ch) {
+      (PCB).rx = save_index;
+      return;
+    }
+  }
+}
+
+
+#ifndef AG_NEWLINE
+#define AG_NEWLINE 10
+#endif
+
+#ifndef AG_RETURN
+#define AG_RETURN 13
+#endif
+
+#ifndef AG_FORMFEED
+#define AG_FORMFEED 12
+#endif
+
+#ifndef AG_TABCHAR
+#define AG_TABCHAR 9
+#endif
+
+static void ag_track(void) {
+  int ag_k = 0;
+  while (ag_k < (PCB).rx) {
+    int ag_ch = (PCB).lab[ag_k++];
+    switch (ag_ch) {
+    case AG_NEWLINE:
+      (PCB).column = 1, (PCB).line++;
+    case AG_RETURN:
+    case AG_FORMFEED:
+      break;
+    case AG_TABCHAR:
+      (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING);
+      break;
+    default:
+      (PCB).column++;
+    }
+  }
+  ag_k = 0;
+  while ((PCB).rx < (PCB).fx) (PCB).lab[ag_k++] = (PCB).lab[(PCB).rx++];
+  (PCB).fx = ag_k;
+  (PCB).rx = 0;
+}
+
+
+static void ag_prot(void) {
+  int ag_k;
+  ag_k = 128 - ++(PCB).btsx;
+  if (ag_k <= (PCB).ssx) {
+    (PCB).exit_flag = AG_STACK_ERROR_CODE;
+    PARSER_STACK_OVERFLOW;
+    return;
+  }
+  (PCB).bts[(PCB).btsx] = (PCB).sn;
+  (PCB).bts[ag_k] = (PCB).ssx;
+  (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx];
+  (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx];
+}
+
+static void ag_undo(void) {
+  if ((PCB).drt == -1) return;
+  while ((PCB).btsx) {
+    int ag_k = 128 - (PCB).btsx;
+    (PCB).sn = (PCB).bts[(PCB).btsx--];
+    (PCB).ssx = (PCB).bts[ag_k];
+    (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k];
+    (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k];
+  }
+  (PCB).token_number = (parseBasic_token_type) (PCB).drt;
+  (PCB).ssx = (PCB).dssx;
+  (PCB).sn = (PCB).dsn;
+  (PCB).drt = -1;
+}
+
+
+static const unsigned short ag_tstt[] = {
+215,214,36,1,0,212,213,
+1,0,
+215,214,36,0,34,35,
+215,214,36,0,7,8,12,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,0,10,11,15,16,19,21,24,28,30,58,95,96,99,133,135,136,190,192,
+  208,209,210,211,
+215,0,13,
+326,325,324,315,306,305,302,301,260,259,258,255,254,253,250,249,248,245,244,
+  243,242,241,240,239,238,236,234,233,232,231,230,229,228,227,226,223,220,
+  219,218,215,214,36,0,2,3,5,27,29,37,38,39,40,41,42,43,44,46,47,56,60,61,
+  66,69,71,73,74,75,78,80,82,83,84,85,86,87,88,91,92,93,94,97,98,100,102,
+  104,165,174,216,217,257,
+326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
+  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
+  261,256,253,252,251,225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
+  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
+  273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252,
+  251,250,225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
+  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
+  273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252,
+  251,250,225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
+  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
+  273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252,
+  251,250,225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,315,313,311,306,302,278,277,276,275,261,
+  256,252,251,225,215,214,36,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
+  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
+  261,256,253,252,251,225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
+  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
+  261,256,253,252,251,225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
+  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
+  273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252,
+  251,250,241,225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
+  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
+  273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,252,
+  251,250,225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,300,299,298,297,296,295,294,293,
+  292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,
+  261,256,253,252,251,225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,315,314,313,312,311,310,308,307,306,304,
+  303,302,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,285,
+  284,283,282,281,280,279,278,277,276,275,273,272,271,270,269,268,267,266,
+  265,264,263,261,260,259,258,256,253,252,251,250,237,225,220,219,215,214,
+  36,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,309,300,299,298,297,296,295,294,
+  293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,
+  275,273,272,271,270,269,268,267,266,265,264,263,261,260,259,258,256,253,
+  252,251,250,225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,1,0,212,213,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,0,15,16,19,21,24,28,30,58,95,96,99,133,135,136,190,192,208,209,210,
+  211,
+326,325,324,315,306,305,302,301,260,259,258,255,254,253,250,249,248,245,244,
+  243,242,241,240,239,238,236,234,233,232,231,230,229,228,227,226,223,220,
+  219,218,215,214,36,1,0,212,213,
+326,325,324,323,321,319,315,306,305,302,301,300,299,298,297,296,295,294,293,
+  292,291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,271,
+  270,269,268,267,266,265,264,263,260,259,258,255,254,253,252,250,249,248,
+  245,244,243,242,241,240,239,238,236,234,233,232,231,230,229,228,227,226,
+  225,223,220,219,215,214,36,1,0,212,213,
+326,325,1,0,212,213,
+326,325,0,3,27,216,
+326,325,315,306,305,302,301,260,259,258,255,254,253,250,249,248,245,244,243,
+  242,241,240,239,238,236,234,233,232,231,230,229,228,227,226,223,220,219,
+  215,214,36,0,3,5,27,37,40,41,42,43,44,46,47,56,60,61,66,69,71,73,74,75,
+  78,80,82,83,84,85,86,87,88,91,92,93,94,97,98,100,102,104,165,174,216,
+  257,
+326,325,324,322,319,314,313,312,311,310,278,277,276,275,261,256,252,251,225,
+  215,36,1,0,212,213,
+326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
+  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
+  265,264,263,260,259,258,253,252,250,1,0,212,213,
+326,325,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+319,315,314,313,312,311,310,308,307,306,304,302,261,256,252,251,225,215,214,
+  36,1,0,212,213,
+315,306,302,215,214,36,1,0,212,213,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  1,0,212,213,
+252,1,0,212,213,
+319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215,214,36,
+  1,0,212,213,
+315,306,302,215,214,36,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,1,0,212,213,
+246,235,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,1,0,212,213,
+326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
+  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
+  264,263,260,259,258,253,252,250,241,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
+326,325,1,0,212,213,
+315,306,302,215,214,36,1,0,212,213,
+326,325,324,315,306,302,215,214,36,1,0,212,213,
+324,323,321,275,261,1,0,212,213,
+326,325,1,0,212,213,
+326,325,321,318,317,1,0,212,213,
+326,325,324,323,321,319,318,317,316,315,306,302,300,299,298,297,296,295,294,
+  293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,
+  271,270,269,268,267,266,265,264,263,260,259,258,253,252,250,225,215,214,
+  36,1,0,212,213,
+324,318,247,235,1,0,212,213,
+324,318,247,235,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,222,1,0,212,213,
+326,325,324,1,0,212,213,
+326,325,324,1,0,212,213,
+326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
+  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
+  265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,
+  95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,175,183,185,187,188,216,257,262,274,
+326,325,0,3,27,216,
+256,252,0,95,99,
+252,0,95,
+252,0,95,
+252,0,95,
+256,252,0,95,99,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+252,0,95,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+246,235,0,77,89,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
+  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
+  149,150,151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
+  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
+  149,150,151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
+  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
+  149,150,151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
+  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
+  264,263,260,259,258,253,252,250,241,0,3,4,5,6,14,19,20,27,51,59,79,84,
+  93,94,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,
+  127,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,
+  150,151,152,153,154,155,156,157,158,216,257,262,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
+  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
+  149,150,151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
+  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
+  149,150,151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
+  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
+  149,150,151,152,153,154,155,156,157,158,216,274,
+326,325,0,3,5,27,76,216,257,
+326,325,324,0,2,3,27,29,45,216,217,
+324,323,321,275,261,0,4,6,14,16,19,20,72,159,262,274,
+326,325,0,3,5,27,70,198,216,257,
+326,325,321,318,317,0,67,201,202,203,207,208,
+326,325,324,323,321,319,318,317,316,315,306,302,300,299,298,297,296,295,294,
+  293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,
+  271,270,269,268,267,266,265,264,263,260,259,258,253,252,250,225,215,214,
+  36,0,62,201,202,206,207,208,
+324,318,247,235,0,2,29,57,77,90,160,208,217,
+324,318,247,235,0,2,29,57,77,90,160,208,217,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,222,0,3,6,14,19,20,27,48,51,94,
+  95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,
+  150,151,152,153,154,155,156,157,158,216,274,
+326,325,324,0,2,3,27,29,45,216,217,
+326,325,324,0,2,3,27,29,45,216,217,
+326,325,324,319,314,313,312,311,310,278,277,276,275,261,256,252,251,225,215,
+  36,1,0,212,213,
+324,0,22,
+326,324,323,319,315,314,313,312,311,310,308,307,306,304,303,302,278,277,276,
+  275,261,256,251,237,225,220,219,215,214,36,1,0,23,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+326,0,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+319,315,314,313,312,311,310,308,307,306,304,303,302,278,277,276,275,261,256,
+  251,237,225,220,219,215,214,36,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
+  137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,
+  155,156,157,158,216,274,
+252,0,95,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,33,1,0,31,
+252,1,0,212,213,
+319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215,214,36,
+  1,0,212,213,
+319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215,214,36,
+  1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+252,1,0,212,213,
+326,325,319,315,314,313,312,311,310,308,307,306,304,302,261,256,251,225,215,
+  214,36,1,0,212,213,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+252,0,95,
+276,0,133,
+252,0,95,
+278,277,0,135,136,
+326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
+  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
+  265,264,263,260,259,258,253,252,250,1,0,212,213,
+314,313,312,311,310,275,261,256,0,16,19,99,189,190,191,192,193,
+314,313,312,311,310,261,256,0,16,99,189,190,191,192,193,
+326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
+  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
+  265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,
+  95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,185,187,188,216,257,262,274,
+326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
+  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
+  265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,
+  95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,175,183,185,187,188,216,257,262,274,
+308,0,186,
+307,304,0,176,184,
+256,0,99,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,128,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,0,5,216,257,
+326,325,0,5,216,257,
+326,325,0,5,216,257,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,106,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,324,322,0,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+261,225,0,16,58,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+275,261,0,16,19,
+315,306,302,215,214,36,1,0,212,213,
+326,325,324,323,315,306,302,300,299,298,297,296,295,294,293,292,291,290,289,
+  288,287,286,285,284,283,282,281,280,279,275,253,252,215,214,36,1,0,212,
+  213,
+252,0,95,
+275,261,225,0,16,19,58,
+225,0,58,
+225,0,58,
+237,0,81,
+275,261,225,0,16,19,58,
+225,0,58,
+326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
+  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
+  264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,95,
+  100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,130,
+  132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
+  153,154,155,156,157,158,216,257,262,274,
+261,225,0,16,58,
+225,0,58,
+237,0,81,
+252,0,95,
+252,0,95,
+225,0,58,
+324,323,0,6,14,20,274,
+324,323,0,6,14,20,274,
+225,0,58,
+252,0,95,
+252,0,95,
+225,0,58,
+252,1,0,212,213,
+252,0,95,
+324,0,2,29,160,217,
+321,0,4,204,262,
+326,325,321,0,205,
+326,325,0,3,5,27,68,195,216,257,
+326,325,324,323,321,319,317,315,306,302,300,299,298,297,296,295,294,293,292,
+  291,290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,271,270,
+  269,268,267,266,265,264,263,260,259,258,253,252,250,225,215,214,36,1,0,
+  212,213,
+317,0,202,207,
+326,325,324,323,321,319,315,306,302,300,299,298,297,296,295,294,293,292,291,
+  290,289,288,287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,
+  268,267,266,265,264,263,260,259,258,253,252,250,225,215,214,36,0,3,4,5,
+  6,14,19,20,27,51,59,63,93,94,95,100,102,104,114,115,117,118,119,120,121,
+  122,123,124,125,126,127,129,130,132,134,137,138,139,140,141,142,143,144,
+  145,146,147,148,149,150,151,152,153,154,155,156,157,158,216,257,262,274,
+326,325,321,315,306,302,273,272,271,270,269,268,267,266,265,264,263,260,259,
+  258,252,250,215,214,36,1,0,212,213,
+324,0,2,29,160,217,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+225,0,58,
+275,261,220,219,0,16,19,44,46,
+224,221,1,0,212,213,
+224,221,0,49,50,
+324,0,22,
+324,0,22,
+324,275,261,0,17,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,251,0,3,6,14,19,20,27,51,94,95,
+  96,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,
+  150,151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,131,
+326,325,324,323,322,321,320,319,318,313,311,278,277,276,275,261,256,252,251,
+  225,215,33,1,0,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
+  137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,
+  155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,116,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
+  132,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,
+  154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
+  132,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,
+  154,155,156,157,158,216,274,
+326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
+  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
+  264,263,260,259,258,253,252,250,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
+  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
+  264,263,260,259,258,253,252,250,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
+  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
+  264,263,260,259,258,253,252,250,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
+  132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
+  153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,94,95,129,130,
+  132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
+  153,154,155,156,157,158,216,274,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,
+  127,216,257,262,
+307,251,0,96,184,
+314,313,312,311,310,275,261,256,251,0,16,19,96,99,189,190,191,192,193,
+314,313,312,311,310,261,256,251,0,16,96,99,189,190,191,192,193,
+326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
+  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
+  265,264,263,260,259,258,253,252,250,1,0,212,213,
+326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
+  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
+  265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,
+  95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,185,187,188,216,257,262,274,
+326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
+  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
+  265,264,263,260,259,258,253,252,250,1,0,212,213,
+326,325,324,323,321,309,300,299,298,297,296,295,294,293,292,291,290,289,288,
+  287,286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,
+  265,264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,
+  95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,183,185,187,188,216,257,262,274,
+304,0,177,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+275,261,0,16,19,
+252,225,0,95,105,
+252,225,0,95,103,
+252,225,0,95,101,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+261,0,16,
+261,251,0,16,96,
+326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
+  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
+  264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,95,
+  100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,130,
+  132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
+  153,154,155,156,157,158,216,257,262,274,
+261,251,0,16,96,
+275,261,251,0,16,19,96,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,1,0,212,213,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
+  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
+  149,150,151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
+  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
+  149,150,151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,241,0,3,6,14,19,20,27,51,79,84,
+  94,95,129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,
+  149,150,151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,163,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,161,
+326,325,0,3,5,27,216,257,
+324,323,321,275,261,0,4,6,14,16,19,20,159,262,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,200,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,199,
+326,325,0,3,5,27,198,216,257,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+321,0,4,204,262,
+252,0,95,
+252,0,95,
+225,0,58,
+261,0,16,
+275,261,0,16,19,
+319,315,306,302,225,215,214,36,0,58,64,
+261,0,16,
+275,261,225,0,16,19,58,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,324,0,54,
+326,325,324,0,52,
+315,306,302,215,214,36,1,0,212,213,
+315,306,302,215,214,36,1,0,212,213,
+324,0,18,
+324,0,18,
+261,251,0,16,96,
+261,251,0,16,96,
+261,225,0,16,58,
+261,251,0,16,96,
+261,251,0,16,96,
+261,251,0,16,96,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+275,261,225,0,16,19,58,
+275,261,225,0,16,19,58,
+275,261,251,0,16,19,96,
+275,261,225,0,16,19,58,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+275,261,251,225,0,16,19,58,96,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+261,251,0,16,96,
+261,251,0,16,96,
+261,251,0,16,96,
+261,251,0,16,96,
+261,251,0,16,96,
+261,251,0,16,96,
+261,251,0,16,96,
+275,261,251,0,16,19,96,
+275,261,251,225,0,16,19,58,96,
+261,225,0,16,58,
+261,225,0,16,58,
+261,225,0,16,58,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+276,0,133,
+276,0,133,
+275,261,0,16,19,
+275,261,0,16,19,
+275,261,0,16,19,
+275,261,0,16,19,
+275,261,0,16,19,
+275,261,0,16,19,
+278,277,0,135,136,
+278,277,0,135,136,
+261,0,16,
+261,0,16,
+261,0,16,
+261,0,16,
+261,0,16,
+261,0,16,
+308,0,186,
+315,306,215,214,36,1,0,212,213,
+315,306,215,214,36,0,35,
+275,261,237,0,16,19,166,
+275,261,0,16,19,
+251,225,0,58,96,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,112,
+225,0,58,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,110,
+225,0,58,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,108,
+225,0,58,
+251,225,0,58,96,
+275,261,0,16,19,
+261,0,16,
+275,261,225,0,16,19,58,
+275,261,0,16,19,
+261,0,16,
+261,0,16,
+275,261,225,0,16,19,58,
+261,0,16,
+275,261,0,16,19,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+252,0,95,
+252,0,95,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+275,261,225,0,16,19,58,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,197,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,196,
+326,325,0,3,5,27,68,195,216,257,
+326,325,324,323,321,300,299,298,297,296,295,294,293,292,291,290,289,288,287,
+  286,285,284,283,282,281,280,279,275,273,272,271,270,269,268,267,266,265,
+  264,263,260,259,258,253,252,250,0,3,4,5,6,14,19,20,27,51,59,93,94,95,
+  100,102,104,114,115,117,118,119,120,121,122,123,124,125,126,127,129,130,
+  132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
+  153,154,155,156,157,158,216,257,262,274,
+319,315,306,302,215,214,36,0,65,209,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+261,225,0,16,58,
+326,325,324,0,2,3,27,29,45,55,216,217,
+326,325,324,0,2,3,27,29,45,53,216,217,
+324,0,
+324,0,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+251,225,0,58,96,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+251,225,0,58,96,
+315,306,215,214,36,0,7,8,12,178,
+237,0,81,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+256,0,99,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+256,0,99,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+251,225,0,58,96,
+251,225,0,58,96,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,164,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,162,
+251,225,0,58,96,
+251,225,0,58,96,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+261,0,16,
+275,261,0,16,19,
+275,261,225,0,16,19,58,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+225,0,58,
+225,0,58,
+261,251,0,16,96,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+261,251,0,16,96,
+275,261,225,0,16,19,58,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+315,306,36,0,179,194,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+275,261,0,16,19,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+251,225,0,58,96,
+275,261,251,0,16,19,96,
+251,225,0,58,96,
+275,261,251,0,16,19,96,
+251,225,0,58,96,
+275,261,225,0,16,19,58,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+275,261,251,0,16,19,96,
+275,261,225,0,16,19,58,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,107,
+  129,130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
+  151,152,153,154,155,156,157,158,216,274,
+275,261,251,0,16,19,96,
+251,225,0,58,96,
+251,225,0,58,96,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+261,0,16,
+326,325,324,0,2,3,27,29,45,216,217,
+326,325,324,0,2,3,27,29,45,216,217,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+306,215,214,36,1,0,212,213,
+306,215,214,36,0,35,
+306,36,0,180,
+303,275,261,215,214,0,16,19,167,173,
+275,261,0,16,19,
+225,0,113,
+256,0,99,
+225,0,111,
+256,0,99,
+225,0,109,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+261,0,16,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+251,225,0,58,96,
+251,225,0,58,96,
+261,0,16,
+275,261,251,0,16,19,96,
+306,215,214,36,0,7,8,12,
+306,36,0,181,182,
+324,323,275,261,1,0,212,213,
+324,323,275,261,0,6,14,16,19,20,159,274,
+215,214,0,168,
+225,0,58,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+225,0,58,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+225,0,58,
+275,261,251,0,16,19,96,
+275,261,237,0,16,19,81,
+315,306,302,215,214,36,1,0,212,213,
+215,214,0,7,8,12,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+261,0,16,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+261,0,16,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+256,0,99,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+302,215,214,36,0,35,
+275,261,251,0,16,19,96,
+275,261,251,0,16,19,96,
+275,261,225,0,16,19,58,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+275,261,225,0,16,19,58,
+302,215,214,36,0,7,8,12,169,
+256,0,99,
+256,0,99,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+261,0,16,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+302,36,0,170,172,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+275,261,251,0,16,19,96,
+275,261,225,0,16,19,58,
+326,325,315,306,302,215,214,36,1,0,212,213,
+326,325,315,306,302,215,214,36,0,3,27,171,216,
+261,0,16,
+261,0,16,
+256,0,99,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+326,325,321,273,272,271,270,269,268,267,266,265,264,263,260,259,258,252,250,
+  0,4,5,59,93,95,100,102,104,114,115,117,118,119,120,121,122,123,124,125,
+  126,127,216,257,262,
+275,261,225,0,16,19,58,
+261,0,16,
+326,325,324,323,300,299,298,297,296,295,294,293,292,291,290,289,288,287,286,
+  285,284,283,282,281,280,279,275,253,252,0,3,6,14,19,20,27,51,94,95,129,
+  130,132,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
+  152,153,154,155,156,157,158,216,274,
+275,261,0,16,19,
+
+};
+
+
+static unsigned const char ag_astt[14392] = {
+  8,8,8,1,7,1,1,9,5,8,8,8,7,0,1,8,1,2,7,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,1,7,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,7,1,3,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,2,2,5,5,1,5,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,7,2,2,1,1,2,3,1,1,3,3,3,
+  3,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,2,1,1,1,1,1,1,1,1,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,
+  3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,
+  1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,
+  7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  1,7,1,3,5,5,10,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,1,7,1,3,2,2,7,2,2,1,2,2,5,5,1,5,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,7,2,1,1,3,3,3,3,
+  3,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,2,1,1,1,1,1,1,1,10,
+  10,10,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,
+  3,5,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,1,7,1,3,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,
+  5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,
+  1,3,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,
+  1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,
+  1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,
+  5,1,7,1,3,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,1,7,1,3,
+  5,5,1,7,1,3,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,
+  3,5,5,5,5,1,7,1,3,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,1,7,1,3,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,7,2,1,1,1,1,7,
+  1,1,1,7,1,1,7,1,1,7,1,1,1,7,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,
+  1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
+  2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,7,2,1,1,1,1,1,2,
+  2,2,4,2,2,2,2,2,1,1,2,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,2,2,7,2,1,1,1,1,1,1,4,
+  4,4,1,1,7,1,1,1,1,1,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,2,1,1,1,
+  2,1,1,1,7,2,2,2,2,2,2,1,1,2,1,1,1,7,2,2,1,1,1,2,1,1,2,2,2,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,7,2,2,2,2,2,1,1,2,2,2,7,2,
+  2,2,2,2,1,1,10,10,10,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,7,2,5,10,
+  1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,3,5,1,7,1,3,5,
+  1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,
+  1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,
+  5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,1,5,1,7,1,1,7,
+  1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,
+  1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  7,1,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,
+  1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,1,7,1,3,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,
+  1,7,1,1,7,1,1,5,1,1,4,1,1,1,5,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,1,1,1,1,1,1,
+  1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,
+  1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,
+  1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,4,7,1,1,1,7,1,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,2,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,7,1,1,1,2,2,7,1,1,1,2,2,7,1,
+  1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,
+  1,1,1,10,10,10,2,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,7,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,5,5,5,5,5,5,1,7,1,3,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,
+  3,1,7,1,1,1,1,7,1,1,1,1,4,1,1,4,1,1,7,1,1,1,1,7,1,1,1,1,7,1,2,2,2,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,7,1,1,7,1,1,7,
+  1,1,7,1,1,5,1,2,1,7,2,1,1,1,2,1,7,2,1,1,1,1,5,1,1,4,1,1,4,1,1,5,1,5,1,7,1,
+  3,1,7,1,2,7,2,2,2,1,1,7,2,3,1,4,4,4,7,1,2,2,7,2,1,1,2,1,1,1,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,1,7,1,3,1,4,2,1,2,2,2,1,1,5,5,5,5,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,5,5,5,7,2,2,
+  1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,1,7,1,3,2,7,2,2,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,4,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1,1,5,5,1,7,1,3,
+  1,1,7,2,2,1,4,2,1,5,2,8,1,1,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,
+  1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,
+  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,
+  2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,
+  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,2,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,
+  2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
+  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,7,1,10,10,10,10,10,2,10,10,10,10,10,10,10,10,10,10,10,10,10,
+  10,2,10,10,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
+  1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,
+  7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,
+  3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2,
+  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
+  1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,2,1,1,1,
+  1,2,2,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1,1,7,1,1,3,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,7,1,3,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2,2,2,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
+  1,1,1,4,7,1,1,1,4,7,1,1,1,4,7,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,
+  1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,1,7,1,1,3,2,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,7,1,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  7,2,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,7,2,1,1,1,1,2,
+  1,1,1,1,7,2,2,1,1,1,1,2,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  7,1,2,2,7,2,1,1,3,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,7,2,3,1,1,4,1,1,4,1,1,5,1,1,4,1,1,1,4,1,1,4,4,4,4,1,4,4,4,7,1,1,
+  1,4,1,1,1,1,7,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,4,4,4,7,1,4,4,4,7,1,5,5,5,5,5,5,1,7,1,3,
+  5,5,5,5,5,5,1,7,1,3,2,7,1,2,7,1,1,1,7,1,2,1,1,7,1,2,1,1,7,1,1,1,1,7,1,2,1,
+  1,7,1,2,1,1,7,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,1,1,1,1,7,1,1,1,
+  1,1,1,7,1,1,2,1,1,1,7,1,1,1,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,
+  1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,1,7,1,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,
+  1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,7,1,2,1,1,7,1,2,1,1,7,1,2,1,1,7,1,
+  2,1,1,7,1,2,1,1,7,1,2,1,1,1,7,1,1,2,1,1,1,1,7,1,1,1,2,1,1,7,1,1,1,1,7,1,1,
+  1,1,7,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  4,1,1,4,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,
+  4,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,5,5,5,5,5,1,7,1,
+  3,5,5,8,8,5,7,1,1,1,4,7,1,1,1,1,1,4,1,1,1,1,7,1,1,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,1,1,7,1,1,1,1,4,1,1,1,4,1,1,1,1,7,1,1,1,1,
+  1,5,1,1,1,4,1,1,4,1,1,1,1,7,1,1,1,1,4,1,1,1,4,1,1,2,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,7,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  7,1,2,2,7,2,1,1,3,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,2,1,1,1,1,1,1,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,4,4,4,4,4,4,7,3,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,4,1,1,2,2,2,7,2,2,2,2,2,1,1,1,2,2,2,7,2,2,2,2,2,1,1,
+  1,10,4,10,4,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,
+  2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
+  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,4,4,8,1,4,7,1,1,1,1,1,7,1,2,2,2,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,7,1,2,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,7,1,1,1,7,1,2,1,1,7,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,4,1,1,1,4,1,1,1,1,1,4,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,4,1,1,4,1,1,1,7,1,2,1,
+  1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,1,7,1,2,1,1,1,7,1,
+  1,1,1,1,1,7,1,1,2,1,1,1,7,1,1,2,1,5,5,7,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1,1,1,7,1,1,1,
+  1,1,7,1,1,1,1,1,7,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,7,1,1,2,1,1,1,7,1,1,1,2,2,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,2,1,1,7,1,2,1,1,7,1,
+  2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,2,2,1,1,1,1,1,4,1,2,2,2,7,2,2,2,2,2,1,1,2,2,2,7,2,2,2,2,2,1,1,2,2,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,1,7,1,3,5,8,8,
+  5,7,1,4,4,7,1,1,1,1,4,4,7,1,1,1,1,1,1,4,1,1,4,7,1,1,7,1,4,7,1,1,7,1,4,7,1,
+  2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,2,1,1,7,1,2,1,
+  4,1,1,1,1,7,1,1,2,5,8,1,5,7,1,1,1,1,2,7,3,3,5,5,5,5,1,7,1,3,2,1,1,1,7,2,1,
+  1,1,1,2,1,4,4,7,1,1,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,7,1,1,1,1,7,1,
+  1,1,1,1,1,7,1,1,1,5,5,5,5,5,5,1,7,1,3,8,1,7,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,5,8,8,5,7,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,2,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,
+  1,1,1,1,1,1,7,1,1,1,4,8,1,4,7,1,1,1,1,1,7,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,7,
+  1,1,1,1,1,1,7,1,1,1,5,5,5,5,5,5,5,5,1,7,1,3,2,2,4,4,4,4,4,4,7,2,2,2,1,1,4,
+  1,1,4,1,1,7,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,
+  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,2,2,1,1,1,1,1,1,1,7,1,1,1,1,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,7,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,4,1,1
+};
+
+
+static const unsigned short ag_pstt[] = {
+2,2,2,1,0,1,2,
+327,329,
+3,3,3,2,0,3,
+6,4,36,3,7,5,6,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,1,4,1,330,
+9,10,15,17,24,26,27,14,25,11,13,16,21,8,18,20,12,23,22,19,3,5,28,6,28,28,28,
+  28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,
+29,6,7,
+24,24,29,42,42,35,42,36,37,38,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,
+  55,56,57,58,59,60,61,62,63,64,65,66,67,31,42,42,42,7,28,26,74,70,41,38,
+  33,32,38,38,38,38,97,96,95,94,93,92,91,90,89,88,65,87,86,85,84,83,82,81,
+  80,79,78,77,87,88,76,75,92,73,72,71,69,68,34,30,40,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,1,8,1,392,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,1,9,1,442,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,1,10,1,441,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,1,11,1,429,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,1,12,1,372,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,1,13,1,427,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,1,14,1,435,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,1,15,1,440,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,1,16,1,394,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,1,17,1,439,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,1,18,1,391,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,1,19,1,341,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,1,20,1,377,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,1,21,1,393,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,1,22,1,367,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,1,23,1,368,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,1,24,1,438,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,1,25,1,434,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,1,26,1,437,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,1,27,1,436,
+9,10,15,17,24,26,27,14,25,11,13,16,21,8,18,20,12,23,22,19,4,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,1,29,1,331,
+328,328,30,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,1,30,1,333,
+328,328,1,31,1,334,
+24,24,32,26,40,98,
+24,24,42,42,35,42,36,37,38,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,
+  56,57,58,59,60,61,62,63,64,65,66,67,42,42,42,33,26,74,70,39,39,39,39,39,
+  97,96,95,94,93,92,91,90,89,88,65,87,86,85,84,83,82,81,80,79,78,77,87,88,
+  76,75,92,73,72,71,69,68,34,40,
+25,25,25,27,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,1,34,1,332,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,1,35,1,421,
+328,328,1,36,1,417,
+328,1,37,1,376,
+328,1,38,1,375,
+328,1,39,1,374,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,1,40,1,373,
+328,328,328,328,328,328,1,41,1,371,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  1,42,1,370,
+328,1,43,1,369,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  1,44,1,366,
+328,328,328,328,328,328,1,45,1,365,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,1,46,1,364,
+328,328,1,47,1,361,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,1,48,1,360,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,1,49,1,359,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,1,50,1,358,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,1,51,1,357,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,1,52,1,356,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,1,53,1,355,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,1,54,1,354,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,1,55,1,352,
+328,328,1,56,1,350,
+328,328,328,328,328,328,1,57,1,349,
+328,328,328,328,328,328,328,328,328,1,58,1,348,
+328,328,328,328,328,1,59,1,347,
+328,328,1,60,1,346,
+328,328,328,328,328,1,61,1,345,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,1,62,1,344,
+328,328,328,328,1,63,1,343,
+328,328,328,328,1,64,1,342,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,1,65,1,339,
+328,328,328,1,66,1,336,
+328,328,328,1,67,1,335,
+24,24,18,99,150,178,101,102,103,104,105,106,107,108,109,110,111,112,113,114,
+  115,116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,
+  160,161,37,38,39,43,23,44,68,26,115,176,138,123,148,100,149,179,180,124,
+  125,182,172,174,173,180,180,171,170,169,168,167,166,165,164,132,133,163,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,184,183,183,183,181,34,40,162,147,
+24,24,69,26,185,98,
+12,23,70,186,187,
+23,71,188,
+23,72,189,
+23,73,190,
+12,23,74,191,192,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,75,115,
+  176,195,124,194,172,174,173,195,195,171,170,169,168,167,166,165,164,132,
+  133,163,193,40,162,
+23,76,196,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,77,26,138,123,148,100,149,198,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+199,200,78,81,82,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,51,79,26,138,123,148,100,149,202,203,
+  201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,
+  135,134,133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,51,80,26,138,123,148,100,149,202,204,
+  201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,
+  135,134,133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,51,81,26,138,123,148,100,149,202,205,
+  201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,
+  135,134,133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,82,26,138,123,148,100,149,206,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,150,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,
+  116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,160,
+  161,37,38,39,43,23,44,51,83,26,115,176,138,123,148,100,149,202,209,207,
+  201,124,125,208,172,174,173,209,209,171,170,169,168,167,166,165,164,132,
+  133,163,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,
+  134,133,132,131,130,129,128,127,126,124,34,40,162,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,51,84,26,138,123,148,100,149,202,210,
+  201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,
+  135,134,133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,51,85,26,138,123,148,100,149,202,211,
+  201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,
+  135,134,133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,51,86,26,138,123,148,100,149,202,69,
+  201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,
+  135,134,133,132,131,130,129,128,127,126,124,98,147,
+24,24,87,26,212,213,214,34,40,
+24,24,29,63,28,26,185,184,64,98,30,
+18,99,150,18,20,89,249,180,123,216,215,100,217,250,162,147,
+24,24,90,26,218,219,220,220,34,40,
+258,258,261,25,221,91,226,226,225,224,222,223,
+265,265,265,265,265,265,25,221,227,265,265,265,265,265,265,265,265,265,265,
+  265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,
+  265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,
+  265,92,229,229,268,228,222,223,
+29,25,230,200,93,28,183,57,80,85,274,231,30,
+29,25,230,200,94,28,183,234,233,232,274,231,30,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,236,95,26,138,123,148,100,149,237,235,
+  125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,
+  134,133,132,131,130,129,128,127,126,124,98,147,
+24,24,29,96,28,26,185,184,48,98,30,
+24,24,29,97,28,26,185,184,47,98,30,
+25,25,25,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,1,98,1,332,
+238,99,17,
+14,19,239,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+  14,14,14,14,14,14,100,16,
+328,1,101,1,416,
+328,1,102,1,415,
+328,1,103,1,414,
+328,1,104,1,413,
+328,1,105,1,412,
+328,1,106,1,411,
+328,1,107,1,410,
+328,1,108,1,409,
+328,1,109,1,408,
+328,1,110,1,407,
+328,1,111,1,406,
+328,1,112,1,405,
+328,1,113,1,404,
+328,1,114,1,403,
+328,1,115,1,402,
+328,1,116,1,401,
+328,1,117,1,400,
+328,1,118,1,399,
+328,1,119,1,398,
+328,1,120,1,397,
+328,1,121,1,396,
+328,1,122,1,395,
+240,8,
+23,124,241,
+23,125,242,
+23,126,243,
+23,127,244,
+23,128,245,
+23,129,246,
+23,130,247,
+23,131,248,
+23,132,249,
+23,133,250,
+23,134,251,
+23,135,252,
+23,136,253,
+23,137,254,
+23,138,255,
+23,139,256,
+23,140,257,
+23,141,258,
+23,142,259,
+23,143,260,
+23,144,261,
+23,145,262,
+23,146,263,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,1,147,1,390,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,148,26,138,123,148,100,149,125,197,144,
+  144,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,130,
+  129,128,127,126,124,98,147,
+23,140,264,
+33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,150,
+  265,
+328,1,151,1,389,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  1,152,1,388,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  1,153,1,387,
+328,1,154,1,386,
+328,1,155,1,385,
+328,1,156,1,384,
+328,1,157,1,383,
+328,1,158,1,382,
+328,1,159,1,381,
+328,1,160,1,380,
+328,1,161,1,379,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,1,162,1,378,
+23,163,266,
+23,164,267,
+23,165,268,
+23,166,269,
+23,167,270,
+23,168,271,
+23,169,272,
+23,170,273,
+23,171,274,
+23,172,275,
+23,173,276,
+23,174,277,
+8,147,278,
+23,113,279,
+16,21,150,281,280,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,1,178,1,425,
+282,11,285,13,288,18,20,12,179,292,291,290,289,287,286,284,283,
+282,11,285,13,288,20,12,180,299,298,297,296,295,294,293,
+24,24,18,99,150,178,101,102,103,104,105,106,107,108,109,110,111,112,113,114,
+  115,116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,
+  160,161,37,38,39,43,23,44,181,26,115,176,138,123,148,100,149,179,180,
+  124,125,182,172,174,173,180,180,171,170,169,168,167,166,165,164,132,133,
+  163,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,218,218,181,34,40,162,147,
+24,24,18,99,150,178,101,102,103,104,105,106,107,108,109,110,111,112,113,114,
+  115,116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,
+  160,161,37,38,39,43,23,44,182,26,115,176,138,123,148,100,149,301,302,
+  124,125,182,172,174,173,302,302,171,170,169,168,167,166,165,164,132,133,
+  163,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,300,183,183,183,181,34,40,162,147,
+303,212,304,
+305,206,184,307,306,
+12,185,308,
+136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,
+  136,136,136,136,136,136,136,136,136,136,186,309,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,187,26,138,123,148,100,149,310,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,188,311,193,40,
+24,24,189,312,193,40,
+24,24,190,313,193,40,
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
+  100,100,100,100,100,100,100,100,100,100,191,314,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,192,
+  115,176,315,124,194,172,174,173,315,315,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+25,25,25,27,193,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,194,
+  115,176,316,124,194,172,174,173,316,316,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+20,19,195,299,317,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,196,
+  115,176,318,124,194,172,174,173,318,318,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,197,26,138,123,148,100,149,319,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+18,20,86,292,291,
+328,328,328,328,328,328,1,199,1,362,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,1,200,1,
+  351,
+23,201,320,
+18,20,19,202,292,291,321,
+19,79,322,
+19,78,323,
+324,205,325,
+18,20,19,206,292,291,326,
+19,207,327,
+24,24,18,99,150,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,
+  116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,160,
+  161,37,38,39,43,23,44,208,26,115,176,138,123,148,100,149,319,316,124,
+  125,208,172,174,173,316,316,171,170,169,168,167,166,165,164,132,133,163,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,34,40,162,147,
+20,19,209,299,328,
+19,210,329,
+324,211,330,
+23,212,331,
+23,213,332,
+19,66,333,
+18,99,215,182,123,100,147,
+18,99,216,181,123,100,147,
+19,62,334,
+23,246,335,
+23,243,336,
+19,61,337,
+328,1,221,1,433,
+23,222,338,
+29,223,28,183,272,30,
+150,224,270,262,162,
+260,260,263,225,339,
+24,24,226,26,340,341,60,342,34,40,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,1,
+  227,1,432,
+221,267,269,222,
+24,24,18,99,150,253,253,253,253,101,102,103,104,105,106,107,108,109,110,111,
+  112,113,114,115,116,117,118,119,120,121,122,18,151,152,153,154,155,156,
+  157,158,159,160,161,37,38,39,43,23,44,345,253,253,253,229,26,115,176,
+  138,123,148,100,149,344,343,345,124,125,208,172,174,173,343,343,171,170,
+  169,168,167,166,165,164,132,133,163,175,175,175,177,146,145,144,143,142,
+  141,140,139,138,137,136,135,134,133,132,131,130,129,128,127,126,124,34,
+  40,162,147,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,1,230,1,363,
+29,231,28,183,273,30,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,83,115,
+  176,346,124,194,172,174,173,346,346,171,170,169,168,167,166,165,164,132,
+  133,163,193,40,162,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,233,26,138,123,148,100,149,347,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+19,234,348,
+18,20,66,67,235,292,291,350,349,
+328,328,1,236,1,338,
+351,352,237,49,50,
+238,20,21,
+238,15,13,
+354,353,354,240,354,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,241,
+  115,176,355,124,194,172,174,173,355,355,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,242,
+  115,176,356,124,194,172,174,173,356,356,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,243,
+  115,176,357,124,194,172,174,173,357,357,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,244,
+  115,176,358,124,194,172,174,173,358,358,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,245,
+  115,176,359,124,194,172,174,173,359,359,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,246,
+  115,176,360,124,194,172,174,173,360,360,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,247,26,138,123,148,100,149,361,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,248,26,138,123,148,100,149,362,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,249,26,138,123,148,100,149,363,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,250,26,138,123,148,100,149,364,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,22,251,26,138,123,148,100,149,365,125,
+  197,169,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,
+  134,133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,252,26,138,123,148,100,149,366,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,253,26,138,123,148,100,149,367,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,254,26,138,123,148,100,149,368,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,255,26,138,123,148,100,149,369,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,256,26,138,123,148,100,149,370,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,257,26,138,123,148,100,149,371,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,258,26,138,123,148,100,149,372,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,259,26,138,123,148,100,149,373,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,260,26,138,123,148,100,149,374,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,261,26,138,123,148,100,149,375,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,262,26,138,123,148,100,149,376,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,263,26,138,123,148,100,149,377,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,
+  141,141,141,141,141,141,141,141,141,141,264,378,
+34,34,34,34,34,31,34,34,34,34,34,34,34,34,34,34,34,34,34,34,32,35,34,265,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,266,
+  115,176,379,124,194,172,174,173,379,379,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,267,
+  115,176,380,124,194,172,174,173,380,380,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,268,
+  115,176,381,124,194,172,174,173,381,381,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,269,
+  115,176,382,124,194,172,174,173,382,382,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,270,
+  115,176,383,124,194,172,174,173,383,383,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,271,
+  115,176,384,124,194,172,174,173,384,384,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,272,
+  115,176,385,124,194,172,174,173,385,385,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,273,26,138,123,148,100,149,386,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,274,26,138,123,148,100,149,387,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,275,
+  115,176,388,124,194,172,174,173,388,388,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,276,
+  115,176,389,124,194,172,174,173,389,389,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,277,
+  115,176,390,124,194,172,174,173,390,390,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,278,26,138,123,148,100,149,125,197,146,
+  146,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,130,
+  129,128,127,126,124,98,147,
+116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,
+  116,116,116,116,116,116,116,116,116,116,279,391,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,280,26,138,123,148,100,149,125,197,392,
+  392,392,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,
+  130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,281,26,138,123,148,100,149,125,197,393,
+  393,393,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,
+  130,129,128,127,126,124,98,147,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,1,282,1,430,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,283,26,138,123,148,100,149,394,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,284,26,138,123,148,100,149,395,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,1,285,1,428,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,286,26,138,123,148,100,149,396,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,287,26,138,123,148,100,149,397,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,1,288,1,426,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,289,26,138,123,148,100,149,398,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,290,26,138,123,148,100,149,399,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,291,26,138,123,148,100,149,125,197,175,
+  175,175,400,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,
+  131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,292,26,138,123,148,100,149,125,197,175,
+  175,175,401,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,
+  131,130,129,128,127,126,124,98,147,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,293,
+  115,176,402,124,194,172,174,173,402,402,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,294,
+  115,176,403,124,194,172,174,173,403,403,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,295,
+  115,176,404,124,194,172,174,173,404,404,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,296,
+  115,176,405,124,194,172,174,173,405,405,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,297,
+  115,176,406,124,194,172,174,173,406,406,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,298,
+  115,176,407,124,194,172,174,173,407,407,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,299,
+  115,176,124,194,172,174,173,112,112,171,170,169,168,167,166,165,164,132,
+  133,163,193,40,162,
+305,22,300,217,306,
+282,11,285,13,288,18,20,12,22,301,292,291,143,290,289,287,286,284,283,
+282,11,285,13,288,20,12,22,302,299,118,298,297,296,295,294,293,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,1,303,1,424,
+24,24,18,99,150,178,101,102,103,104,105,106,107,108,109,110,111,112,113,114,
+  115,116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,
+  160,161,37,38,39,43,23,44,304,26,115,176,138,123,148,100,149,179,180,
+  124,125,182,172,174,173,180,180,171,170,169,168,167,166,165,164,132,133,
+  163,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,215,215,181,34,40,162,147,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,1,305,1,423,
+24,24,18,99,150,178,101,102,103,104,105,106,107,108,109,110,111,112,113,114,
+  115,116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,
+  160,161,37,38,39,43,23,44,306,26,115,176,138,123,148,100,149,179,180,
+  124,125,182,172,174,173,180,180,171,170,169,168,167,166,165,164,132,133,
+  163,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,408,408,408,181,34,40,162,147,
+409,307,410,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,308,26,138,123,148,100,149,411,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,309,26,138,123,148,100,149,412,125,197,
+  413,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+18,20,135,292,291,
+23,98,311,414,415,
+23,96,312,416,417,
+23,94,313,418,419,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,314,26,138,123,148,100,149,412,125,197,
+  420,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+20,93,299,
+20,22,316,299,118,
+24,24,18,99,150,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,
+  116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,160,
+  161,37,38,39,43,23,44,317,26,115,176,138,123,148,100,149,421,422,124,
+  125,208,172,174,173,422,422,171,170,169,168,167,166,165,164,132,133,163,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,34,40,162,147,
+20,22,318,299,89,
+18,20,22,319,292,291,143,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,320,26,138,123,148,100,149,423,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,321,26,138,123,148,100,149,424,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,322,
+  115,176,425,124,194,172,174,173,425,425,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,323,
+  115,176,426,124,194,172,174,173,426,426,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+  328,328,328,328,328,328,328,328,328,328,328,1,324,1,353,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,51,325,26,138,123,148,100,149,202,75,
+  201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,
+  135,134,133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,326,26,138,123,148,100,149,427,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,327,
+  115,176,428,124,194,172,174,173,428,428,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,51,328,26,138,123,148,100,149,202,72,
+  201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,
+  135,134,133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,329,26,138,123,148,100,149,429,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,51,330,26,138,123,148,100,149,202,70,
+  201,125,197,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,
+  135,134,133,132,131,130,129,128,127,126,124,98,147,
+190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,
+  190,190,190,190,190,190,190,190,190,190,331,430,
+186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,
+  186,186,186,186,186,186,186,186,186,186,332,431,
+24,24,333,26,432,433,34,40,
+18,99,150,18,20,334,251,180,123,216,215,100,252,162,147,
+247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
+  247,247,247,247,247,247,247,247,247,247,335,434,
+244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,
+  244,244,244,244,244,244,244,244,244,244,336,435,
+24,24,337,26,218,219,242,34,40,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,338,26,138,123,148,100,149,436,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+150,339,270,264,162,
+23,238,437,
+23,235,438,
+19,233,439,
+20,256,299,
+18,20,254,292,291,
+58,58,58,58,19,58,58,58,345,440,441,
+20,84,299,
+18,20,19,347,292,291,442,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,348,
+  115,176,443,124,194,172,174,173,443,443,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+53,53,53,349,444,
+51,51,51,350,445,
+328,328,328,328,328,328,1,351,1,340,
+328,328,328,328,328,328,1,352,1,337,
+22,353,446,
+22,354,447,
+20,22,355,299,179,
+20,22,356,299,178,
+20,19,357,299,448,
+20,22,358,299,176,
+20,22,359,299,175,
+20,22,360,299,174,
+18,20,22,361,292,291,173,
+18,20,22,362,292,291,172,
+18,20,19,363,292,291,449,
+18,20,19,364,292,291,450,
+18,20,22,365,292,291,168,
+18,20,19,366,292,291,451,
+18,20,22,367,292,291,166,
+18,20,22,368,292,291,165,
+18,20,22,369,292,291,164,
+18,20,22,370,292,291,163,
+18,20,22,371,292,291,162,
+18,20,22,19,372,292,291,452,160,
+18,20,22,373,292,291,159,
+18,20,22,374,292,291,158,
+18,20,22,375,292,291,157,
+18,20,22,376,292,291,156,
+18,20,22,377,292,291,155,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,378,26,138,123,148,100,149,412,125,197,
+  453,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+20,22,379,299,134,
+20,22,380,299,131,
+20,22,381,299,130,
+20,22,382,299,129,
+20,22,383,299,128,
+20,22,384,299,127,
+20,22,385,299,126,
+18,20,22,386,292,291,125,
+18,20,22,19,387,292,291,454,122,
+20,19,388,299,455,
+20,19,389,299,456,
+20,19,390,299,457,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,391,26,138,123,148,100,149,412,125,197,
+  458,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+8,149,278,
+8,148,278,
+18,20,230,292,291,
+18,20,229,292,291,
+18,20,228,292,291,
+18,20,227,292,291,
+18,20,226,292,291,
+18,20,225,292,291,
+16,21,152,281,280,
+16,21,151,281,280,
+20,224,299,
+20,223,299,
+20,222,299,
+20,221,299,
+20,220,299,
+20,219,299,
+303,213,304,
+328,328,328,328,328,1,409,1,420,
+37,37,459,459,37,410,459,
+18,20,196,411,292,291,460,
+18,20,194,292,291,
+22,19,413,461,462,
+108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,
+  108,108,108,108,108,108,108,108,108,108,414,463,
+19,415,464,
+105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,
+  105,105,105,105,105,105,105,105,105,105,416,465,
+19,417,466,
+102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,
+  102,102,102,102,102,102,102,102,102,102,418,467,
+19,419,468,
+22,19,420,461,469,
+18,20,91,292,291,
+20,90,299,
+18,20,19,423,292,291,470,
+18,20,153,292,291,
+20,77,299,
+20,76,299,
+18,20,19,427,292,291,471,
+20,73,299,
+18,20,71,292,291,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,430,26,138,123,148,100,149,412,125,197,
+  472,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,431,26,138,123,148,100,149,412,125,197,
+  473,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+23,432,474,
+23,433,475,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,434,26,138,123,148,100,149,412,125,197,
+  476,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,435,26,138,123,148,100,149,412,125,197,
+  477,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+18,20,19,436,292,291,478,
+239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,
+  239,239,239,239,239,239,239,239,239,239,437,479,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+  236,236,236,236,236,236,236,236,236,236,438,480,
+24,24,439,26,340,341,234,342,34,40,
+24,24,18,99,150,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,
+  116,117,118,119,120,121,122,18,151,152,153,154,155,156,157,158,159,160,
+  161,37,38,39,43,23,44,440,26,115,176,138,123,148,100,149,482,481,124,
+  125,208,172,174,173,481,481,171,170,169,168,167,166,165,164,132,133,163,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,34,40,162,147,
+14,275,275,275,275,275,275,441,59,59,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,442,26,138,123,148,100,149,483,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+20,19,56,299,484,
+24,24,29,444,28,26,185,184,279,485,98,30,
+24,24,29,445,28,26,185,184,277,486,98,30,
+23,12,
+23,11,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,448,
+  115,176,487,124,194,172,174,173,487,487,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,449,26,138,123,148,100,149,488,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,450,26,138,123,148,100,149,489,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,451,26,138,123,148,100,149,490,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,452,26,138,123,148,100,149,491,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+22,19,453,461,142,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,454,
+  115,176,492,124,194,172,174,173,492,492,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,455,26,138,123,148,100,149,493,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,456,26,138,123,148,100,149,494,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,457,26,138,123,148,100,149,495,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+22,19,458,461,117,
+207,207,6,4,207,459,7,5,6,496,
+324,460,497,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,461,26,138,123,148,100,149,498,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+12,462,499,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,463,26,138,123,148,100,149,412,125,197,
+  500,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,464,26,138,123,148,100,149,501,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,465,26,138,123,148,100,149,412,125,197,
+  502,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,466,26,138,123,148,100,149,503,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,467,26,138,123,148,100,149,412,125,197,
+  504,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,468,26,138,123,148,100,149,505,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+12,469,506,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,470,26,138,123,148,100,149,507,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,471,26,138,123,148,100,149,508,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+22,19,472,461,191,
+22,19,473,461,187,
+192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,
+  192,192,192,192,192,192,192,192,192,192,474,509,
+188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,
+  188,188,188,188,188,188,188,188,188,188,475,510,
+22,19,476,461,248,
+22,19,477,461,245,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,478,26,138,123,148,100,149,511,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,479,26,138,123,148,100,149,412,125,197,
+  512,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,480,26,138,123,148,100,149,412,125,197,
+  513,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+20,257,299,
+18,20,255,292,291,
+18,20,19,67,292,291,514,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,484,
+  115,176,515,124,194,172,174,173,515,515,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+19,54,516,
+19,52,517,
+20,22,487,299,177,
+18,20,22,488,292,291,171,
+18,20,22,489,292,291,170,
+18,20,22,490,292,291,167,
+18,20,22,491,292,291,161,
+20,22,492,299,123,
+18,20,19,493,292,291,518,
+18,20,22,494,292,291,120,
+18,20,22,495,292,291,119,
+519,231,231,496,521,520,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,497,26,138,123,148,100,149,522,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+18,20,195,292,291,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,499,26,138,123,148,100,149,523,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+22,19,500,461,524,
+18,20,22,501,292,291,525,
+22,19,502,461,526,
+18,20,22,503,292,291,527,
+22,19,504,461,528,
+18,20,19,505,292,291,529,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,506,
+  115,176,530,124,194,172,174,173,530,530,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+18,20,22,507,292,291,154,
+18,20,19,508,292,291,531,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,509,26,138,123,148,100,149,412,125,197,
+  532,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,510,26,138,123,148,100,149,412,125,197,
+  533,175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,
+  133,132,131,130,129,128,127,126,124,98,147,
+18,20,22,511,292,291,271,
+22,19,512,461,240,
+22,19,513,461,237,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,514,
+  115,176,534,124,194,172,174,173,534,534,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+20,55,299,
+24,24,29,516,28,26,185,184,280,98,30,
+24,24,29,517,28,26,185,184,278,98,30,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,518,26,138,123,148,100,149,535,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+328,328,328,328,1,519,1,431,
+37,536,536,37,520,536,
+208,208,521,537,
+538,18,20,202,202,522,292,291,540,539,
+18,20,137,292,291,
+109,524,541,
+12,525,542,
+106,526,543,
+12,527,544,
+103,528,545,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,529,26,138,123,148,100,149,546,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+20,101,299,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,531,26,138,123,148,100,149,547,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+22,19,532,461,193,
+22,19,533,461,189,
+20,68,299,
+18,20,22,535,292,291,121,
+232,6,4,232,536,7,5,6,
+548,211,537,209,209,
+328,328,328,328,1,538,1,419,
+18,99,18,20,539,180,123,216,215,100,203,147,
+197,197,540,549,
+19,541,550,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,542,
+  115,176,551,124,194,172,174,173,551,551,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+19,543,552,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,544,
+  115,176,553,124,194,172,174,173,553,553,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+19,545,554,
+18,20,22,546,292,291,555,
+18,20,324,547,292,291,556,
+328,328,328,328,328,328,1,548,1,422,
+6,4,549,557,5,6,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,550,26,138,123,148,100,149,558,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+20,99,299,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,552,26,138,123,148,100,149,559,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+20,97,299,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,554,26,138,123,148,100,149,560,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+12,555,561,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,556,26,138,123,148,100,149,562,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+37,563,563,37,557,563,
+18,20,22,558,292,291,564,
+18,20,22,559,292,291,565,
+18,20,19,560,292,291,566,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,561,
+  115,176,567,124,194,172,174,173,567,567,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+18,20,19,562,292,291,568,
+198,6,4,198,563,7,5,6,569,
+12,564,570,
+12,565,571,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,566,26,138,123,148,100,149,572,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+20,95,299,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,568,26,138,123,148,100,149,573,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+574,201,569,575,575,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,570,
+  115,176,576,124,194,172,174,173,576,576,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,571,
+  115,176,577,124,194,172,174,173,577,577,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+18,20,22,572,292,291,578,
+18,20,19,573,292,291,579,
+328,328,328,328,328,328,328,328,1,574,1,418,
+24,24,204,204,204,204,204,204,575,26,205,199,98,
+20,110,299,
+20,107,299,
+12,578,580,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,579,26,138,123,148,100,149,581,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+24,24,150,151,152,153,154,155,156,157,158,159,160,161,37,38,39,23,44,580,
+  115,176,582,124,194,172,174,173,582,582,171,170,169,168,167,166,165,164,
+  132,133,163,193,40,162,
+18,20,19,581,292,291,583,
+20,104,299,
+24,24,18,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,
+  117,118,119,120,121,122,18,43,23,583,26,138,123,148,100,149,584,125,197,
+  175,175,175,177,146,145,144,143,142,141,140,139,138,137,136,135,134,133,
+  132,131,130,129,128,127,126,124,98,147,
+18,20,74,292,291,
+
+};
+
+
+static const unsigned short ag_sbt[] = {
+     0,   7,   9,  15,  22,  47,  91,  94, 184, 232, 257, 282, 345, 408,
+   471, 501, 526, 574, 599, 647, 711, 774, 822, 900, 964, 989,1014,1039,
+  1064,1105,1151,1235,1241,1247,1330,1355,1405,1411,1416,1421,1426,1450,
+  1460,1483,1488,1511,1521,1554,1560,1594,1628,1662,1695,1745,1779,1813,
+  1847,1853,1863,1876,1885,1891,1900,1960,1968,1976,2010,2017,2024,2135,
+  2141,2146,2149,2152,2155,2160,2204,2207,2274,2279,2349,2419,2489,2556,
+  2664,2734,2804,2874,2883,2894,2910,2920,2932,2995,3008,3021,3090,3101,
+  3112,3136,3139,3172,3177,3182,3187,3192,3197,3202,3207,3212,3217,3222,
+  3227,3232,3237,3242,3247,3252,3257,3262,3267,3272,3277,3282,3284,3287,
+  3290,3293,3296,3299,3302,3305,3308,3311,3314,3317,3320,3323,3326,3329,
+  3332,3335,3338,3341,3344,3347,3350,3353,3384,3448,3451,3476,3481,3504,
+  3527,3532,3537,3542,3547,3552,3557,3562,3567,3592,3595,3598,3601,3604,
+  3607,3610,3613,3616,3619,3622,3625,3628,3631,3634,3639,3689,3706,3721,
+  3830,3941,3944,3949,3952,3983,4050,4056,4062,4068,4099,4143,4148,4192,
+  4197,4241,4308,4313,4323,4362,4365,4372,4375,4378,4381,4388,4391,4496,
+  4501,4504,4507,4510,4513,4516,4523,4530,4533,4536,4539,4542,4547,4550,
+  4556,4561,4566,4576,4634,4638,4752,4781,4787,4831,4898,4901,4910,4916,
+  4921,4924,4927,4932,4976,5020,5064,5108,5152,5196,5263,5330,5397,5464,
+  5533,5600,5667,5734,5801,5868,5935,6002,6069,6136,6203,6270,6337,6368,
+  6392,6436,6480,6524,6568,6612,6656,6700,6767,6834,6878,6922,6966,7030,
+  7061,7126,7191,7240,7307,7374,7423,7490,7557,7606,7673,7740,7806,7872,
+  7916,7960,8004,8048,8092,8136,8179,8184,8203,8220,8270,8379,8429,8539,
+  8542,8609,8677,8682,8687,8692,8697,8765,8768,8773,8878,8883,8890,8957,
+  9024,9068,9112,9146,9216,9283,9327,9397,9464,9534,9565,9596,9604,9619,
+  9650,9681,9690,9757,9762,9765,9768,9771,9774,9779,9790,9793,9800,9844,
+  9849,9854,9864,9874,9877,9880,9885,9890,9895,9900,9905,9910,9917,9924,
+  9931,9938,9945,9952,9959,9966,9973,9980,9987,9996,10003,10010,10017,
+  10024,10031,10099,10104,10109,10114,10119,10124,10129,10134,10141,10150,
+  10155,10160,10165,10233,10236,10239,10244,10249,10254,10259,10264,10269,
+  10274,10279,10282,10285,10288,10291,10294,10297,10300,10309,10316,10323,
+  10328,10333,10364,10367,10398,10401,10432,10435,10440,10445,10448,10455,
+  10460,10463,10466,10473,10476,10481,10549,10617,10620,10623,10691,10759,
+  10766,10797,10828,10838,10943,10953,11020,11025,11037,11049,11051,11053,
+  11097,11164,11231,11298,11365,11370,11414,11481,11548,11615,11620,11630,
+  11633,11700,11703,11771,11838,11906,11973,12041,12108,12111,12178,12245,
+  12250,12255,12286,12317,12322,12327,12394,12462,12530,12533,12538,12545,
+  12589,12592,12595,12600,12607,12614,12621,12628,12633,12640,12647,12654,
+  12660,12727,12732,12799,12804,12811,12816,12823,12828,12835,12879,12886,
+  12893,12961,13029,13036,13041,13046,13090,13093,13104,13115,13182,13190,
+  13196,13200,13210,13215,13218,13221,13224,13227,13230,13297,13300,13367,
+  13372,13377,13380,13387,13395,13400,13408,13420,13424,13427,13471,13474,
+  13518,13521,13528,13535,13545,13551,13618,13621,13688,13691,13758,13761,
+  13828,13834,13841,13848,13855,13899,13906,13915,13918,13921,13988,13991,
+  14058,14063,14107,14151,14158,14165,14177,14190,14193,14196,14199,14266,
+  14310,14317,14320,14387,14392
+};
+
+
+static const unsigned short ag_sbe[] = {
+     4,   8,  12,  18,  44,  68,  92, 136, 229, 254, 279, 342, 405, 468,
+   498, 523, 571, 596, 644, 708, 771, 819, 897, 961, 986,1011,1036,1061,
+  1084,1148,1232,1238,1243,1287,1352,1402,1408,1413,1418,1423,1447,1457,
+  1480,1485,1508,1518,1551,1557,1591,1625,1659,1692,1742,1776,1810,1844,
+  1850,1860,1873,1882,1888,1897,1957,1965,1973,2007,2014,2021,2070,2137,
+  2143,2147,2150,2153,2157,2179,2205,2236,2276,2309,2379,2449,2518,2602,
+  2694,2764,2834,2876,2886,2899,2912,2925,2988,2999,3012,3051,3093,3104,
+  3133,3137,3170,3174,3179,3184,3189,3194,3199,3204,3209,3214,3219,3224,
+  3229,3234,3239,3244,3249,3254,3259,3264,3269,3274,3279,3283,3285,3288,
+  3291,3294,3297,3300,3303,3306,3309,3312,3315,3318,3321,3324,3327,3330,
+  3333,3336,3339,3342,3345,3348,3351,3381,3413,3449,3474,3478,3501,3524,
+  3529,3534,3539,3544,3549,3554,3559,3564,3589,3593,3596,3599,3602,3605,
+  3608,3611,3614,3617,3620,3623,3626,3629,3632,3636,3686,3697,3713,3767,
+  3876,3942,3946,3950,3981,4012,4052,4058,4064,4097,4118,4147,4167,4194,
+  4216,4270,4310,4320,4359,4363,4368,4373,4376,4379,4384,4389,4436,4498,
+  4502,4505,4508,4511,4514,4518,4525,4531,4534,4537,4540,4544,4548,4551,
+  4557,4564,4568,4631,4635,4691,4778,4782,4806,4860,4899,4905,4913,4918,
+  4922,4925,4930,4951,4995,5039,5083,5127,5171,5225,5292,5359,5426,5494,
+  5562,5629,5696,5763,5830,5897,5964,6031,6098,6165,6232,6299,6366,6391,
+  6411,6455,6499,6543,6587,6631,6675,6729,6796,6853,6897,6941,6995,7059,
+  7090,7155,7237,7269,7336,7420,7452,7519,7603,7635,7702,7769,7835,7891,
+  7935,7979,8023,8067,8111,8155,8181,8193,8211,8267,8316,8426,8475,8540,
+  8571,8638,8679,8684,8689,8694,8726,8766,8770,8818,8880,8886,8919,8986,
+  9043,9087,9143,9176,9245,9302,9357,9426,9494,9563,9594,9598,9609,9648,
+  9679,9683,9719,9758,9763,9766,9769,9772,9776,9787,9791,9796,9819,9847,
+  9852,9861,9871,9875,9878,9882,9887,9892,9897,9902,9907,9913,9920,9927,
+  9934,9941,9948,9955,9962,9969,9976,9983,9991,9999,10006,10013,10020,
+  10027,10060,10101,10106,10111,10116,10121,10126,10131,10137,10145,10152,
+  10157,10162,10194,10234,10237,10241,10246,10251,10256,10261,10266,10271,
+  10276,10280,10283,10286,10289,10292,10295,10298,10306,10314,10319,10325,
+  10330,10362,10365,10396,10399,10430,10433,10437,10442,10446,10451,10457,
+  10461,10464,10469,10474,10478,10510,10578,10618,10621,10652,10720,10762,
+  10795,10826,10830,10883,10950,10982,11022,11028,11040,11050,11052,11072,
+  11126,11193,11260,11327,11367,11389,11443,11510,11577,11617,11625,11631,
+  11662,11701,11732,11800,11867,11935,12002,12070,12109,12140,12207,12247,
+  12252,12284,12315,12319,12324,12356,12423,12491,12531,12535,12541,12564,
+  12590,12593,12597,12603,12610,12617,12624,12630,12636,12643,12650,12657,
+  12689,12729,12761,12801,12807,12813,12819,12825,12831,12854,12882,12889,
+  12922,12990,13032,13038,13043,13065,13091,13096,13107,13144,13187,13194,
+  13198,13205,13212,13216,13219,13222,13225,13228,13259,13298,13329,13369,
+  13374,13378,13383,13391,13397,13405,13412,13422,13425,13446,13472,13493,
+  13519,13524,13531,13542,13547,13580,13619,13650,13689,13720,13759,13790,
+  13832,13837,13844,13851,13874,13902,13910,13916,13919,13950,13989,14020,
+  14060,14082,14126,14154,14161,14174,14185,14191,14194,14197,14228,14285,
+  14313,14318,14349,14389,14392
+};
+
+
+static const unsigned char ag_fl[] = {
+  2,1,2,0,1,0,2,2,1,0,1,4,4,3,0,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,3,3,0,2,
+  2,2,0,3,4,2,1,0,1,1,1,1,2,2,3,3,0,5,0,5,6,4,2,0,5,3,2,2,1,2,1,2,5,7,2,
+  4,4,4,4,16,4,4,4,2,2,2,2,2,2,3,2,2,1,1,4,4,4,1,3,0,11,0,9,0,9,0,7,0,0,
+  15,0,0,13,0,0,13,1,3,1,1,1,0,5,3,6,6,8,4,6,1,4,4,4,4,4,4,4,1,1,4,3,0,7,
+  1,1,1,0,5,3,2,1,3,1,3,3,1,3,3,3,6,4,4,4,4,4,4,6,4,4,4,4,4,6,4,3,6,6,4,
+  4,4,4,4,6,4,4,1,2,2,1,1,1,0,5,0,7,0,5,0,7,1,3,0,0,0,14,1,1,0,2,0,1,0,0,
+  0,9,1,1,1,3,1,3,1,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,2,1,3,1,0,5,1,0,5,1,3,
+  1,0,5,1,0,5,1,1,3,3,0,1,3,1,3,0,1,1,0,2,0,3,0,1,1,1,2,1,6,2,2,1,0,1,1,
+  3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+};
+
+static const unsigned short ag_ptt[] = {
+    0, 10, 10, 11, 11, 12, 12,  7,274, 17, 17,274,274, 14, 23, 23, 14, 14,
+   20, 20, 22, 22, 18, 18,216,216, 27,257, 29,217,217,262,262, 31, 31, 31,
+   34, 35, 35, 35, 38, 38, 37, 37, 37, 37, 37, 37, 37, 37, 37, 52, 37, 54,
+   37, 37, 37, 37, 64, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
+   37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
+   37, 37, 37, 40,101, 40,103, 40,105, 40,106, 40,108,109, 40,110,111, 40,
+  112,113, 40, 59, 59,114,114,114,116,114,114,115,115,115,115,115,115,115,
+  115,115,115,115,115,115,115,115,115, 41,128, 41,129,129,129,131,129,129,
+  129,132,132,134,134,134, 51, 51, 51, 79, 79,130,130,130,130,130,130,130,
+  130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,
+  159,159,159,160, 45, 45,161, 76,162, 76,163, 76,164, 76,107,107,166,168,
+  169, 42,170,170,167,167,171,171,176,178,180, 43,181,181,175,175,183,183,
+  185,185,185,187,187,187,187,187,187,187,187,187,187,187,187,179,179, 68,
+   68,195,196,195,195,197,195, 70, 70,198,199,198,198,200,198, 72, 72, 72,
+   72, 63, 63, 63, 63, 63, 67, 67, 67,203, 67,205, 67, 62, 62, 62, 62, 62,
+  204,202,201, 57, 57, 65, 65, 53, 53, 55, 55,  9,  9,  9,  9,  9,  9,  9,
+    9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 25, 25, 26, 26, 26,
+   32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+   32, 32,212,212,213,213,  8, 13,  3,  2, 39, 44, 46, 49, 48, 47, 50, 58,
+   56, 60, 61, 66, 69, 71, 73, 74, 75, 77, 78, 81, 80, 82, 83, 84, 85, 86,
+   87, 88, 89, 90, 91, 92, 93, 96, 95, 94, 97, 98, 99,  5,100,102,104, 16,
+    4,117,118,119,120,121,122,123,124,125,126,127,  6, 19,133,135,136,137,
+  138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,
+  156,157,158,165,172,173,177,174,182,184,186,188,189,190,191,192,193,194,
+  206,207,208,209,210, 30, 28, 21, 24,211, 15
+};
+
+
+static void ag_ra(void)
+{
+  switch(ag_rpx[(PCB).ag_ap]) {
+    case 1: ag_rp_1(); break;
+    case 2: V(0,(double *)) = ag_rp_2(V(0,(double *)), V(3,(int *))); break;
+    case 3: V(0,(double *)) = ag_rp_3(V(0,(double *)), V(3,(int *))); break;
+    case 4: V(0,(double *)) = ag_rp_4(V(0,(double *)), V(2,(double *))); break;
+    case 5: V(0,(double *)) = ag_rp_5(V(1,(double *))); break;
+    case 6: V(0,(double *)) = ag_rp_6(V(0,(int *))); break;
+    case 7: V(0,(double *)) = ag_rp_7(V(0,(double *)), V(1,(int *))); break;
+    case 8: V(0,(double *)) = ag_rp_8(V(0,(int *))); break;
+    case 9: V(0,(double *)) = ag_rp_9(V(0,(int *)), V(1,(double *))); break;
+    case 10: V(0,(int *)) = ag_rp_10(V(0,(int *))); break;
+    case 11: V(0,(int *)) = ag_rp_11(V(0,(int *)), V(1,(int *))); break;
+    case 12: V(0,(int *)) = ag_rp_12(V(0,(int *))); break;
+    case 13: V(0,(int *)) = ag_rp_13(V(0,(int *)), V(1,(int *))); break;
+    case 14: V(0,(char * *)) = ag_rp_14(V(0,(int *))); break;
+    case 15: V(0,(char * *)) = ag_rp_15(V(0,(int *))); break;
+    case 16: V(0,(char * *)) = ag_rp_16(V(0,(int *))); break;
+    case 17: V(0,(int *)) = ag_rp_17(V(0,(int *))); break;
+    case 18: V(0,(int *)) = ag_rp_18(V(0,(int *)), V(1,(int *))); break;
+    case 19: V(0,(char * *)) = ag_rp_19(V(1,(int *))); break;
+    case 20: V(0,(char * *)) = ag_rp_20(V(1,(int *))); break;
+    case 21: V(0,(int *)) = ag_rp_21(); break;
+    case 22: V(0,(int *)) = ag_rp_22(V(0,(int *)), V(1,(int *))); break;
+    case 23: V(0,(int *)) = ag_rp_23(V(0,(int *))); break;
+    case 24: ag_rp_24(); break;
+    case 25: ag_rp_25(V(1,(char * *))); break;
+    case 26: ag_rp_26(V(0,(char * *))); break;
+    case 27: ag_rp_27(V(1,(char * *))); break;
+    case 28: ag_rp_28(V(1,(char * *))); break;
+    case 29: ag_rp_29(); break;
+    case 30: ag_rp_30(); break;
+    case 31: ag_rp_31(); break;
+    case 32: ag_rp_32(); break;
+    case 33: ag_rp_33(); break;
+    case 34: ag_rp_34(); break;
+    case 35: ag_rp_35(V(1,(int *))); break;
+    case 36: ag_rp_36(V(1,(int *))); break;
+    case 37: ag_rp_37(V(1,(int *))); break;
+    case 38: ag_rp_38(); break;
+    case 39: ag_rp_39(); break;
+    case 40: ag_rp_40(); break;
+    case 41: ag_rp_41(V(1,(char * *))); break;
+    case 42: ag_rp_42(); break;
+    case 43: ag_rp_43(); break;
+    case 44: ag_rp_44(); break;
+    case 45: ag_rp_45(); break;
+    case 46: ag_rp_46(); break;
+    case 47: ag_rp_47(); break;
+    case 48: ag_rp_48(); break;
+    case 49: ag_rp_49(); break;
+    case 50: ag_rp_50(); break;
+    case 51: ag_rp_51(); break;
+    case 52: ag_rp_52(); break;
+    case 53: ag_rp_53(); break;
+    case 54: ag_rp_54(); break;
+    case 55: ag_rp_55(); break;
+    case 56: ag_rp_56(); break;
+    case 57: ag_rp_57(); break;
+    case 58: ag_rp_58(); break;
+    case 59: ag_rp_59(); break;
+    case 60: ag_rp_60(); break;
+    case 61: ag_rp_61(); break;
+    case 62: ag_rp_62(); break;
+    case 63: ag_rp_63(); break;
+    case 64: ag_rp_64(); break;
+    case 65: ag_rp_65(); break;
+    case 66: ag_rp_66(); break;
+    case 67: ag_rp_67(); break;
+    case 68: ag_rp_68(); break;
+    case 69: ag_rp_69(V(0,(char * *))); break;
+    case 70: ag_rp_70(V(-1,(char * *))); break;
+    case 71: ag_rp_71(V(2,(char * *))); break;
+    case 72: ag_rp_72(V(-1,(char * *))); break;
+    case 73: ag_rp_73(V(2,(char * *))); break;
+    case 74: ag_rp_74(V(-1,(char * *))); break;
+    case 75: ag_rp_75(V(2,(char * *))); break;
+    case 76: ag_rp_76(V(-2,(char * *))); break;
+    case 77: ag_rp_77(V(0,(char * *))); break;
+    case 78: ag_rp_78(V(-2,(char * *))); break;
+    case 79: ag_rp_79(V(-5,(char * *))); break;
+    case 80: ag_rp_80(V(2,(char * *))); break;
+    case 81: ag_rp_81(V(-2,(char * *))); break;
+    case 82: ag_rp_82(V(-5,(char * *))); break;
+    case 83: ag_rp_83(V(2,(char * *))); break;
+    case 84: ag_rp_84(V(-2,(char * *))); break;
+    case 85: ag_rp_85(V(-5,(char * *))); break;
+    case 86: ag_rp_86(V(2,(char * *))); break;
+    case 87: ag_rp_87(); break;
+    case 88: ag_rp_88(V(0,(char * *))); break;
+    case 89: ag_rp_89(V(0,(char * *))); break;
+    case 90: ag_rp_90(V(-2,(char * *))); break;
+    case 91: ag_rp_91(V(0,(char * *))); break;
+    case 92: ag_rp_92(); break;
+    case 93: ag_rp_93(); break;
+    case 94: ag_rp_94(); break;
+    case 95: ag_rp_95(); break;
+    case 96: ag_rp_96(); break;
+    case 97: ag_rp_97(); break;
+    case 98: ag_rp_98(); break;
+    case 99: ag_rp_99(); break;
+    case 100: ag_rp_100(); break;
+    case 101: ag_rp_101(); break;
+    case 102: ag_rp_102(); break;
+    case 103: ag_rp_103(); break;
+    case 104: ag_rp_104(); break;
+    case 105: ag_rp_105(); break;
+    case 106: ag_rp_106(); break;
+    case 107: ag_rp_107(); break;
+    case 108: ag_rp_108(V(0,(char * *))); break;
+    case 109: ag_rp_109(V(-2,(char * *))); break;
+    case 110: ag_rp_110(V(0,(char * *))); break;
+    case 111: ag_rp_111(V(0,(double *))); break;
+    case 112: ag_rp_112(V(0,(char * *))); break;
+    case 113: ag_rp_113(V(-2,(char * *))); break;
+    case 114: ag_rp_114(V(0,(char * *))); break;
+    case 115: ag_rp_115(); break;
+    case 116: ag_rp_116(); break;
+    case 117: ag_rp_117(); break;
+    case 118: ag_rp_118(); break;
+    case 119: ag_rp_119(); break;
+    case 120: ag_rp_120(); break;
+    case 121: ag_rp_121(); break;
+    case 122: ag_rp_122(); break;
+    case 123: ag_rp_123(); break;
+    case 124: ag_rp_124(); break;
+    case 125: ag_rp_125(); break;
+    case 126: ag_rp_126(); break;
+    case 127: ag_rp_127(); break;
+    case 128: ag_rp_128(); break;
+    case 129: ag_rp_129(); break;
+    case 130: ag_rp_130(); break;
+    case 131: ag_rp_131(); break;
+    case 132: ag_rp_132(); break;
+    case 133: ag_rp_133(); break;
+    case 134: ag_rp_134(); break;
+    case 135: ag_rp_135(); break;
+    case 136: ag_rp_136(); break;
+    case 137: ag_rp_137(); break;
+    case 138: ag_rp_138(); break;
+    case 139: ag_rp_139(); break;
+    case 140: ag_rp_140(); break;
+    case 141: ag_rp_141(); break;
+    case 142: ag_rp_142(); break;
+    case 143: ag_rp_143(); break;
+    case 144: ag_rp_144(); break;
+    case 145: ag_rp_145(); break;
+    case 146: ag_rp_146(); break;
+    case 147: V(0,(double *)) = ag_rp_147(V(0,(double *))); break;
+    case 148: V(0,(double *)) = ag_rp_148(V(1,(double *))); break;
+    case 149: V(0,(double *)) = ag_rp_149(V(1,(double *))); break;
+    case 150: V(0,(int *)) = ag_rp_150(V(0,(char * *))); break;
+    case 151: V(0,(char * *)) = ag_rp_151(V(0,(char * *))); break;
+    case 152: V(0,(char * *)) = ag_rp_152(V(0,(char * *))); break;
+    case 153: ag_rp_153(V(-2,(char * *))); break;
+    case 154: ag_rp_154(V(0,(char * *))); break;
+    case 155: ag_rp_155(V(-2,(char * *))); break;
+    case 156: ag_rp_156(V(2,(char * *))); break;
+    case 157: ag_rp_157(V(-2,(char * *))); break;
+    case 158: ag_rp_158(V(0,(char * *))); break;
+    case 159: ag_rp_159(V(-2,(char * *))); break;
+    case 160: ag_rp_160(V(2,(char * *))); break;
+    case 161: ag_rp_161(); break;
+    case 162: ag_rp_162(); break;
+    case 163: ag_rp_163(V(-3,(char * *))); break;
+    case 164: ag_rp_164(V(-7,(char * *)), V(-1,(double *))); break;
+    case 165: ag_rp_165(V(-10,(char * *)), V(-4,(double *))); break;
+    case 166: ag_rp_166(V(1,(char * *)), V(7,(double *))); break;
+    case 167: ag_rp_167(); break;
+    case 168: V(0,(double *)) = ag_rp_168(); break;
+    case 169: V(0,(double *)) = ag_rp_169(V(1,(double *))); break;
+    case 170: ag_rp_170(); break;
+    case 171: ag_rp_171(V(0,(char * *))); break;
+    case 172: ag_rp_172(); break;
+    case 173: ag_rp_173(); break;
+    case 174: ag_rp_174(); break;
+    case 175: ag_rp_175(); break;
+    case 176: ag_rp_176(); break;
+    case 177: ag_rp_177(); break;
+    case 178: ag_rp_178(); break;
+    case 179: ag_rp_179(); break;
+    case 180: ag_rp_180(); break;
+    case 181: ag_rp_181(); break;
+    case 182: ag_rp_182(); break;
+    case 183: ag_rp_183(); break;
+    case 184: ag_rp_184(); break;
+    case 185: ag_rp_185(); break;
+    case 186: ag_rp_186(); break;
+    case 187: ag_rp_187(); break;
+    case 188: ag_rp_188(); break;
+    case 189: ag_rp_189(); break;
+    case 190: ag_rp_190(V(0,(char * *))); break;
+    case 191: ag_rp_191(V(-2,(char * *))); break;
+    case 192: ag_rp_192(V(0,(char * *))); break;
+    case 193: ag_rp_193(V(0,(char * *))); break;
+    case 194: ag_rp_194(V(-2,(char * *))); break;
+    case 195: ag_rp_195(V(0,(char * *))); break;
+    case 196: ag_rp_196(V(0,(char * *))); break;
+    case 197: ag_rp_197(V(-2,(char * *))); break;
+    case 198: ag_rp_198(V(0,(char * *))); break;
+    case 199: ag_rp_199(V(0,(char * *))); break;
+    case 200: ag_rp_200(V(-2,(char * *))); break;
+    case 201: ag_rp_201(V(0,(char * *))); break;
+    case 202: ag_rp_202(V(0,(char * *))); break;
+    case 203: ag_rp_203(V(0,(double *))); break;
+    case 204: ag_rp_204(V(2,(char * *))); break;
+    case 205: ag_rp_205(V(2,(double *))); break;
+    case 206: ag_rp_206(); break;
+    case 207: ag_rp_207(); break;
+    case 208: ag_rp_208(); break;
+    case 209: ag_rp_209(); break;
+    case 210: ag_rp_210(); break;
+    case 211: ag_rp_211(); break;
+    case 212: ag_rp_212(); break;
+    case 213: ag_rp_213(); break;
+    case 214: ag_rp_214(); break;
+    case 215: ag_rp_215(); break;
+    case 216: ag_rp_216(); break;
+    case 217: ag_rp_217(); break;
+    case 218: ag_rp_218(V(0,(char * *))); break;
+    case 219: ag_rp_219(); break;
+    case 220: ag_rp_220(V(1,(int *))); break;
+    case 221: V(0,(int *)) = ag_rp_221(V(1,(int *))); break;
+    case 222: V(0,(int *)) = ag_rp_222(V(0,(int *))); break;
+    case 223: ag_rp_223(); break;
+    case 224: ag_rp_224(V(0,(char * *))); break;
+    case 225: ag_rp_225(V(2,(char * *))); break;
+    case 226: ag_rp_226(V(0,(char * *))); break;
+    case 227: ag_rp_227(V(2,(char * *))); break;
+  }
+}
+
+#define TOKEN_NAMES parseBasic_token_names
+const char *const parseBasic_token_names[327] = {
+  "program",
+  "white space",
+  "digit string",
+  "name",
+  "STRING",
+  "STRSYM",
+  "number",
+  "SEP",
+  "\"REM\"",
+  "",
+  "",
+  "",
+  "",
+  "'\\n'",
+  "simple real",
+  "",
+  "'+'",
+  "",
+  "exponent",
+  "'-'",
+  "integer part",
+  "'.'",
+  "fraction part",
+  "",
+  "digit",
+  "letter",
+  "",
+  "SYMBOL",
+  "'$'",
+  "DIGITS",
+  "'\\\"'",
+  "string text",
+  "",
+  "\"\\\\\\\"\"",
+  "program",
+  "statement list",
+  "eof",
+  "statement",
+  "label",
+  "\"LABEL\"",
+  "string_assignment",
+  "assignment",
+  "for_loop",
+  "if_clause",
+  "\"GOTO\"",
+  "symbol_or_lineno",
+  "\"GOSUB\"",
+  "\"ON\"",
+  "\"INTERRUPT\"",
+  "\"BREAK\"",
+  "\"CONTINUE\"",
+  "expression",
+  "",
+  "goto_list",
+  "",
+  "gosub_list",
+  "\"OPEN\"",
+  "hashed_number",
+  "','",
+  "string expression",
+  "\"CLOSE\"",
+  "\"PRINT\"",
+  "printintro",
+  "printlist",
+  "",
+  "semicolon",
+  "\"INPUT\"",
+  "inputintro",
+  "inputlist",
+  "\"READ\"",
+  "readlist",
+  "\"DATA\"",
+  "datalist",
+  "\"RESTORE\"",
+  "\"RETURN\"",
+  "\"DIM\"",
+  "dimlist",
+  "\"WINDOW\"",
+  "\"DOT\"",
+  "mapping",
+  "\"LINE\"",
+  "\"TO\"",
+  "\"CIRCLE\"",
+  "\"TEXT\"",
+  "\"MAP\"",
+  "\"ARROW\"",
+  "\"XTICK\"",
+  "\"YTICK\"",
+  "\"CLEAR\"",
+  "\"SCREEN\"",
+  "\"PRINTER\"",
+  "\"WAIT\"",
+  "\"BELL\"",
+  "\"INKEY\"",
+  "\"SYSTEM2\"",
+  "'('",
+  "')'",
+  "\"POKE\"",
+  "\"END\"",
+  "'='",
+  "\"MID\"",
+  "",
+  "\"LEFT\"",
+  "",
+  "\"RIGHT\"",
+  "",
+  "",
+  "indexlist",
+  "",
+  "",
+  "",
+  "",
+  "",
+  "",
+  "primary string expression",
+  "string_function",
+  "",
+  "\"STR\"",
+  "\"CHR\"",
+  "\"UPPER\"",
+  "\"LOWER\"",
+  "\"LTRIM\"",
+  "\"RTRIM\"",
+  "\"TRIM\"",
+  "\"SYSTEM\"",
+  "\"DATE\"",
+  "\"TIME\"",
+  "\"PEEK2\"",
+  "",
+  "primary expression",
+  "function",
+  "",
+  "exponential expression",
+  "'^'",
+  "multiplicative expression",
+  "'*'",
+  "'/'",
+  "\"SIN\"",
+  "\"ASIN\"",
+  "\"COS\"",
+  "\"ACOS\"",
+  "\"TAN\"",
+  "\"ATAN\"",
+  "\"EXP\"",
+  "\"LOG\"",
+  "\"SQRT\"",
+  "\"INT\"",
+  "\"FRAC\"",
+  "\"MOD\"",
+  "\"RAN\"",
+  "\"MIN\"",
+  "\"MAX\"",
+  "\"XMAP\"",
+  "\"YMAP\"",
+  "\"LEN\"",
+  "\"VAL\"",
+  "\"ASC\"",
+  "\"INSTR\"",
+  "\"PEEK\"",
+  "const",
+  "intnum",
+  "",
+  "",
+  "",
+  "",
+  "\"FOR\"",
+  "",
+  "step_part",
+  "",
+  "",
+  "next_or_eofile",
+  "next_symbol",
+  "\"NEXT\"",
+  "\"STEP\"",
+  "\"IF\"",
+  "condition",
+  "",
+  "\"THEN\"",
+  "",
+  "else_part",
+  "",
+  "endif_or_eof",
+  "\"ENDIF\"",
+  "and condition",
+  "\"OR\"",
+  "primary condition",
+  "\"AND\"",
+  "comparison",
+  "\"NOT\"",
+  "\"<>\"",
+  "'<'",
+  "\"<=\"",
+  "'>'",
+  "\">=\"",
+  "\"ELSE\"",
+  "input",
+  "",
+  "",
+  "readitem",
+  "",
+  "",
+  "stream",
+  "position",
+  "",
+  "prompt",
+  "",
+  "\"REVERSE\"",
+  "\"AT\"",
+  "'#'",
+  "';'",
+  "",
+  "",
+  "",
+  "",
+  "\"REM\"",
+  "'\\n'",
+  "name",
+  "digit string",
+  "\"LABEL\"",
+  "\"GOTO\"",
+  "\"GOSUB\"",
+  "\"BREAK\"",
+  "\"INTERRUPT\"",
+  "\"ON\"",
+  "\"CONTINUE\"",
+  "','",
+  "\"OPEN\"",
+  "\"CLOSE\"",
+  "\"PRINT\"",
+  "\"INPUT\"",
+  "\"READ\"",
+  "\"DATA\"",
+  "\"RESTORE\"",
+  "\"RETURN\"",
+  "\"DIM\"",
+  "\"WINDOW\"",
+  "\"DOT\"",
+  "\"TO\"",
+  "\"LINE\"",
+  "\"CIRCLE\"",
+  "\"TEXT\"",
+  "\"MAP\"",
+  "\"ARROW\"",
+  "\"XTICK\"",
+  "\"YTICK\"",
+  "\"CLEAR\"",
+  "\"SCREEN\"",
+  "\"PRINTER\"",
+  "\"WAIT\"",
+  "\"BELL\"",
+  "\"INKEY\"",
+  "')'",
+  "'('",
+  "\"SYSTEM2\"",
+  "\"POKE\"",
+  "\"END\"",
+  "'='",
+  "STRSYM",
+  "\"MID\"",
+  "\"LEFT\"",
+  "\"RIGHT\"",
+  "'+'",
+  "STRING",
+  "\"STR\"",
+  "\"CHR\"",
+  "\"UPPER\"",
+  "\"LOWER\"",
+  "\"LTRIM\"",
+  "\"RTRIM\"",
+  "\"TRIM\"",
+  "\"SYSTEM\"",
+  "\"DATE\"",
+  "\"TIME\"",
+  "\"PEEK2\"",
+  "number",
+  "'-'",
+  "'^'",
+  "'*'",
+  "'/'",
+  "\"SIN\"",
+  "\"ASIN\"",
+  "\"COS\"",
+  "\"ACOS\"",
+  "\"TAN\"",
+  "\"ATAN\"",
+  "\"EXP\"",
+  "\"LOG\"",
+  "\"SQRT\"",
+  "\"INT\"",
+  "\"FRAC\"",
+  "\"MOD\"",
+  "\"RAN\"",
+  "\"MIN\"",
+  "\"MAX\"",
+  "\"XMAP\"",
+  "\"YMAP\"",
+  "\"LEN\"",
+  "\"VAL\"",
+  "\"ASC\"",
+  "\"INSTR\"",
+  "\"PEEK\"",
+  "\"FOR\"",
+  "\"NEXT\"",
+  "\"STEP\"",
+  "\"THEN\"",
+  "\"IF\"",
+  "\"ENDIF\"",
+  "\"OR\"",
+  "\"AND\"",
+  "\"NOT\"",
+  "\"<>\"",
+  "'<'",
+  "\"<=\"",
+  "'>'",
+  "\">=\"",
+  "\"ELSE\"",
+  "\"REVERSE\"",
+  "\"AT\"",
+  "'#'",
+  "';'",
+  "",
+  "'\\\"'",
+  "'$'",
+  "'.'",
+  "digit",
+  "",
+  "",
+
+};
+
+#ifndef MISSING_FORMAT
+#define MISSING_FORMAT "Missing %s"
+#endif
+#ifndef UNEXPECTED_FORMAT
+#define UNEXPECTED_FORMAT "Unexpected %s"
+#endif
+#ifndef UNNAMED_TOKEN
+#define UNNAMED_TOKEN "input"
+#endif
+
+
+static void ag_diagnose(void) {
+  int ag_snd = (PCB).sn;
+  int ag_k = ag_sbt[ag_snd];
+
+  if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) {
+    sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
+  }
+  else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8
+          && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1
+          && *TOKEN_NAMES[ag_tstt[ag_k]]) {
+    sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
+  }
+  else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) {
+    sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]);
+  }
+  else if (isprint((*(PCB).lab)) && (*(PCB).lab) != '\\') {
+    char buf[20];
+    sprintf(buf, "\'%c\'", (char) (*(PCB).lab));
+    sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf);
+  }
+  else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN);
+  (PCB).error_message = (PCB).ag_msg;
+
+
+}
+static int ag_action_1_r_proc(void);
+static int ag_action_2_r_proc(void);
+static int ag_action_3_r_proc(void);
+static int ag_action_4_r_proc(void);
+static int ag_action_1_s_proc(void);
+static int ag_action_3_s_proc(void);
+static int ag_action_1_proc(void);
+static int ag_action_2_proc(void);
+static int ag_action_3_proc(void);
+static int ag_action_4_proc(void);
+static int ag_action_5_proc(void);
+static int ag_action_6_proc(void);
+static int ag_action_7_proc(void);
+static int ag_action_8_proc(void);
+static int ag_action_9_proc(void);
+static int ag_action_10_proc(void);
+static int ag_action_11_proc(void);
+static int ag_action_8_proc(void);
+
+
+static int (*const  ag_r_procs_scan[])(void) = {
+  ag_action_1_r_proc,
+  ag_action_2_r_proc,
+  ag_action_3_r_proc,
+  ag_action_4_r_proc
+};
+
+static int (*const  ag_s_procs_scan[])(void) = {
+  ag_action_1_s_proc,
+  ag_action_2_r_proc,
+  ag_action_3_s_proc,
+  ag_action_4_r_proc
+};
+
+static int (*const  ag_gt_procs_scan[])(void) = {
+  ag_action_1_proc,
+  ag_action_2_proc,
+  ag_action_3_proc,
+  ag_action_4_proc,
+  ag_action_5_proc,
+  ag_action_6_proc,
+  ag_action_7_proc,
+  ag_action_8_proc,
+  ag_action_9_proc,
+  ag_action_10_proc,
+  ag_action_11_proc,
+  ag_action_8_proc
+};
+
+
+static int ag_action_10_proc(void) {
+  int ag_t = (PCB).token_number;
+  (PCB).btsx = 0, (PCB).drt = -1;
+  do {
+    ag_track();
+    if ((PCB).rx < (PCB).fx) {
+      (PCB).input_code = (PCB).lab[(PCB).rx++];
+      (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);}
+    else {
+      GET_INPUT;
+      (PCB).lab[(PCB).fx++] = (PCB).input_code;
+      (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);
+      (PCB).rx++;
+    }
+    if (ag_key_index[(PCB).sn]) {
+      unsigned ag_k = ag_key_index[(PCB).sn];
+      int ag_ch = CONVERT_CASE((PCB).input_code);
+      if (ag_ch < 255) {
+        while (ag_key_ch[ag_k] < ag_ch) ag_k++;
+        if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
+      }
+    }
+  } while ((PCB).token_number == (parseBasic_token_type) ag_t);
+  (PCB).rx = 0;
+  return 1;
+}
+
+static int ag_action_11_proc(void) {
+  int ag_t = (PCB).token_number;
+
+  (PCB).btsx = 0, (PCB).drt = -1;
+  do {
+    (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
+    (PCB).ssx--;
+    ag_track();
+    ag_ra();
+    if ((PCB).exit_flag != AG_RUNNING_CODE) return 0;
+    (PCB).ssx++;
+    if ((PCB).rx < (PCB).fx) {
+      (PCB).input_code = (PCB).lab[(PCB).rx++];
+      (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);}
+    else {
+      GET_INPUT;
+      (PCB).lab[(PCB).fx++] = (PCB).input_code;
+      (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);
+      (PCB).rx++;
+    }
+    if (ag_key_index[(PCB).sn]) {
+      unsigned ag_k = ag_key_index[(PCB).sn];
+      int ag_ch = CONVERT_CASE((PCB).input_code);
+      if (ag_ch < 255) {
+        while (ag_key_ch[ag_k] < ag_ch) ag_k++;
+        if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
+      }
+    }
+  }
+  while ((PCB).token_number == (parseBasic_token_type) ag_t);
+  (PCB).rx = 0;
+  return 1;
+}
+
+static int ag_action_3_r_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_3_s_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_4_r_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
+  return 1;
+}
+
+static int ag_action_2_proc(void) {
+  (PCB).btsx = 0, (PCB).drt = -1;
+  if ((PCB).ssx >= 128) {
+    (PCB).exit_flag = AG_STACK_ERROR_CODE;
+    PARSER_STACK_OVERFLOW;
+  }
+  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
+  (PCB).ss[(PCB).ssx] = (PCB).sn;
+  (PCB).ssx++;
+  (PCB).sn = (PCB).ag_ap;
+  ag_track();
+  return 0;
+}
+
+static int ag_action_9_proc(void) {
+  if ((PCB).drt == -1) {
+    (PCB).drt=(PCB).token_number;
+    (PCB).dssx=(PCB).ssx;
+    (PCB).dsn=(PCB).sn;
+  }
+  ag_prot();
+  (PCB).vs[(PCB).ssx] = ag_null_value;
+  (PCB).ss[(PCB).ssx] = (PCB).sn;
+  (PCB).ssx++;
+  (PCB).sn = (PCB).ag_ap;
+  (PCB).rx = 0;
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_2_r_proc(void) {
+  (PCB).ssx++;
+  (PCB).sn = (PCB).ag_ap;
+  return 0;
+}
+
+static int ag_action_7_proc(void) {
+  --(PCB).ssx;
+  (PCB).rx = 0;
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_1_proc(void) {
+  ag_track();
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_1_r_proc(void) {
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_1_s_proc(void) {
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_4_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  else (PCB).ss[(PCB).ssx] = (PCB).sn;
+  ag_track();
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return 0;
+}
+
+static int ag_action_3_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  else (PCB).ss[(PCB).ssx] = (PCB).sn;
+  ag_track();
+  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return 0;
+}
+
+static int ag_action_8_proc(void) {
+  ag_undo();
+  (PCB).rx = 0;
+  (PCB).exit_flag = AG_SYNTAX_ERROR_CODE;
+  ag_diagnose();
+  SYNTAX_ERROR;
+  {(PCB).rx = 1; ag_track();}
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_5_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  else {
+    (PCB).ss[(PCB).ssx] = (PCB).sn;
+  }
+  (PCB).rx = 0;
+  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_6_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap];
+  (PCB).reduction_token = (parseBasic_token_type) ag_ptt[(PCB).ag_ap];
+  if ((PCB).drt == -1) {
+    (PCB).drt=(PCB).token_number;
+    (PCB).dssx=(PCB).ssx;
+    (PCB).dsn=(PCB).sn;
+  }
+  if (ag_sd) {
+    (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  }
+  else {
+    ag_prot();
+    (PCB).vs[(PCB).ssx] = ag_null_value;
+    (PCB).ss[(PCB).ssx] = (PCB).sn;
+  }
+  (PCB).rx = 0;
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+
+void init_parseBasic(void) {
+  (PCB).rx = (PCB).fx = 0;
+  (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0;
+  (PCB).exit_flag = AG_RUNNING_CODE;
+  (PCB).line = FIRST_LINE;
+  (PCB).column = FIRST_COLUMN;
+  (PCB).btsx = 0, (PCB).drt = -1;
+}
+
+void parseBasic(void) {
+  init_parseBasic();
+  (PCB).exit_flag = AG_RUNNING_CODE;
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbt[(PCB).sn];
+    if (ag_tstt[ag_t1]) {
+      unsigned ag_t2 = ag_sbe[(PCB).sn] - 1;
+      if ((PCB).rx < (PCB).fx) {
+        (PCB).input_code = (PCB).lab[(PCB).rx++];
+        (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);}
+      else {
+        GET_INPUT;
+        (PCB).lab[(PCB).fx++] = (PCB).input_code;
+        (PCB).token_number = (parseBasic_token_type) AG_TCV((PCB).input_code);
+        (PCB).rx++;
+      }
+      if (ag_key_index[(PCB).sn]) {
+        unsigned ag_k = ag_key_index[(PCB).sn];
+        int ag_ch = CONVERT_CASE((PCB).input_code);
+        if (ag_ch < 255) {
+          while (ag_key_ch[ag_k] < ag_ch) ag_k++;
+          if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
+        }
+      }
+      do {
+        unsigned ag_tx = (ag_t1 + ag_t2)/2;
+        if (ag_tstt[ag_tx] > (unsigned short)(PCB).token_number)
+          ag_t1 = ag_tx + 1;
+        else ag_t2 = ag_tx;
+      } while (ag_t1 < ag_t2);
+      if (ag_tstt[ag_t1] != (unsigned short)(PCB).token_number)
+        ag_t1 = ag_sbe[(PCB).sn];
+    }
+    (PCB).ag_ap = ag_pstt[ag_t1];
+    (ag_gt_procs_scan[ag_astt[ag_t1]])();
+  }
+}
+
+