// clang-format off
#include "libc/mem/mem.h"
#include "libc/str/str.h"
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define YYLEX yylex()
#define YYEMPTY -1
#define yyclearin (yychar=(YYEMPTY))
#define yyerrok (yyerrflag=0)
#define YYRECOVERING() (yyerrflag!=0)
#define YYPREFIX "yy"
#line 26 "awkgram.y"
#include "third_party/awk/awk.h"

void checkdup(Node *list, Cell *item);
int yywrap(void) { return(1); }

Node	*beginloc = 0;
Node	*endloc = 0;
bool	infunc	= false;	/* = true if in arglist or body of func */
int	inloop	= 0;	/* >= 1 if in while, for, do; can't be bool, since loops can next */
char	*curfname = 0;	/* current function name */
Node	*arglist = 0;	/* list of args for current function */
#line 41 "awkgram.y"
#ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED
typedef union {
	Node	*p;
	Cell	*cp;
	int	i;
	char	*s;
} YYSTYPE;
#endif /* YYSTYPE_DEFINED */
#line 37 "awkgram.tab.c"
#define FIRSTTOKEN 257
#define PROGRAM 258
#define PASTAT 259
#define PASTAT2 260
#define XBEGIN 261
#define XEND 262
#define NL 263
#define ARRAY 264
#define MATCH 265
#define NOTMATCH 266
#define MATCHOP 267
#define FINAL 268
#define DOT 269
#define ALL 270
#define CCL 271
#define NCCL 272
#define CHAR 273
#define OR 274
#define STAR 275
#define QUEST 276
#define PLUS 277
#define EMPTYRE 278
#define ZERO 279
#define AND 280
#define BOR 281
#define APPEND 282
#define EQ 283
#define GE 284
#define GT 285
#define LE 286
#define LT 287
#define NE 288
#define IN 289
#define ARG 290
#define BLTIN 291
#define BREAK 292
#define CLOSE 293
#define CONTINUE 294
#define DELETE 295
#define DO 296
#define EXIT 297
#define FOR 298
#define FUNC 299
#define SUB 300
#define GSUB 301
#define IF 302
#define INDEX 303
#define LSUBSTR 304
#define MATCHFCN 305
#define NEXT 306
#define NEXTFILE 307
#define ADD 308
#define MINUS 309
#define MULT 310
#define DIVIDE 311
#define MOD 312
#define ASSIGN 313
#define ASGNOP 314
#define ADDEQ 315
#define SUBEQ 316
#define MULTEQ 317
#define DIVEQ 318
#define MODEQ 319
#define POWEQ 320
#define PRINT 321
#define PRINTF 322
#define SPRINTF 323
#define ELSE 324
#define INTEST 325
#define CONDEXPR 326
#define POSTINCR 327
#define PREINCR 328
#define POSTDECR 329
#define PREDECR 330
#define VAR 331
#define IVAR 332
#define VARNF 333
#define CALL 334
#define NUMBER 335
#define STRING 336
#define REGEXPR 337
#define GETLINE 338
#define RETURN 339
#define SPLIT 340
#define SUBSTR 341
#define WHILE 342
#define CAT 343
#define NOT 344
#define UMINUS 345
#define UPLUS 346
#define POWER 347
#define DECR 348
#define INCR 349
#define INDIRECT 350
#define LASTTOKEN 351
#define YYERRCODE 256
const short yylhs[] =
	{                                        -1,
    0,    0,   36,   36,   37,   37,   33,   33,   26,   26,
   24,   24,   41,   22,   42,   22,   43,   22,   20,   20,
   23,   30,   30,   34,   34,   35,   35,   29,   29,   15,
   15,    1,    1,   10,   11,   11,   11,   11,   11,   11,
   11,   44,   11,   12,   12,    6,    6,    3,    3,    3,
    3,    3,    3,    3,    3,    3,    3,    3,    2,    2,
    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
    2,    2,    2,    2,    2,    2,    2,    4,    4,    5,
    5,    7,    7,    7,   39,   39,   28,   28,   28,   28,
   31,   31,    9,    9,   45,   13,   32,   32,   14,   14,
   14,   14,   14,   14,   14,   14,   27,   27,   16,   16,
   46,   47,   16,   16,   16,   16,   16,   16,   16,   16,
   16,   16,   16,   16,   48,   16,   16,   17,   17,   38,
   38,   40,   40,    8,    8,    8,    8,    8,    8,    8,
    8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
    8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
    8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
    8,    8,    8,    8,    8,   18,   18,   18,   18,   21,
   21,   21,   19,   19,   19,   25,
};
const short yylen[] =
	{                                         2,
    1,    1,    1,    2,    1,    2,    1,    2,    1,    2,
    1,    2,    0,   12,    0,   10,    0,    8,    1,    1,
    4,    1,    2,    1,    2,    0,    1,    0,    1,    0,
    1,    1,    3,    1,    1,    4,    4,    7,    3,    4,
    4,    0,    9,    1,    3,    1,    3,    3,    5,    3,
    3,    3,    3,    3,    5,    2,    1,    1,    3,    5,
    3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    5,    4,    3,    2,    1,    1,    3,    3,    1,
    3,    0,    1,    3,    1,    1,    1,    1,    2,    2,
    1,    2,    1,    2,    0,    4,    1,    2,    4,    4,
    4,    2,    5,    2,    1,    1,    1,    2,    2,    2,
    0,    0,    9,    3,    2,    1,    4,    2,    3,    2,
    2,    3,    2,    2,    0,    3,    2,    1,    2,    1,
    1,    1,    2,    4,    3,    3,    3,    3,    3,    3,
    2,    2,    2,    3,    4,    1,    3,    4,    2,    2,
    2,    2,    2,    4,    3,    2,    1,    6,    6,    3,
    6,    6,    1,    8,    8,    6,    4,    1,    6,    6,
    8,    8,    8,    6,    1,    1,    4,    1,    2,    0,
    1,    3,    1,    1,    1,    4,
};
const short yydefred[] =
	{                                      0,
    2,   87,   88,    0,    1,    0,    0,   89,   90,    0,
    0,   22,    0,   95,  184,    0,    0,    0,  130,  131,
    0,    0,    0,  183,  178,  185,    0,  163,  132,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   76,    0,   44,    0,   93,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   19,   20,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   94,  150,  151,  179,    0,    0,
    3,    5,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  152,  153,    0,  106,   23,    0,    0,
    0,    0,    9,    0,    0,    0,    0,    0,   85,   86,
    0,    0,    0,    0,  128,    0,  116,    0,  125,    0,
    0,    0,    0,  133,    0,    0,    7,  160,    0,    0,
    0,    0,  144,    0,    0,    0,    0,    0,    0,    0,
  147,    0,    0,    0,    0,    0,    0,    0,   69,    0,
    0,    0,    0,    0,    0,   71,    0,    4,    0,    6,
    0,    0,    0,    0,    0,    0,    0,    0,   24,    0,
    0,    0,   45,    0,    0,  127,    0,  109,    0,  110,
    0,    0,  115,    0,    0,  120,  121,    0,  123,    0,
  124,   39,  129,    0,    0,   10,    0,    0,    0,    0,
    0,    0,    0,   57,    0,    0,    0,   40,   41,    8,
    0,    0,    0,   96,  145,    0,  181,    0,    0,    0,
  167,  148,    0,    0,    0,   73,    0,    0,   25,    0,
   36,  177,  108,    0,  114,   31,    0,    0,    0,  122,
    0,   11,    0,  126,  112,   91,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   72,    0,   97,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   12,
  117,    0,   92,    0,    0,    0,   52,   54,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   98,    0,
  182,  158,  159,  162,  161,  166,    0,  174,    0,    0,
  103,    0,    0,    0,    0,    0,    0,    0,  170,    0,
  169,    0,    0,    0,    0,    0,   38,    0,    0,    0,
    0,   55,    0,    0,    0,    0,    0,  164,  165,  173,
    0,    0,    0,    0,  172,  171,   43,    0,    0,   18,
    0,    0,    0,  113,   16,    0,    0,   14,
};
const short yydgoto[] =
	{                                       4,
    5,  123,  210,   54,  211,  145,  212,   40,   41,   42,
   43,   44,   45,  124,  247,  125,  126,   46,   47,   63,
  228,  127,  128,  253,  129,  130,  188,    6,    7,  131,
  257,  275,  226,  189,  181,   92,   93,   49,  132,   50,
  367,  362,  353,  310,   55,  207,  292,  205,
};
const short yysindex[] =
	{                                    -55,
    0,    0,    0,    0,    0,  -39, 8470,    0,    0,  -66,
  -66,    0, 5698,    0,    0,   32, 1365, -255,    0,    0,
   43,   53,   64,    0,    0,    0,   89,    0,    0,   56,
   90,  107, 1365, 1365, 9050, -114, -114, 1365, 7895,  -37,
    0,  -13,    0,  -29,    0, -264,   40, 5023,  108, -184,
 5023, 5023, 1864,   46, -179,  368, 5698, 1365,  -37, -230,
    0,    0,  120, 5698, 5698, 5698, 3071, 1365, -117, 5698,
 5698, -176, -176, -176,    0,    0,    0,    0, -151, 5698,
    0,    0, 5698, 5698, 5698, 5698, 5698, 5698, -178, 5698,
  -37, 8646, 8734,  866, 1365, 1365, 1365, 1365, 1365,  -74,
 5023, 8470, 5698,    0,    0, 5698,    0,    0,  -74,  -24,
  -24, -178,    0, 8566,  165,  172,  -24,  -24,    0,    0,
 8566,  205, 7895,  -24,    0, 5157,    0, 6011,    0,   -2,
 5023, 9074, 5698,    0, 5352, 5425,    0,    0, 8801,  -19,
 8801,  203,    0, 7895,   96, 7035,  -64, 7107, 7107,  100,
    0,  102,  -37, 1365, 7107, 7107, -114, 9202,    0, 9202,
 9202, 9202, 9202, 9202, 9202,    0, 7182,    0, 8331,    0,
 8240, 1365, -176,  -35,  -35, -176, -176, -176,    0,    3,
 5698, 5486,    0, 7895,  -23,    0,  -74,    0,    3,    0,
  180, 6709,    0, 1771, 5698,    0,    0, 6709,    0, 5698,
    0,    0,    0,  -52, 6011,    0, 6011, 5547, 5698, 8542,
  233, -108,  -37,    0, -252, 7107,  233,    0,    0,    0,
 7895, -178, 7895,    0,    0, 8801,    0,  118, 8801, 8801,
    0,    0,  -37, -210, 8801,    0, 5698,  -37,    0,  -66,
    0,    0,    0, 5698,    0,    0,  236,  -80, 7289,    0,
 7289,    0, 5621,    0,    0,    0,   44,  134, 9126, -178,
 9126,  -37, 8877, 8959, 8983, 1365, 1365, 1365, 9126, 8801,
 8801,    0, 7895,    0,   50, -223, 7374,  256, 7461,  281,
  138, 6781, 7895, 5023,    8,   -5, -178,   50,   50,    0,
    0,  -17,    0,   38, 5698, 9202,    0,    0, 8407, 4219,
  271, 8542,  -37,  -37,  -37, 8542, 6853, 6963,    0,  -66,
    0,    0,    0,    0,    0,    0, 8801,    0, 8801, 5815,
    0,  -74, 5698,  282,  291, -178,  142, 9126,    0,   36,
    0,   36, 5023, 7556,  297, 7641,    0, 1771, 7727,   50,
 5698,    0,   38, 8542,  303,  314, 5889,    0,    0,    0,
  282,  -74, 6011, 7823,    0,    0,    0,   50, 1771,    0,
  -24, 6011,  282,    0,    0,   50, 6011,    0,};
const short yyrindex[] =
	{                                   3301,
    0,    0,    0,    0,    0, 3353,  356,    0,    0,    0,
    0,    0,    0,    0,    0,   91,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, 3620,
    0,    0,    0,    0,    0,    0,    0,    0,   67, 2889,
    0, 3155,    0, 3301,    0, 1993,    1,    0,    0,  185,
    0,    0,    0,    0,    0,    0,    0,    0, 2349, 1682,
    0,    0,    0,    0,    0,    0,    0,    0,  500,    0,
    0,  590,  684,  999,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 2983,    0,    0,    0,    0,    0,    0,    0,    0, 9150,
    0,  362,    0,    0,    0,    0,    0,    0, 4816,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  -32,    0,    0,    0,    0,    0,    0, 6084,
    0,  239,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   22,    0,    0,  162,    0,    0,    0,
    0,    0, 2443,    0,    0,    0, 3690, 1047,    0, 1546,
 2490, 3723, 3774, 3784, 3817,    0,    0,    0, 4547,    0,
  856,    0, 1089, 2083, 2177, 1183, 1498, 1588,    0, 4099,
    0,    0,    0,   58,    0,    0, 4816,    0, 4928,    0,
  -22,    0,    0,  305,    0,    0,    0,    0,    0,    0,
    0,    0,    0, 5950,    0,    0,    0,    0,    0, 1011,
  306,    6, 8077,    0, 4755,    0, 7981,    0,    0,    0,
  163,    0,  169,    0,    0,    0,    0,    0,    0,    0,
    0,    0, 2533,    0,    0,    0,    0, 2799,    0, 3249,
    0,    0,    0,    0,    0,    0,    0, 4662,    0,    0,
    0,    0,    0,    0,    0,    0, 5084,    0,    0,    0,
    0, 8153,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   34,    0,  247,    0,    0, 7981,    0, 7981,
    0,    0,   98,    0,    0, 9150,    0, 6157, 6218,    0,
    0,    0,    0,  403,    0,  216,    0,    0,    0,  179,
  635, 1034,   10,   30,   33,  539,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, 6620,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0, 7981,    0,    0,  342,    0, 6279,
    0,    0,    0,  768,    0,    0,    0,    0,    0,    0,
    0, 6620,    0,    0,    0,    0,    0, 6352,  342,    0,
    0,    0,    0,    0,    0, 6425,    0,    0,};
const short yygindex[] =
	{                                      0,
    0, 4594,  391, -175,    0,  -11,    0, 4313,  -10,  204,
  293,    0,  -65, -166, -277, 1227,  -28, 4033,  891,    0,
    0,    0,    0,    0,    0,    0,  -85,    0,  349,    7,
    0, -163,  429,  -87, -106, -133, -104,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,
};
#define YYTABLESIZE 9552
const short yytable[] =
	{                                      98,
  176,   98,  186,    3,   97,   95,   97,   96,  105,   94,
  106,   94,  180,   48,  159,  266,   51,   52,  104,    9,
  137,  180,  135,  136,   75,  190,  105,  246,  193,    3,
  100,  196,  197,  258,  187,  199,  104,  176,  201,  220,
  176,  176,  176,  176,  176,  176,  102,  176,  101,  103,
   99,  137,  220,  322,  150,  152,   12,   59,  176,  176,
  351,  269,   46,  176,  102,   46,   34,  217,   99,  242,
  100,   56,  182,  101,   47,   61,  263,   47,   62,   15,
  243,  363,   64,  104,  105,  288,  140,  289,  100,  137,
  146,  101,   65,  176,  185,  104,  105,   60,   59,  180,
  321,   59,  208,   66,   59,  264,  245,  311,   48,   12,
   34,   15,  250,   34,   46,   59,   59,  104,  105,  327,
   24,  214,   26,  176,  176,   34,   47,  146,   67,   70,
  106,  146,  146,  146,  146,  146,  225,  146,   60,  137,
  231,   60,  232,  137,   60,  137,   71,  133,  146,  146,
   59,  134,   24,  146,   26,   60,   60,  142,  274,  147,
  340,  137,  263,  278,  280,  263,  263,  263,  263,  154,
   99,  246,  263,  267,  294,   15,  268,  137,  316,  323,
   59,  137,  343,  146,  168,  137,  157,  358,  179,   34,
   60,  264,  246,  297,  264,  264,  264,  264,  180,  366,
    1,  264,  180,   78,  194,  180,   78,    2,  287,   79,
  263,  195,   79,  146,  146,  338,   24,   25,   26,   51,
   60,  168,   51,    8,  168,  168,  168,  168,  168,  168,
  105,  168,  285,    2,  180,   38,   51,   51,  179,  264,
  104,   51,  168,  168,  200,  359,  284,  168,  214,  224,
  214,  335,  214,  214,  214,  320,   53,  179,  214,   53,
  206,  176,  176,  176,  180,  239,  227,  176,  102,  222,
  244,  252,   99,   53,   53,  364,  137,  168,   53,   82,
  176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
  176,  176,  100,  176,  286,  101,  313,   82,  220,  176,
  176,  176,   51,  176,  347,  176,  293,  168,  168,   99,
   57,   99,  309,   33,  176,   34,  333,  214,   59,   59,
   59,  315,  274,  176,  325,   15,  326,   34,   34,   34,
  341,  176,  176,  176,  176,  176,  176,  349,  176,   53,
  176,  176,   68,  355,  176,   15,   83,  176,  176,  176,
  176,  146,  146,  146,  356,   32,   59,  146,   60,   60,
   60,   33,   82,   30,   83,   34,   24,   25,   26,   42,
  146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
  146,  146,   30,  146,  240,   38,   24,   25,   26,  146,
  146,  146,  102,  146,  183,  146,   60,    0,    0,    0,
    0,    0,    0,    0,  146,   38,    0,   13,  143,    0,
   33,    0,   34,  146,   14,    0,    0,    0,    0,    0,
    0,  146,  146,  146,  146,  146,  146,    0,  146,   83,
  146,  146,    0,    0,  146,    0,    0,  146,  146,  146,
  146,   51,    0,   84,    0,  168,  168,  168,    0,    0,
    0,  168,    0,    0,    0,    0,    0,    0,   51,   51,
   51,   84,    0,   51,  168,  168,  168,  168,  168,  168,
  168,  168,  168,  168,  168,  168,    0,  168,   53,    0,
    0,  139,  141,  168,  168,  168,    0,  168,    0,  168,
    0,    0,    0,    0,    0,   53,   53,   53,  168,  156,
   53,   82,    0,    0,    0,    0,    0,  168,    0,    0,
    0,    0,    0,    0,    0,  168,  168,  168,  168,  168,
   82,    0,  168,   82,  168,  168,   84,    0,  168,    0,
    0,  168,  168,  168,  168,    0,  156,  259,    0,  156,
  156,  156,  156,  156,  156,    0,  156,    0,    0,    0,
   81,    0,    0,   53,    0,    0,    0,  156,  156,  260,
   15,   16,  156,   17,    0,    0,    0,    0,   83,    0,
   19,   20,    0,   21,    0,   22,  229,  230,    0,   48,
    0,    0,   48,  234,  235,    0,    0,   83,    0,  142,
   83,    0,  156,   23,    0,    0,   48,   48,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,    0,   58,    0,    0,    0,   36,   37,
   38,    0,  156,  156,    0,    0,  142,    0,    0,  142,
  142,  142,  142,  142,  142,    0,  142,    0,    0,  265,
    0,    0,    0,    0,  270,  271,    0,  142,  142,  296,
    0,  299,  142,  300,  301,  302,  276,   15,   16,  306,
   17,    0,   48,    0,    0,   84,    0,   19,   20,    0,
   21,    0,   22,    0,    0,   50,    0,    0,   50,    0,
    0,    0,  142,  141,   84,    0,  141,   84,    0,    0,
   23,    0,   50,   50,    0,    0,    0,   50,   24,   25,
   26,   27,   28,   29,    0,   30,    0,   31,   32,  317,
  319,   35,  142,  142,    0,   36,   37,   38,  344,    0,
  141,    0,    0,  141,  141,  141,  141,  141,  141,    0,
  141,    0,    0,    0,    0,  330,  332,    0,    0,    0,
    0,  141,  141,    0,    0,    0,  141,    0,    0,    0,
    0,    0,    0,    0,    0,  141,    0,    0,   50,    0,
  156,  156,  156,    0,    0,    0,  156,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  141,    0,    0,  156,
  156,  156,  156,  156,  156,  156,    0,  156,  156,  156,
  156,    0,  156,    0,    0,    0,    0,    0,  156,  156,
  156,   48,  156,    0,  156,    0,  141,  141,   49,    0,
    0,   49,    0,  156,    0,    0,    0,    0,    0,    0,
   48,    0,  156,   48,    0,   49,   49,    0,    0,    0,
  156,  156,  156,  156,  156,  156,    0,  156,    0,  156,
  156,    0,    0,  156,    0,    0,  156,  156,  156,  156,
  142,  142,  142,    0,    0,   61,  142,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  142,
  142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
  142,    0,  142,    0,    0,    0,    0,    0,  142,  142,
  142,   49,  142,    0,  142,    0,   61,   50,    0,   61,
    0,    0,   61,  142,    0,   57,    0,    0,   33,    0,
   34,    0,  142,   61,   61,   50,   50,    0,   61,   50,
  142,  142,  142,  142,  142,  142,    0,  142,    0,  142,
  142,    0,    0,  142,    0,    0,    0,  142,  142,  142,
    0,    0,    0,    0,  141,  141,  141,    0,   61,    0,
  141,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  141,  141,  141,  141,  141,  141,  141,
  141,  141,  141,  141,  141,    0,  141,    0,   61,  166,
    0,    0,  141,  141,  141,    0,  141,    0,  141,    0,
    0,    0,    0,    0,    0,    0,    0,  141,  143,    0,
    0,    0,  191,    0,    0,    0,  141,    0,    0,    0,
    0,    0,    0,    0,  141,  141,  141,  141,  141,  141,
    0,  141,    0,  141,  141,    0,    0,  141,    0,    0,
   49,  141,  141,  141,    0,  143,    0,    0,  143,  143,
  143,  143,  143,  143,    0,  143,   70,    0,    0,   49,
    0,   80,   49,    0,   80,    0,  143,  143,    0,    0,
    0,  143,    0,    0,    0,    0,    0,    0,    0,   80,
    0,    0,    0,    0,   81,    0,    0,   81,    0,    0,
    0,    0,    0,    0,  248,    0,    0,   70,  138,    0,
   70,  143,   81,   70,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   70,   70,    0,    0,    0,   70,
    0,    0,  272,    0,    0,    0,   61,   61,   61,    0,
    0,  143,  143,    0,  281,  138,    0,    0,  138,  138,
  138,  138,  138,  138,   80,  138,   61,    0,    0,   70,
    0,    0,    0,    0,    0,    0,  138,  138,    0,    0,
  298,  138,    0,    0,   61,   15,   16,   81,   17,    0,
    0,    0,    0,    0,    0,   19,   20,    0,   21,   70,
   22,    0,    0,    0,    0,    0,    0,  324,    0,  172,
    0,  138,  137,    0,    0,    0,    0,    0,   23,    0,
    0,    0,    0,    0,    0,    0,   24,   25,   26,   27,
   28,   29,    0,   30,    0,   31,   32,    0,    0,   58,
    0,  138,  138,   36,   37,   38,  342,    0,    0,  137,
    0,    0,  137,  137,  137,  137,  137,  137,    0,  137,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  137,  137,    0,    0,    0,  137,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  143,
  143,  143,    0,    0,    0,  143,    0,    0,    0,    0,
    0,    0,    0,   80,    0,  137,    0,    0,  143,  143,
  143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
    0,  143,   80,    0,    0,   80,   81,  143,  143,  143,
    0,  143,    0,  143,    0,  137,  137,   70,   70,   70,
    0,    0,  143,    0,    0,   81,    0,    0,   81,    0,
    0,  143,    0,    0,    0,    0,   70,   70,    0,  143,
  143,  143,  143,  143,  143,    0,  143,    0,  143,  143,
    0,    0,  143,    0,    0,   70,  143,  143,  143,  138,
  138,  138,  203,    0,  204,  138,    0,    0,    0,    0,
    0,  203,  203,    0,    0,    0,    0,    0,  138,  138,
  138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
    0,  138,    0,    0,   70,    0,    0,  138,  138,  138,
    0,  138,    0,  138,    0,    0,    0,    0,    0,    0,
    0,    0,  138,    0,   57,    0,    0,   33,  203,   34,
    0,  138,    0,    0,    0,    0,    0,    0,    0,  138,
  138,  138,  138,  138,  138,    0,  138,    0,  138,  138,
    0,  254,  138,  255,  203,    0,  138,  138,  138,    0,
    0,    0,    0,  137,  137,  137,    0,    0,    0,  137,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  137,  137,  137,  137,  137,  137,  137,  137,
  137,  137,  137,  137,    0,  137,    0,    0,    0,  291,
    0,  137,  137,  137,    0,  137,    0,  137,    0,    0,
    0,    0,    0,    0,    0,    0,  137,  139,    0,    0,
    0,    0,    0,    0,    0,  137,    0,    0,    0,    0,
    0,    0,    0,  137,  137,  137,  137,  137,  137,    0,
  137,    0,  137,  137,    0,    0,  137,    0,    0,    0,
  137,  137,  137,    0,  139,    0,    0,  139,  139,  139,
  139,  139,  139,    0,  139,   63,  203,    0,    0,    0,
    0,    0,    0,    0,    0,  139,  139,    0,    0,    0,
  139,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  203,    0,    0,    0,    0,    0,  360,
    0,    0,    0,    0,    0,    0,   63,  140,  365,   63,
  139,    0,   63,  368,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   63,   63,    0,    0,    0,   63,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  139,  139,    0,    0,  140,    0,    0,  140,  140,  140,
  140,  140,  140,    0,  140,    0,    0,    0,   63,    0,
    0,    0,    0,    0,    0,  140,  140,    0,    0,    0,
  140,    0,    0,    0,   15,   16,    0,   17,    0,    0,
    0,    0,    0,    0,   19,   20,    0,   21,   63,   22,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  140,  175,    0,    0,    0,    0,    0,   23,    0,    0,
    0,    0,    0,    0,    0,   24,   25,   26,   27,   28,
   29,    0,   30,    0,   31,   32,    0,    0,   58,    0,
  140,  140,   36,   37,   38,    0,    0,    0,  175,    0,
    0,  175,  175,  175,  175,  175,  175,    0,  175,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  175,
  175,    0,    0,    0,  175,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  139,  139,
  139,    0,    0,    0,  139,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  175,    0,    0,  139,  139,  139,
  139,  139,  139,  139,  139,  139,  139,  139,  139,    0,
  139,    0,    0,    0,    0,    0,  139,  139,  139,    0,
  139,    0,  139,    0,  175,  175,   63,   63,   63,    0,
   13,  139,    0,   33,    0,   34,    0,   14,    0,    0,
  139,    0,    0,    0,    0,   63,   63,    0,  139,  139,
  139,  139,  139,  139,    0,  139,    0,  139,  139,    0,
    0,  139,    0,    0,   63,  139,  139,  139,  140,  140,
  140,    0,    0,    0,  140,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  140,  140,  140,
  140,  140,  140,  140,  140,  140,  140,  140,  140,    0,
  140,    0,    0,   63,    0,    0,  140,  140,  140,    0,
  140,    0,  140,    0,    0,    0,    0,    0,    0,    0,
    0,  140,    0,   57,  138,    0,   33,  137,   34,    0,
  140,    0,    0,    0,    0,    0,    0,    0,  140,  140,
  140,  140,  140,  140,    0,  140,   90,  140,  140,    0,
    0,  140,    0,    0,    0,  140,  140,  140,    0,    0,
    0,    0,  175,  175,  175,    0,    0,    0,  175,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  175,  175,  175,  175,  175,  175,  175,  175,  175,
  175,  175,  175,    0,  175,    0,    0,    0,    0,    0,
  175,  175,  175,    0,  175,    0,  175,   79,    0,    0,
    0,    0,  175,    0,    0,  175,    0,    0,    0,    0,
    0,    0,    0,    0,  175,    0,    0,    0,    0,    0,
    0,    0,  175,  175,  175,  175,  175,  175,    0,  175,
    0,  175,  175,    0,    0,  175,  107,    0,  175,  175,
    0,  175,  175,  175,  175,  175,  175,  175,    0,  175,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  175,  175,    0,    0,    0,  175,    0,    0,    0,    0,
   15,   16,    0,   17,    0,  112,    0,    0,    0,    0,
   19,   20,    0,   21,    0,   22,    0,    0,    0,    0,
    0,    0,  135,    0,    0,  175,    0,    0,    0,    0,
    0,  119,  120,   23,    0,    0,    0,    0,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,    0,   35,  175,  175,    0,   36,   37,
   38,    0,  135,  135,    0,  135,  135,  135,    0,    0,
   80,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  135,  135,    0,   81,   82,  135,   83,   84,   85,   86,
   87,   88,   89,   15,   16,    0,   17,    0,    0,    0,
    0,    0,    0,   19,   20,    0,   21,    0,   22,    0,
    0,    0,    0,    0,    0,  135,  136,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   23,    0,    0,    0,
    0,    0,    0,    0,   24,   25,   26,   27,   28,   29,
    0,   30,    0,   31,   32,  135,  135,   58,    0,    0,
    0,   36,   37,   38,    0,    0,  136,  136,    0,  136,
  136,  136,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  136,  136,    0,    0,    0,  136,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  175,  175,  175,    0,    0,    0,  175,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  136,
    0,    0,  175,  175,    0,  175,  175,  175,  175,  175,
  175,  175,  175,  175,    0,  175,    0,    0,    0,    0,
    0,  175,  175,  175,    0,  175,    0,  175,    0,  136,
  136,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  175,    0,    0,    0,    0,
    0,    0,    0,  175,  175,  175,  175,  175,  175,    0,
  175,    0,  175,  175,    0,    0,  175,    0,    0,  175,
    0,    0,  175,  135,  135,  135,    0,    0,  149,  135,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  135,  135,  135,  135,  135,  135,  135,  135,
  135,  135,  135,  135,    0,  135,    0,    0,    0,    0,
    0,  135,  135,  135,    0,  135,    0,  135,  149,  149,
    0,    0,  149,    0,    0,    0,  135,    0,    0,    0,
    0,    0,    0,    0,    0,  135,  149,  149,    0,    0,
    0,  149,    0,  135,  135,  135,  135,  135,  135,    0,
  135,    0,  135,  135,    0,    0,  135,    0,    0,    0,
  135,  135,  135,    0,    0,    0,    0,  136,  136,  136,
    0,  149,  155,  136,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  136,  136,  136,  136,
  136,  136,  136,  136,  136,  136,  136,  136,    0,  136,
    0,  149,  149,    0,    0,  136,  136,  136,    0,  136,
    0,  136,  155,  155,    0,    0,  155,    0,    0,   64,
  136,    0,    0,    0,    0,    0,    0,    0,    0,  136,
  155,  155,    0,    0,    0,  155,    0,  136,  136,  136,
  136,  136,  136,    0,  136,    0,  136,  136,    0,    0,
  136,    0,    0,    0,  136,  136,  136,    0,    0,    0,
   64,    0,  154,   64,    0,  155,   64,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   64,   64,    0,
    0,    0,   64,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  155,  155,    0,    0,    0,
    0,    0,  154,  154,    0,    0,  154,    0,    0,    0,
    0,    0,   64,    0,    0,    0,    0,    0,    0,    0,
  154,  154,    0,    0,    0,  154,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  149,
  149,  149,   64,    0,    0,  149,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  154,    0,    0,  149,  149,
  149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
    0,  149,    0,    0,    0,    0,    0,  149,  149,  149,
    0,  149,    0,  149,    0,  154,  154,    0,    0,    0,
    0,    0,  149,    0,    0,    0,    0,    0,    0,    0,
    0,  149,    0,    0,    0,    0,    0,    0,    0,  149,
  149,  149,  149,  149,  149,    0,  149,    0,  149,  149,
    0,    0,  149,    0,    0,    0,  149,  149,  149,    0,
    0,    0,    0,  155,  155,  155,    0,    0,    0,  155,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  155,  155,  155,  155,  155,  155,  155,  155,
  155,  155,  155,  155,    0,  155,    0,    0,    0,    0,
    0,  155,  155,  155,    0,  155,    0,  155,    0,    0,
   64,   64,   64,    0,    0,    0,  155,    0,    0,    0,
    0,    0,    0,    0,    0,  155,    0,    0,    0,   64,
   64,    0,    0,  155,  155,  155,  155,  155,  155,    0,
  155,    0,  155,  155,    0,    0,  155,    0,   64,    0,
  155,  155,  155,  154,  154,  154,    0,    0,  134,  154,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  154,  154,  154,  154,  154,  154,  154,  154,
  154,  154,  154,  154,    0,  154,    0,   64,    0,    0,
    0,  154,  154,  154,    0,  154,    0,  154,  134,  134,
    0,    0,  134,    0,    0,    0,  154,    0,    0,    0,
    0,    0,    0,    0,    0,  154,  134,  134,    0,    0,
    0,  134,    0,  154,  154,  154,  154,  154,  154,    0,
  154,    0,  154,  154,    0,    0,  154,    0,    0,    0,
  154,  154,  154,    0,    0,    0,    0,    0,   77,    0,
    0,  134,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  134,  134,    0,    0,    0,    0,    0,   77,   77,
    0,    0,   77,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   77,   77,    0,    0,
    0,   77,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   77,   75,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   77,   77,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   75,   75,    0,    0,   75,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   75,   75,    0,    0,    0,   75,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  134,
  134,  134,    0,    0,    0,  134,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   75,    0,    0,  134,  134,
  134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
    0,  134,    0,    0,    0,    0,    0,  134,  134,  134,
    0,  134,    0,  134,    0,   75,   75,    0,    0,    0,
   13,  151,  134,   33,    0,   34,    0,   14,    0,    0,
    0,  134,    0,    0,    0,    0,    0,    0,    0,  134,
  134,  134,  134,  134,  134,    0,  134,    0,  134,  134,
    0,    0,  134,    0,    0,    0,  134,  134,  134,   77,
   77,   77,    0,    0,   35,   77,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   77,   77,
    0,   77,   77,   77,   77,   77,   77,   77,   77,   77,
    0,   77,    0,    0,    0,    0,    0,   77,   77,   77,
    0,   77,    0,   77,   35,    0,    0,   35,    0,   35,
    0,   35,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   77,    0,   35,    0,    0,    0,    0,    0,   77,
   77,   77,   77,   77,   77,    0,   77,    0,   77,   77,
    0,    0,   77,    0,    0,    0,   77,   77,   77,    0,
    0,    0,    0,   75,   75,   75,    0,    0,   37,   75,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   75,   75,    0,   75,   75,   75,   75,   75,
   75,   75,   75,   75,    0,   75,    0,    0,    0,    0,
    0,   75,   75,   75,    0,   75,    0,   75,   37,    0,
    0,   37,    0,   37,    0,   37,    0,    0,    0,    0,
   28,    0,    0,    0,    0,   75,    0,   37,    0,    0,
    0,    0,    0,   75,   75,   75,   75,   75,   75,    0,
   75,    0,   75,   75,    0,    0,   75,    0,    0,    0,
   75,   75,   75,    0,    0,    0,    0,    0,    0,    0,
   28,    0,    0,   28,    0,   28,    0,   28,    0,    0,
    0,    0,   29,    0,    0,    0,    0,    0,    0,    0,
   15,   16,    0,   17,    0,    0,    0,    0,    0,    0,
   19,   20,    0,   21,    0,   22,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   29,   23,    0,   29,    0,   29,    0,   29,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,    0,   35,   35,   35,   35,   36,   37,
   38,    0,    0,   28,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   35,   35,    0,   35,    0,    0,
    0,    0,    0,   35,   35,   35,    0,   35,    0,   35,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   29,    0,   35,    0,    0,
    0,    0,    0,    0,    0,   35,   35,   35,   35,   35,
   35,    0,   35,    0,   35,   35,    0,    0,   35,    0,
    0,    0,   35,   35,   35,    0,    0,    0,    0,   37,
   37,   37,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   37,   37,
    0,   37,    0,    0,    0,    0,    0,   37,   37,   37,
    0,   37,    0,   37,    0,    0,    0,    0,    0,    0,
    0,   28,   28,    0,    0,    0,    0,    0,    0,    0,
    0,   37,    0,    0,    0,    0,    0,    0,    0,   37,
   37,   37,   37,   37,   37,    0,   37,    0,   37,   37,
   28,   28,   37,   28,    0,    0,   37,   37,   37,   28,
   28,   28,    0,   28,    0,   28,    0,    0,    0,    0,
    0,    0,    0,   29,   29,    0,    0,    0,    0,  157,
    0,    0,    0,   28,    0,    0,    0,    0,    0,    0,
    0,   28,   28,   28,   28,   28,   28,    0,   28,    0,
   28,   28,   29,   29,   28,   29,    0,    0,   28,   28,
   28,   29,   29,   29,    0,   29,  157,   29,    0,  157,
  157,  157,  157,  157,  157,    0,  157,    0,    0,    0,
    0,    0,    0,    0,    0,   29,    0,  157,  157,    0,
    0,    0,  157,   29,   29,   29,   29,   29,   29,   74,
   29,    0,   29,   29,    0,    0,   29,    0,    0,    0,
   29,   29,   29,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  157,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   65,    0,    0,    0,    0,    0,    0,   74,
   74,    0,   74,   74,   74,    0,   74,    0,    0,    0,
    0,    0,  157,  157,    0,    0,    0,   74,   74,    0,
    0,    0,   74,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   65,    0,    0,   65,    0,    0,   65,
    0,    0,    0,   66,    0,    0,    0,    0,    0,    0,
   65,   65,   74,   67,    0,   65,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   74,   74,   66,   65,   68,   66,    0,    0,
   66,    0,    0,    0,   67,    0,    0,   67,    0,    0,
   67,   66,   66,    0,    0,    0,   66,    0,    0,    0,
    0,   67,   67,    0,    0,   65,   67,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   68,    0,    0,
   68,    0,    0,   68,    0,    0,   66,    0,    0,    0,
    0,    0,    0,    0,   68,   68,   67,    0,    0,   68,
  157,  157,  157,    0,    0,    0,  157,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   66,    0,    0,  157,
  157,  157,  157,  157,  157,  157,   67,  157,  157,   68,
  157,    0,  157,    0,    0,    0,    0,    0,  157,  157,
  157,    0,  157,    0,  157,    0,    0,    0,    0,    0,
    0,    0,    0,  157,    0,    0,    0,    0,    0,   68,
    0,    0,  157,    0,    0,    0,    0,    0,    0,    0,
   74,   74,   74,  157,  157,  157,   74,  157,    0,  157,
  157,    0,    0,  157,    0,    0,  157,  157,  157,   74,
   74,    0,   74,   74,   74,   74,   74,   74,   74,    0,
   74,    0,   74,   65,   65,   65,    0,    0,   74,   74,
   74,    0,   74,    0,   74,    0,    0,    0,    0,    0,
    0,    0,   65,   65,    0,    0,    0,    0,    0,    0,
    0,    0,   74,    0,    0,    0,    0,    0,    0,    0,
    0,   65,    0,   74,   74,   74,    0,   74,    0,   74,
   74,    0,    0,   74,   66,   66,   66,   74,   74,    0,
    0,    0,    0,    0,   67,   67,   67,    0,    0,   60,
    0,    0,    0,   66,   66,    0,    0,    0,    0,    0,
   65,    0,   69,   67,   67,   60,   60,   60,   76,   77,
   60,   60,   66,    0,    0,    0,    0,   68,   68,   68,
    0,    0,   67,    0,    0,   60,    0,    0,    0,    0,
   60,    0,    0,    0,    0,    0,   68,   68,    0,    0,
   60,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   66,    0,    0,    0,   68,    0,    0,    0,    0,
    0,   67,    0,    0,    0,    0,   60,   60,   60,   60,
   60,   60,    0,    0,    0,    0,    0,    0,   27,   27,
    0,   27,    0,   27,    0,   27,    0,    0,    0,    0,
    0,    0,    0,    0,   68,   60,    0,   27,    0,    0,
    0,    0,    0,    0,  215,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   60,    0,   60,    0,
   60,   60,    0,    0,    0,    0,   60,   60,   60,  236,
   60,    0,   60,   60,   60,   60,   60,   60,    0,   60,
    0,   60,    0,   60,   60,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   60,    0,    0,    0,
    0,   27,    0,   27,   60,    0,    0,    0,    0,    0,
   60,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   60,    0,    0,    0,    0,    0,   60,    0,
    0,    0,    0,   60,    0,   60,    0,    0,   57,    0,
    0,   33,    0,   34,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   60,    0,   60,    0,    0,    0,    0,    0,    0,
    0,  215,    0,  215,    0,  215,  215,  215,   60,   60,
   60,  215,    0,    0,    0,   60,    0,    0,    0,   60,
    0,   60,    0,    0,   60,   60,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   60,   59,
    0,   60,   60,   60,   60,    0,    0,    0,   60,   60,
   60,    0,    0,    0,    0,   72,   73,   74,    0,    0,
   78,   91,    0,    0,   27,    0,    0,    0,    0,    0,
  215,    0,  345,    0,  346,   91,   60,    0,   60,    0,
   74,   60,    0,    0,    0,    0,   60,    0,    0,    0,
  153,    0,    0,    0,    0,    0,   60,    0,   27,   27,
   27,   27,   27,   27,   27,   27,   27,    0,   27,   27,
   27,   27,    0,   27,   27,   27,  173,  174,  175,  176,
  177,  178,    0,    0,    0,    0,    0,    0,    0,   27,
   27,   27,   27,    0,    0,    0,    0,    0,    0,   27,
   27,   27,   27,   27,   27,   91,   27,   27,   27,   27,
   27,    0,   27,    0,  213,    0,   27,   27,   27,    0,
    0,    0,    0,    0,    0,    0,   91,    0,   91,    0,
   91,   91,    0,    0,    0,    0,  233,   91,   91,    0,
   91,    0,   91,   91,   91,   91,   91,   91,    0,   91,
    0,   91,    0,   91,  238,  259,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   91,    0,    0,    0,
    0,    0,    0,    0,   91,    0,    0,  260,   15,   16,
   91,   17,    0,    0,    0,    0,    0,    0,   19,   20,
    0,   21,  262,   22,    0,    0,    0,    0,   91,    0,
    0,    0,    0,   91,    0,   91,    0,    0,    0,    0,
    0,   23,    0,    0,    0,    0,   62,    0,    0,   24,
   25,   26,   27,   28,   29,    0,   30,    0,   31,   32,
    0,   91,   58,   91,    0,    0,   36,   37,   38,    0,
    0,  213,    0,  213,    0,  213,  213,  213,  303,  304,
  305,  213,    0,    0,    0,   91,    0,   62,    0,   91,
   62,   91,    0,   62,   91,   91,    0,    0,    0,    0,
   39,    0,    0,    0,   62,   62,   53,    0,  262,   62,
    0,  262,  262,  262,  262,    0,    0,    0,  262,   91,
   91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   62,
  213,    0,    0,    0,    0,    0,   91,    0,   91,  144,
  146,   91,    0,    0,    0,    0,  262,  148,  149,  144,
  144,    0,    0,  155,  156,    0,   91,    0,    0,   62,
    0,    0,    0,  158,    0,    0,  160,  161,  162,  163,
  164,  165,    0,  167,    0,  169,  171,    0,    0,    0,
    0,    0,    0,    0,    0,   39,  184,    0,  176,  144,
    0,  176,    0,  176,  176,    0,  176,  192,  176,    0,
    0,    0,    0,    0,  198,    0,    0,    0,    0,    0,
  176,    0,    0,    0,  176,    0,  216,    0,    0,    0,
    0,    0,  221,    0,  223,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   39,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  176,    0,    0,  249,    0,
    0,  175,    0,  251,  175,  175,  175,  175,  175,  175,
    0,  175,   53,    0,    0,    0,    0,   62,   62,   62,
    0,    0,  175,  175,    0,    0,    0,  175,    0,  273,
    0,    0,  277,  279,    0,    0,   62,   62,  282,    0,
  283,    0,    0,    0,    0,    0,    0,  144,    0,    0,
    0,    0,    0,    0,    0,   62,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   26,    0,    0,   26,    0,
   26,    0,   26,  307,  308,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   26,    0,    0,    0,  175,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   53,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  334,    0,  336,    0,    0,    0,  339,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  176,    0,
    0,    0,    0,    0,  354,    0,    0,    0,   26,    0,
   26,  176,  176,    0,  176,  176,  176,  176,  176,  176,
    0,  176,  176,    0,  176,    0,    0,    0,    0,    0,
    0,  176,  176,    0,  176,    0,  176,  107,    0,    0,
  107,    0,  107,    0,  107,  176,    0,    0,    0,    0,
    0,    0,    0,    0,  176,    0,  107,    0,    0,    0,
    0,    0,  176,  176,  176,  176,  176,  176,    0,  176,
    0,  176,  176,    0,    0,  176,    0,    0,  176,  176,
  176,  176,    0,    0,    0,    0,    0,  175,    0,    0,
    0,  175,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  175,  175,  175,    0,    0,  175,
    0,    0,    0,  175,  175,  175,    0,  175,    0,    0,
  107,    0,  107,    0,  175,  175,    0,  175,    0,  175,
    0,    0,   13,    0,    0,   33,    0,   34,    0,   14,
    0,   26,    0,    0,    0,    0,    0,  175,    0,    0,
    0,  109,    0,    0,    0,  175,  175,  175,  175,  175,
  175,    0,  175,    0,  175,  175,    0,    0,  175,    0,
    0,  175,    0,    0,  175,   26,   26,   26,   26,   26,
   26,   26,   26,   26,    0,   26,   26,   26,   26,    0,
   26,   26,   26,  119,    0,    0,  119,    0,  119,    0,
  119,    0,    0,    0,    0,    0,   26,   26,   26,   26,
    0,    0,  119,    0,    0,   12,   26,   26,   26,   26,
   26,   26,    0,   26,   26,   26,   26,   26,    0,   26,
    0,    0,    0,   26,   26,   26,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  107,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   13,    0,    0,   33,
    0,   34,    0,   14,    0,    0,  119,    0,  119,    0,
    0,    0,    0,    0,    0,  109,    0,  107,  107,  107,
  107,  107,  107,  107,  107,  107,    0,  107,  107,  107,
  107,    0,  107,  107,  107,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  107,  107,
  107,  107,    0,    0,    0,    0,    0,    0,  107,  107,
  107,  107,  107,  107,    0,  107,  107,  107,  107,  107,
    0,  107,    0,    0,    0,  107,  107,  107,  107,   12,
    0,  202,    0,    0,    0,  108,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   15,   16,  110,   17,  111,  112,  113,  114,
  115,    0,   19,   20,  116,   21,    0,   22,  117,  118,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  119,
    0,    0,    0,  119,  120,   23,    0,    0,    0,    0,
    0,    0,    0,   24,   25,   26,   27,   28,   29,    0,
   30,  121,   31,   32,  122,    0,   35,    0,    0,    0,
   36,   37,   38,  119,  119,  119,  119,  119,  119,  119,
  119,  119,    0,  119,  119,  119,  119,    0,  119,  119,
  119,   13,    0,    0,   33,    0,   34,    0,   14,    0,
    0,    0,    0,    0,  119,  119,  119,  119,    0,    0,
  109,    0,  107,    0,  119,  119,  119,  119,  119,  119,
    0,  119,  119,  119,  119,  119,    0,  119,    0,    0,
    0,  119,  119,  119,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   15,   16,  110,   17,
  111,  112,  113,  114,  115,    0,   19,   20,  116,   21,
    0,   22,  117,  118,   13,    0,    0,   33,    0,   34,
    0,   14,    0,    0,   12,    0,  218,  119,  120,   23,
    0,    0,    0,  109,    0,    0,    0,   24,   25,   26,
   27,   28,   29,    0,   30,  121,   31,   32,  122,    0,
   35,    0,    0,    0,   36,   37,   38,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   13,    0,    0,   33,    0,
   34,    0,   14,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  109,    0,    0,   12,    0,  219,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   13,    0,    0,   33,
    0,   34,    0,   14,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  109,    0,  107,   12,    0,
  241,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   15,   16,  110,   17,  111,  112,  113,  114,  115,
    0,   19,   20,  116,   21,    0,   22,  117,  118,    0,
   13,    0,    0,   33,    0,   34,    0,   14,    0,   12,
    0,  256,  119,  120,   23,    0,    0,    0,    0,  109,
  107,    0,   24,   25,   26,   27,   28,   29,    0,   30,
  121,   31,   32,  122,    0,   35,    0,    0,    0,   36,
   37,   38,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   15,   16,  110,   17,  111,  112,
  113,  114,  115,    0,   19,   20,  116,   21,    0,   22,
  117,  118,    0,    0,    0,    0,    0,   13,    0,    0,
   33,  107,   34,   12,   14,  119,  120,   23,    0,    0,
    0,    0,    0,    0,    0,   24,   25,   26,   27,   28,
   29,    0,   30,  121,   31,   32,  122,    0,   35,    0,
    0,    0,   36,   37,   38,   15,   16,  110,   17,  111,
  112,  113,  114,  115,    0,   19,   20,  116,   21,    0,
   22,  117,  118,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  107,    0,    0,    0,  119,  120,   23,    0,
    0,    0,    0,    0,    0,    0,   24,   25,   26,   27,
   28,   29,    0,   30,  121,   31,   32,  122,    0,   35,
    0,    0,    0,   36,   37,   38,   15,   16,  110,   17,
  111,  112,  113,  114,  115,    0,   19,   20,  116,   21,
    0,   22,  117,  118,   13,    0,    0,   33,    0,   34,
    0,   14,    0,    0,    0,    0,    0,  119,  120,   23,
    0,    0,    0,  109,    0,    0,  107,   24,   25,   26,
   27,   28,   29,  290,   30,  121,   31,   32,  122,    0,
   35,    0,    0,    0,   36,   37,   38,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   15,   16,  110,   17,  111,  112,  113,  114,  115,    0,
   19,   20,  116,   21,    0,   22,  117,  118,   13,    0,
    0,   33,    0,   34,    0,   14,    0,   12,    0,  337,
    0,  119,  120,   23,    0,    0,    0,  109,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,  121,
   31,   32,  122,    0,   35,    0,    0,    0,   36,   37,
   38,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   15,   16,  118,
   17,    0,  118,    0,  118,    0,  118,   19,   20,    0,
   21,    0,   22,    0,    0,    0,    0,    0,  118,    0,
    0,   12,    0,  357,    0,    0,    0,    0,    0,    0,
   23,    0,    0,    0,    0,    0,    0,    0,   24,   25,
   26,   27,   28,   29,    0,   30,    0,   31,   32,    0,
    0,   35,    0,    0,    0,   36,   37,   38,    0,    0,
   13,    0,    0,   33,    0,   34,    0,   14,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  109,
  107,    0,  118,    0,  118,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   15,   16,  110,   17,  111,  112,
  113,  114,  115,    0,   19,   20,  116,   21,    0,   22,
  117,  118,    0,  111,    0,    0,  111,    0,  111,    0,
  111,    0,    0,   12,    0,  119,  120,   23,    0,    0,
    0,    0,  111,    0,  107,   24,   25,   26,   27,   28,
   29,    0,   30,  121,   31,   32,  122,    0,   35,    0,
    0,    0,   36,   37,   38,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   15,   16,
  110,   17,  111,  112,  113,  114,  115,    0,   19,   20,
  116,   21,    0,   22,  117,  118,   21,    0,    0,   21,
    0,   21,    0,   21,    0,  118,  111,    0,    0,  119,
  120,   23,    0,    0,    0,   21,    0,    0,    0,   24,
   25,   26,   27,   28,   29,    0,   30,  121,   31,   32,
  122,    0,   35,    0,    0,    0,   36,   37,   38,  118,
  118,  118,  118,  118,  118,  118,  118,  118,    0,  118,
  118,  118,  118,    0,  118,  118,  118,  186,    0,    0,
  186,    0,  186,    0,  186,    0,  107,    0,    0,    0,
  118,  118,  118,    0,    0,    0,  186,    0,    0,   21,
  118,  118,  118,  118,  118,  118,    0,  118,  118,  118,
  118,  118,    0,  118,    0,    0,    0,  118,  118,  118,
   15,   16,  110,   17,  111,  112,  113,  114,  115,    0,
   19,   20,  116,   21,    0,   22,  117,  118,   17,    0,
    0,   17,    0,   17,    0,   17,    0,    0,    0,    0,
    0,  119,  120,   23,    0,    0,    0,   17,    0,  111,
  186,   24,   25,   26,   27,   28,   29,    0,   30,  121,
   31,   32,  122,    0,   35,    0,    0,    0,   36,   37,
   38,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  111,  111,  111,  111,  111,  111,  111,
  111,  111,    0,  111,  111,  111,  111,    0,  111,  111,
  111,   15,    0,    0,   15,    0,   15,    0,   15,    0,
    0,   17,    0,    0,  111,  111,  111,    0,    0,    0,
   15,    0,   21,    0,  111,  111,  111,  111,  111,  111,
    0,  111,  111,  111,  111,  111,    0,  111,    0,    0,
    0,  111,  111,  111,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   21,   21,   21,   21,
   21,   21,   21,   21,   21,    0,   21,   21,   21,   21,
    0,   21,   21,   21,   13,    0,    0,   13,    0,   13,
    0,   13,    0,  186,   15,    0,    0,   21,   21,   21,
    0,    0,    0,   13,    0,    0,    0,   21,   21,   21,
   21,   21,   21,    0,   21,   21,   21,   21,   21,    0,
   21,    0,    0,    0,   21,   21,   21,  186,  186,  186,
  186,  186,  186,  186,  186,  186,    0,  186,  186,  186,
  186,    0,  186,  186,  186,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   17,    0,    0,    0,  186,  186,
  186,    0,    0,    0,    0,    0,    0,   13,  186,  186,
  186,  186,  186,  186,    0,  186,  186,  186,  186,  186,
    0,  186,    0,    0,    0,  186,  186,  186,   17,   17,
   17,   17,   17,   17,   17,   17,   17,    0,   17,   17,
   17,   17,    0,   17,   17,   17,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   17,
   17,   17,    0,    0,    0,    0,    0,   15,    0,   17,
   17,   17,   17,   17,   17,    0,   17,   17,   17,   17,
   17,    0,   17,    0,    0,    0,   17,   17,   17,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   15,   15,   15,   15,   15,   15,   15,   15,   15,
    0,   15,   15,   15,   15,    0,   15,   15,   15,   26,
   26,    0,   26,    0,   26,    0,   26,    0,    0,    0,
    0,    0,   15,   15,   15,    0,    0,    0,    0,    0,
   13,    0,   15,   15,   15,   15,   15,   15,    0,   15,
   15,   15,   15,   15,    0,   15,    0,    0,    0,   15,
   15,   15,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   13,   13,   13,   13,   13,   13,
   13,   13,   13,    0,   13,   13,   13,   13,    0,   13,
   13,   13,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   13,   13,   13,   57,    0,
    0,   33,    0,   34,    0,   13,   13,   13,   13,   13,
   13,    0,   13,   13,   13,   13,   13,  187,   13,    0,
    0,   90,   13,   13,   13,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   57,  318,    0,   33,  137,   34,    0,    0,    0,    0,
    0,    0,   79,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   90,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   26,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   57,  329,    0,   33,  137,   34,    0,    0,
    0,    0,    0,    0,   79,    0,    0,    0,    0,   26,
   26,    0,   26,    0,   26,   90,    0,    0,    0,   26,
   26,    0,   26,    0,   26,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   26,   26,   26,    0,    0,    0,    0,    0,    0,    0,
   26,   26,   26,   26,   26,   26,    0,   26,    0,   26,
   26,    0,    0,   26,    0,    0,    0,   26,   26,   26,
    0,  179,    0,    0,    0,   80,   79,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   81,   82,
    0,   83,   84,   85,   86,   87,   88,   89,   15,   16,
    0,   17,   57,  331,    0,   33,  137,   34,   19,   20,
    0,   21,    0,   22,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   90,    0,    0,    0,    0,
    0,   23,    0,    0,    0,    0,    0,    0,    0,   24,
   25,   26,   27,   28,   29,    0,   30,   80,   31,   32,
    0,    0,   58,    0,    0,    0,   36,   37,   38,    0,
   81,   82,    0,   83,   84,   85,   86,   87,   88,   89,
   15,   16,    0,   17,   57,  138,    0,   33,    0,   34,
   19,   20,    0,   21,    0,   22,   79,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   90,    0,    0,
    0,    0,    0,   23,    0,    0,    0,    0,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,   80,
   31,   32,    0,    0,   58,    0,    0,    0,   36,   37,
   38,    0,   81,   82,    0,   83,   84,   85,   86,   87,
   88,   89,   15,   16,    0,   17,   57,    0,    0,   33,
  137,   34,   19,   20,    0,   21,    0,   22,   79,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   90,
    0,    0,    0,    0,    0,   23,    0,    0,    0,    0,
    0,    0,    0,   24,   25,   26,   27,   28,   29,    0,
   30,    0,   31,   32,    0,    0,   58,    0,    0,    0,
   36,   37,   38,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   57,    0,    0,   33,    0,   34,    0,    0,   80,
   79,    0,    0,    0,    0,    0,    0,    0,    0,  237,
    0,    0,   81,   82,   90,   83,   84,   85,   86,   87,
   88,   89,   15,   16,    0,   17,    0,    0,    0,    0,
    0,    0,   19,   20,    0,   21,    0,   22,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   23,    0,    0,    0,    0,
    0,    0,    0,   24,   25,   26,   27,   28,   29,    0,
   30,   80,   31,   32,    0,   79,   58,    0,    0,    0,
   36,   37,   38,    0,   81,   82,    0,   83,   84,   85,
   86,   87,   88,   89,   15,   16,    0,   17,   57,  274,
    0,   33,    0,   34,   19,   20,    0,   21,    0,   22,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   90,    0,    0,    0,    0,    0,   23,    0,    0,
    0,    0,    0,    0,    0,   24,   25,   26,   27,   28,
   29,    0,   30,   80,   31,   32,    0,    0,   58,    0,
    0,    0,   36,   37,   38,    0,   81,   82,    0,   83,
   84,   85,   86,   87,   88,   89,   15,   16,    0,   17,
    0,    0,    0,    0,    0,    0,   19,   20,    0,   21,
    0,   22,   79,   57,  312,    0,   33,    0,   34,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   23,
    0,    0,    0,    0,    0,    0,   90,   24,   25,   26,
   27,   28,   29,    0,   30,    0,   31,   32,   80,    0,
   58,    0,    0,    0,   36,   37,   38,    0,    0,    0,
    0,   81,   82,    0,   83,   84,   85,   86,   87,   88,
   89,   15,   16,    0,   17,    0,    0,    0,    0,    0,
    0,   19,   20,    0,   21,    0,   22,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   79,    0,    0,
   57,  314,    0,   33,   23,   34,    0,    0,    0,    0,
    0,    0,   24,   25,   26,   27,   28,   29,    0,   30,
    0,   31,   32,   90,    0,   58,    0,    0,    0,   36,
   37,   38,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   80,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   81,   82,
    0,   83,   84,   85,   86,   87,   88,   89,   15,   16,
    0,   17,    0,    0,   79,    0,    0,    0,   19,   20,
    0,   21,    0,   22,    0,   57,  348,    0,   33,    0,
   34,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   23,    0,    0,    0,    0,    0,    0,   90,   24,
   25,   26,   27,   28,   29,    0,   30,    0,   31,   32,
    0,    0,   58,    0,    0,    0,   36,   37,   38,    0,
   80,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   81,   82,    0,   83,   84,   85,   86,
   87,   88,   89,   15,   16,    0,   17,    0,    0,    0,
    0,    0,    0,   19,   20,    0,   21,    0,   22,   79,
   57,  350,    0,   33,    0,   34,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   23,    0,    0,    0,
    0,    0,    0,   90,   24,   25,   26,   27,   28,   29,
    0,   30,    0,   31,   32,    0,    0,   58,    0,    0,
    0,   36,   37,   38,    0,    0,    0,   80,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   81,   82,    0,   83,   84,   85,   86,   87,   88,   89,
   15,   16,    0,   17,    0,    0,    0,    0,    0,    0,
   19,   20,    0,   21,   79,   22,   57,    0,    0,   33,
    0,   34,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   23,    0,  352,    0,    0,    0,   90,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,    0,   58,    0,    0,    0,   36,   37,
   38,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   80,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   81,   82,    0,   83,   84,
   85,   86,   87,   88,   89,   15,   16,    0,   17,    0,
   79,    0,    0,    0,    0,   19,   20,    0,   21,    0,
   22,    0,   57,  361,    0,   33,    0,   34,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   23,    0,
    0,    0,    0,    0,    0,   90,   24,   25,   26,   27,
   28,   29,    0,   30,    0,   31,   32,    0,    0,   58,
    0,    0,    0,   36,   37,   38,    0,   80,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   81,   82,    0,   83,   84,   85,   86,   87,   88,   89,
   15,   16,    0,   17,   57,    0,    0,   33,    0,   34,
   19,   20,    0,   21,    0,   22,   79,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   90,    0,    0,
    0,    0,    0,   23,    0,    0,    0,    0,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,    0,   58,    0,    0,    0,   36,   37,
   38,    0,    0,   80,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   81,   82,    0,   83,
   84,   85,   86,   87,   88,   89,   15,   16,   79,   17,
   93,    0,    0,   93,    0,   93,   19,   20,    0,   21,
    0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   93,    0,    0,    0,    0,    0,   23,
    0,    0,    0,    0,    0,    0,    0,   24,   25,   26,
   27,   28,   29,    0,   30,    0,   31,   32,    0,    0,
   58,    0,    0,    0,   36,   37,   38,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   80,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   81,   82,   93,   83,   84,   85,   86,   87,
   88,   89,   15,   16,    0,   17,   58,   58,    0,    0,
   58,    0,   19,   20,    0,   21,    0,   22,    0,    0,
    0,    0,    0,    0,   58,   58,    0,    0,    0,   58,
    0,    0,    0,    0,    0,   23,    0,    0,    0,    0,
    0,    0,    0,   24,   25,   26,   27,   28,   29,    0,
   30,   80,   31,   32,    0,    0,   58,    0,    0,    0,
   36,   37,   38,    0,   81,   82,    0,   83,   84,   85,
   86,   87,   88,   89,   15,   16,    0,   17,    0,    0,
    0,    0,   56,   56,   19,   20,   56,   21,    0,   22,
   58,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   56,   56,    0,    0,    0,   56,    0,   23,    0,    0,
    0,    0,    0,    0,    0,   24,   25,   26,   27,   28,
   29,    0,   30,    0,   31,   32,    0,    0,   58,    0,
    0,    0,   36,   37,   38,    0,    0,   93,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   93,   93,    0,   93,   93,   93,   93,   93,   93,   93,
   93,   93,    0,   93,    0,    0,   56,    0,    0,   57,
   93,   93,   33,   93,   34,   93,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   93,    0,    0,    0,    0,    0,    0,
    0,   93,   93,   93,   93,   93,   93,    0,   93,    0,
   93,   93,    0,    0,   93,    0,    0,    0,   93,   93,
   93,    0,    0,    0,    0,    0,    0,    0,    0,   58,
    0,    0,    0,   58,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   58,   58,   58,    0,
    0,   58,    0,   79,    0,   58,   58,   58,    0,   58,
   57,    0,    0,   33,    0,   34,   58,   58,    0,   58,
    0,   58,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
    0,    0,    0,    0,    0,    0,    0,   58,   58,   58,
   58,   58,   58,    0,   58,   56,   58,   58,    0,   56,
   58,    0,    0,    0,   58,   58,   58,    0,    0,    0,
    0,    0,   56,   56,   56,    0,    0,   56,    0,    0,
    0,   56,   56,   56,    0,   56,   57,    0,    0,   33,
    0,   34,   56,   56,   79,   56,    0,   56,    0,    0,
    0,    0,    0,    0,  328,    0,    0,    0,    0,  261,
    0,    0,    0,    0,    0,   56,    0,    0,    0,    0,
    0,    0,    0,   56,   56,   56,   56,   56,   56,    0,
   56,    0,   56,   56,    0,    0,   56,    0,    0,    0,
   56,   56,   56,    0,    0,    0,   80,    0,    0,   13,
    0,    0,   33,    0,   34,    0,   14,    0,    0,   81,
    0,    0,   83,   84,   85,   86,   87,   88,   89,   15,
   16,    0,   17,    0,    0,    0,    0,    0,    0,   19,
   20,    0,   21,    0,   22,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   23,    0,    0,    0,    0,    0,    0,    0,
   24,   25,   26,   27,   28,   29,    0,   30,    0,   31,
   32,   57,    0,   58,   33,    0,   34,   36,   37,   38,
    0,    0,   12,    0,    0,    0,    0,   80,    0,    0,
    0,    0,    0,    0,  261,   13,    0,    0,   33,    0,
   34,    0,   14,   83,   84,   85,   86,   87,   88,   89,
   15,   16,    0,   17,  187,    0,    0,    0,    0,    0,
   19,   20,    0,   21,    0,   22,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   23,    0,    0,    0,    0,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,  259,   58,    0,    0,    0,   36,   37,
   38,    0,    0,    0,    0,   13,   81,   82,   33,    0,
   34,    0,   14,    0,    0,  260,   15,   16,    0,   17,
    0,    0,    0,    0,    0,    0,   19,   20,    0,   21,
    0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   23,
   10,   11,    0,    0,    0,    0,    0,   24,   25,   26,
   27,   28,   29,    0,   30,    0,   31,   32,    0,    0,
   58,    0,    0,    0,   36,   37,   38,    0,    0,   15,
   16,    0,   17,    0,    0,    0,    0,    0,   18,   19,
   20,    0,   21,   13,   22,    0,   33,    0,   34,    0,
   14,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   23,    0,    0,    0,    0,    0,    0,    0,
   24,   25,   26,   27,   28,   29,    0,   30,  259,   31,
   32,    0,    0,   35,    0,    0,    0,   36,   37,   38,
    0,   81,   82,    0,    0,    0,    0,    0,  179,    0,
  260,   15,   16,    0,   17,    0,    0,    0,    0,    0,
   13,   19,   20,   33,   21,   34,   22,   14,    0,    0,
    0,    0,    0,    0,    0,   15,   16,    0,   17,    0,
    0,    0,    0,    0,   23,   19,   20,    0,   21,    0,
   22,    0,   24,   25,   26,   27,   28,   29,    0,   30,
    0,   31,   32,    0,    0,   58,    0,    0,   23,   36,
   37,   38,    0,    0,    0,    0,   24,   25,   26,   27,
   28,   29,    0,   30,    0,   31,   32,    0,  168,   35,
    0,    0,    0,   36,   37,   38,  295,    0,    0,   33,
    0,   34,    0,   14,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   15,   16,    0,   17,    0,
    0,    0,    0,    0,    0,   19,   20,    0,   21,    0,
   22,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   23,    0,
    0,    0,    0,    0,    0,    0,   24,   25,   26,   27,
   28,   29,    0,   30,    0,   31,   32,    0,    0,   35,
    0,    0,    0,   36,   37,   38,  170,    0,  295,    0,
    0,   33,    0,   34,    0,   14,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  295,   15,   16,   33,   17,   34,    0,   14,
    0,    0,    0,   19,   20,    0,   21,    0,   22,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   23,    0,    0,    0,
    0,    0,    0,  220,   24,   25,   26,   27,   28,   29,
    0,   30,    0,   31,   32,    0,    0,   35,    0,    0,
    0,   36,   37,   38,    0,    0,    0,    0,    0,   57,
   15,   16,   33,   17,   34,    0,   14,    0,    0,    0,
   19,   20,    0,   21,    0,   22,    0,    0,    0,    0,
    0,    0,    0,  209,    0,    0,   33,    0,   34,    0,
   14,    0,    0,   23,    0,    0,    0,    0,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,  168,
   31,   32,    0,    0,   35,    0,    0,    0,   36,   37,
   38,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  295,   15,   16,   33,   17,
   34,    0,   14,    0,    0,    0,   19,   20,    0,   21,
    0,   22,    0,    0,    0,    0,    0,    0,    0,   26,
    0,    0,   26,    0,   26,    0,   26,    0,    0,   23,
    0,    0,    0,    0,    0,    0,    0,   24,   25,   26,
   27,   28,   29,    0,   30,    0,   31,   32,    0,    0,
   35,  170,    0,    0,   36,   37,   38,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   57,    0,    0,   33,  220,   34,    0,   15,   16,
    0,   17,    0,    0,    0,    0,    0,    0,   19,   20,
    0,   21,    0,   22,    0,    0,    0,    0,    0,    0,
    0,    0,   15,   16,    0,   17,    0,    0,    0,    0,
    0,   23,   19,   20,    0,   21,    0,   22,    0,   24,
   25,   26,   27,   28,   29,    0,   30,    0,   31,   32,
    0,    0,   35,    0,    0,   23,   36,   37,   38,    0,
    0,    0,    0,   24,   25,   26,   27,   28,   29,    0,
   30,    0,   31,   32,    0,    0,   35,    0,    0,    0,
   36,   37,   38,    0,    0,    0,    0,    0,    0,   15,
   16,    0,   17,    0,    0,    0,    0,    0,    0,   19,
   20,    0,   21,    0,   22,    0,    0,    0,    0,    0,
    0,    0,    0,   15,   16,    0,   17,    0,    0,    0,
    0,    0,   23,   19,   20,    0,   21,    0,   22,    0,
   24,   25,   26,   27,   28,   29,    0,   30,    0,   31,
   32,    0,    0,   35,    0,    0,   23,   36,   37,   38,
    0,    0,    0,    0,   24,   25,   26,   27,   28,   29,
    0,   30,    0,   31,   32,   15,   16,   35,   17,    0,
    0,   36,   37,   38,    0,   19,   20,    0,   21,    0,
   22,    0,    0,    0,    0,    0,    0,    0,    0,   26,
   26,    0,   26,    0,    0,    0,    0,    0,   23,   26,
   26,    0,   26,    0,   26,    0,   24,   25,   26,   27,
   28,   29,    0,   30,    0,   31,   32,    0,    0,   35,
    0,    0,   26,   36,   37,   38,    0,    0,    0,    0,
   26,   26,   26,   26,   26,   26,    0,   26,    0,   26,
   26,   15,   16,   26,   17,    0,    0,   26,   26,   26,
    0,   19,   20,    0,   21,    0,   22,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   23,    0,    0,    0,    0,    0,
    0,    0,   24,   25,   26,   27,   28,   29,    0,    0,
    0,   31,   32,    0,    0,   58,    0,    0,    0,   36,
   37,   38,
};
const short yycheck[] =
	{                                      37,
    0,   37,  109,   59,   42,   43,   42,   45,   41,   47,
   91,   47,  100,    7,   80,  124,   10,   11,   41,   59,
   44,  109,   51,   52,   35,  111,   59,  194,  114,   59,
   44,  117,  118,  209,   59,  121,   59,   37,  124,  263,
   40,   41,   42,   43,   44,   45,   41,   47,   42,  314,
   41,   44,  263,   59,   66,   67,  123,    0,   58,   59,
  338,  314,   41,   63,   59,   44,    0,  133,   59,   93,
   41,   40,  101,   41,   41,  331,  210,   44,  334,  290,
  187,  359,   40,  348,  349,  249,   41,  251,   59,   44,
    0,   59,   40,   93,  106,  348,  349,    0,   41,  187,
   93,   44,  131,   40,   47,  210,  192,  331,  102,  123,
   44,  290,  198,   47,   93,   58,   59,  348,  349,  295,
  331,  132,  333,  123,  124,   59,   93,   37,   40,   40,
   91,   41,   42,   43,   44,   45,   41,   47,   41,   44,
   41,   44,   41,   44,   47,   44,   40,   40,   58,   59,
   93,  336,  331,   63,  333,   58,   59,  337,   41,   40,
  324,   44,  296,  229,  230,  299,  300,  301,  302,  287,
  347,  338,  306,  282,   41,  290,  285,   44,   41,  286,
  123,   44,   41,   93,    0,   44,  338,  351,  263,  123,
   93,  296,  359,  259,  299,  300,  301,  302,  286,  363,
  256,  306,   41,   41,   40,   44,   44,  263,  289,   41,
  344,   40,   44,  123,  124,  322,  331,  332,  333,   41,
  123,   37,   44,  263,   40,   41,   42,   43,   44,   45,
  263,   47,  244,  263,  322,  350,   58,   59,  263,  344,
  263,   63,   58,   59,   40,  352,  240,   63,  259,   47,
  261,  317,  263,  264,  265,  284,   41,  263,  269,   44,
  263,  261,  262,  263,  352,  263,  331,  267,  263,  289,
   91,  324,  263,   58,   59,  361,   44,   93,   63,   41,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  290,  291,  263,  293,   59,  263,   41,   59,  263,  299,
  300,  301,  124,  303,  333,  305,  263,  123,  124,  347,
   40,  347,  263,   43,  314,   45,  310,  328,  261,  262,
  263,   41,   41,  323,  342,  290,  289,  261,  262,  263,
   40,  331,  332,  333,  334,  335,  336,   41,  338,  124,
  340,  341,  287,   41,  344,  290,   41,  347,  348,  349,
  350,  261,  262,  263,   41,    0,  299,  267,  261,  262,
  263,    0,  124,   59,   59,  299,  331,  332,  333,  123,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   41,  293,  181,  350,  331,  332,  333,  299,
  300,  301,   44,  303,  102,  305,  299,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  314,  350,   -1,   40,   41,   -1,
   43,   -1,   45,  323,   47,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,  124,
  340,  341,   -1,   -1,  344,   -1,   -1,  347,  348,  349,
  350,  263,   -1,   41,   -1,  261,  262,  263,   -1,   -1,
   -1,  267,   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,
  282,   59,   -1,  285,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,  290,  291,   -1,  293,  263,   -1,
   -1,   53,   54,  299,  300,  301,   -1,  303,   -1,  305,
   -1,   -1,   -1,   -1,   -1,  280,  281,  282,  314,    0,
  285,  263,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  282,   -1,  338,  285,  340,  341,  124,   -1,  344,   -1,
   -1,  347,  348,  349,  350,   -1,   37,  267,   -1,   40,
   41,   42,   43,   44,   45,   -1,   47,   -1,   -1,   -1,
  280,   -1,   -1,  338,   -1,   -1,   -1,   58,   59,  289,
  290,  291,   63,  293,   -1,   -1,   -1,   -1,  263,   -1,
  300,  301,   -1,  303,   -1,  305,  148,  149,   -1,   41,
   -1,   -1,   44,  155,  156,   -1,   -1,  282,   -1,    0,
  285,   -1,   93,  323,   -1,   -1,   58,   59,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,  123,  124,   -1,   -1,   37,   -1,   -1,   40,
   41,   42,   43,   44,   45,   -1,   47,   -1,   -1,  211,
   -1,   -1,   -1,   -1,  216,  217,   -1,   58,   59,  259,
   -1,  261,   63,  263,  264,  265,  228,  290,  291,  269,
  293,   -1,  124,   -1,   -1,  263,   -1,  300,  301,   -1,
  303,   -1,  305,   -1,   -1,   41,   -1,   -1,   44,   -1,
   -1,   -1,   93,    0,  282,   -1,  258,  285,   -1,   -1,
  323,   -1,   58,   59,   -1,   -1,   -1,   63,  331,  332,
  333,  334,  335,  336,   -1,  338,   -1,  340,  341,  281,
  282,  344,  123,  124,   -1,  348,  349,  350,  328,   -1,
   37,   -1,   -1,   40,   41,   42,   43,   44,   45,   -1,
   47,   -1,   -1,   -1,   -1,  307,  308,   -1,   -1,   -1,
   -1,   58,   59,   -1,   -1,   -1,   63,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  327,   -1,   -1,  124,   -1,
  261,  262,  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,  280,
  281,  282,  283,  284,  285,  286,   -1,  288,  289,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,
  301,  263,  303,   -1,  305,   -1,  123,  124,   41,   -1,
   -1,   44,   -1,  314,   -1,   -1,   -1,   -1,   -1,   -1,
  282,   -1,  323,  285,   -1,   58,   59,   -1,   -1,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,   -1,   -1,  344,   -1,   -1,  347,  348,  349,  350,
  261,  262,  263,   -1,   -1,    0,  267,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  280,
  281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,
  301,  124,  303,   -1,  305,   -1,   41,  263,   -1,   44,
   -1,   -1,   47,  314,   -1,   40,   -1,   -1,   43,   -1,
   45,   -1,  323,   58,   59,  281,  282,   -1,   63,  285,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,
   -1,   -1,   -1,   -1,  261,  262,  263,   -1,   93,   -1,
  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  280,  281,  282,  283,  284,  285,  286,
  287,  288,  289,  290,  291,   -1,  293,   -1,  123,   89,
   -1,   -1,  299,  300,  301,   -1,  303,   -1,  305,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  314,    0,   -1,
   -1,   -1,  112,   -1,   -1,   -1,  323,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,
   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,
  263,  348,  349,  350,   -1,   37,   -1,   -1,   40,   41,
   42,   43,   44,   45,   -1,   47,    0,   -1,   -1,  282,
   -1,   41,  285,   -1,   44,   -1,   58,   59,   -1,   -1,
   -1,   63,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
   -1,   -1,   -1,   -1,   41,   -1,   -1,   44,   -1,   -1,
   -1,   -1,   -1,   -1,  194,   -1,   -1,   41,    0,   -1,
   44,   93,   59,   47,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   58,   59,   -1,   -1,   -1,   63,
   -1,   -1,  222,   -1,   -1,   -1,  261,  262,  263,   -1,
   -1,  123,  124,   -1,  234,   37,   -1,   -1,   40,   41,
   42,   43,   44,   45,  124,   47,  281,   -1,   -1,   93,
   -1,   -1,   -1,   -1,   -1,   -1,   58,   59,   -1,   -1,
  260,   63,   -1,   -1,  299,  290,  291,  124,  293,   -1,
   -1,   -1,   -1,   -1,   -1,  300,  301,   -1,  303,  123,
  305,   -1,   -1,   -1,   -1,   -1,   -1,  287,   -1,  314,
   -1,   93,    0,   -1,   -1,   -1,   -1,   -1,  323,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,
  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,
   -1,  123,  124,  348,  349,  350,  326,   -1,   -1,   37,
   -1,   -1,   40,   41,   42,   43,   44,   45,   -1,   47,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   58,   59,   -1,   -1,   -1,   63,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  261,
  262,  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  263,   -1,   93,   -1,   -1,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,  282,   -1,   -1,  285,  263,  299,  300,  301,
   -1,  303,   -1,  305,   -1,  123,  124,  261,  262,  263,
   -1,   -1,  314,   -1,   -1,  282,   -1,   -1,  285,   -1,
   -1,  323,   -1,   -1,   -1,   -1,  280,  281,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,  299,  348,  349,  350,  261,
  262,  263,  126,   -1,  128,  267,   -1,   -1,   -1,   -1,
   -1,  135,  136,   -1,   -1,   -1,   -1,   -1,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   -1,   -1,  338,   -1,   -1,  299,  300,  301,
   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  314,   -1,   40,   -1,   -1,   43,  182,   45,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,  205,  344,  207,  208,   -1,  348,  349,  350,   -1,
   -1,   -1,   -1,  261,  262,  263,   -1,   -1,   -1,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,  253,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  314,    0,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   37,   -1,   -1,   40,   41,   42,
   43,   44,   45,   -1,   47,    0,  320,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   58,   59,   -1,   -1,   -1,
   63,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  347,   -1,   -1,   -1,   -1,   -1,  353,
   -1,   -1,   -1,   -1,   -1,   -1,   41,    0,  362,   44,
   93,   -1,   47,  367,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   58,   59,   -1,   -1,   -1,   63,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  123,  124,   -1,   -1,   37,   -1,   -1,   40,   41,   42,
   43,   44,   45,   -1,   47,   -1,   -1,   -1,   93,   -1,
   -1,   -1,   -1,   -1,   -1,   58,   59,   -1,   -1,   -1,
   63,   -1,   -1,   -1,  290,  291,   -1,  293,   -1,   -1,
   -1,   -1,   -1,   -1,  300,  301,   -1,  303,  123,  305,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   93,    0,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,
  123,  124,  348,  349,  350,   -1,   -1,   -1,   37,   -1,
   -1,   40,   41,   42,   43,   44,   45,   -1,   47,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   58,
   59,   -1,   -1,   -1,   63,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  261,  262,
  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   93,   -1,   -1,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,  290,  291,   -1,
  293,   -1,   -1,   -1,   -1,   -1,  299,  300,  301,   -1,
  303,   -1,  305,   -1,  123,  124,  261,  262,  263,   -1,
   40,  314,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,
  323,   -1,   -1,   -1,   -1,  280,  281,   -1,  331,  332,
  333,  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,
   -1,  344,   -1,   -1,  299,  348,  349,  350,  261,  262,
  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,  290,  291,   -1,
  293,   -1,   -1,  338,   -1,   -1,  299,  300,  301,   -1,
  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  314,   -1,   40,   41,   -1,   43,   44,   45,   -1,
  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,
  333,  334,  335,  336,   -1,  338,   63,  340,  341,   -1,
   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,
   -1,   -1,  261,  262,  263,   -1,   -1,   -1,  267,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,
  299,  300,  301,   -1,  303,   -1,  305,  124,   -1,   -1,
   -1,   -1,    0,   -1,   -1,  314,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
   -1,  340,  341,   -1,   -1,  344,  256,   -1,  347,   37,
   -1,  350,   40,   41,   42,   43,   44,   45,   -1,   47,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   58,   59,   -1,   -1,   -1,   63,   -1,   -1,   -1,   -1,
  290,  291,   -1,  293,   -1,  295,   -1,   -1,   -1,   -1,
  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,    0,   -1,   -1,   93,   -1,   -1,   -1,   -1,
   -1,  321,  322,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,  123,  124,   -1,  348,  349,
  350,   -1,   40,   41,   -1,   43,   44,   45,   -1,   -1,
  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   58,   59,   -1,  280,  281,   63,  283,  284,  285,  286,
  287,  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,
   -1,   -1,   -1,  300,  301,   -1,  303,   -1,  305,   -1,
   -1,   -1,   -1,   -1,   -1,   93,    0,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,
   -1,  338,   -1,  340,  341,  123,  124,  344,   -1,   -1,
   -1,  348,  349,  350,   -1,   -1,   40,   41,   -1,   43,
   44,   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   58,   59,   -1,   -1,   -1,   63,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  261,  262,  263,   -1,   -1,   -1,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,
   -1,   -1,  280,  281,   -1,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   -1,  123,
  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,  347,
   -1,   -1,  350,  261,  262,  263,   -1,   -1,    0,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   40,   41,
   -1,   -1,   44,   -1,   -1,   -1,  314,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   58,   59,   -1,   -1,
   -1,   63,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,  261,  262,  263,
   -1,   93,    0,  267,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,  290,  291,   -1,  293,
   -1,  123,  124,   -1,   -1,  299,  300,  301,   -1,  303,
   -1,  305,   40,   41,   -1,   -1,   44,   -1,   -1,    0,
  314,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,
   58,   59,   -1,   -1,   -1,   63,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   41,   -1,    0,   44,   -1,   93,   47,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   58,   59,   -1,
   -1,   -1,   63,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  123,  124,   -1,   -1,   -1,
   -1,   -1,   40,   41,   -1,   -1,   44,   -1,   -1,   -1,
   -1,   -1,   93,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   58,   59,   -1,   -1,   -1,   63,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  261,
  262,  263,  123,   -1,   -1,  267,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,  301,
   -1,  303,   -1,  305,   -1,  123,  124,   -1,   -1,   -1,
   -1,   -1,  314,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,
   -1,   -1,   -1,  261,  262,  263,   -1,   -1,   -1,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   -1,   -1,
  261,  262,  263,   -1,   -1,   -1,  314,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,  280,
  281,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,  299,   -1,
  348,  349,  350,  261,  262,  263,   -1,   -1,    0,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,  338,   -1,   -1,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   40,   41,
   -1,   -1,   44,   -1,   -1,   -1,  314,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   58,   59,   -1,   -1,
   -1,   63,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,   -1,    0,   -1,
   -1,   93,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  123,  124,   -1,   -1,   -1,   -1,   -1,   40,   41,
   -1,   -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   58,   59,   -1,   -1,
   -1,   63,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   93,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  123,  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   40,   41,   -1,   -1,   44,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   58,   59,   -1,   -1,   -1,   63,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  261,
  262,  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,  301,
   -1,  303,   -1,  305,   -1,  123,  124,   -1,   -1,   -1,
   40,   41,  314,   43,   -1,   45,   -1,   47,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,  261,
  262,  263,   -1,   -1,    0,  267,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,
   -1,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,  301,
   -1,  303,   -1,  305,   40,   -1,   -1,   43,   -1,   45,
   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   59,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,
   -1,   -1,   -1,  261,  262,  263,   -1,   -1,    0,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,   -1,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   40,   -1,
   -1,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,
    0,   -1,   -1,   -1,   -1,  323,   -1,   59,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   40,   -1,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,
   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,   -1,
  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   40,  323,   -1,   43,   -1,   45,   -1,   47,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,  261,  262,  263,  348,  349,
  350,   -1,   -1,  123,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  290,  291,   -1,  293,   -1,   -1,
   -1,   -1,   -1,  299,  300,  301,   -1,  303,   -1,  305,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  123,   -1,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,
   -1,   -1,  348,  349,  350,   -1,   -1,   -1,   -1,  261,
  262,  263,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  290,  291,
   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,  301,
   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  261,  262,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
  290,  291,  344,  293,   -1,   -1,  348,  349,  350,  299,
  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  261,  262,   -1,   -1,   -1,   -1,    0,
   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,  290,  291,  344,  293,   -1,   -1,  348,  349,
  350,  299,  300,  301,   -1,  303,   37,  305,   -1,   40,
   41,   42,   43,   44,   45,   -1,   47,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   58,   59,   -1,
   -1,   -1,   63,  331,  332,  333,  334,  335,  336,    0,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   93,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   40,
   41,   -1,   43,   44,   45,   -1,   47,   -1,   -1,   -1,
   -1,   -1,  123,  124,   -1,   -1,   -1,   58,   59,   -1,
   -1,   -1,   63,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   41,   -1,   -1,   44,   -1,   -1,   47,
   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,
   58,   59,   93,    0,   -1,   63,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  123,  124,   41,   93,    0,   44,   -1,   -1,
   47,   -1,   -1,   -1,   41,   -1,   -1,   44,   -1,   -1,
   47,   58,   59,   -1,   -1,   -1,   63,   -1,   -1,   -1,
   -1,   58,   59,   -1,   -1,  123,   63,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   41,   -1,   -1,
   44,   -1,   -1,   47,   -1,   -1,   93,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   58,   59,   93,   -1,   -1,   63,
  261,  262,  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,   -1,  280,
  281,  282,  283,  284,  285,  286,  123,  288,  289,   93,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,
  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  314,   -1,   -1,   -1,   -1,   -1,  123,
   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  261,  262,  263,  334,  335,  336,  267,  338,   -1,  340,
  341,   -1,   -1,  344,   -1,   -1,  347,  348,  349,  280,
  281,   -1,  283,  284,  285,  286,  287,  288,  289,   -1,
  291,   -1,  293,  261,  262,  263,   -1,   -1,  299,  300,
  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  299,   -1,  334,  335,  336,   -1,  338,   -1,  340,
  341,   -1,   -1,  344,  261,  262,  263,  348,  349,   -1,
   -1,   -1,   -1,   -1,  261,  262,  263,   -1,   -1,   17,
   -1,   -1,   -1,  280,  281,   -1,   -1,   -1,   -1,   -1,
  338,   -1,   30,  280,  281,   33,   34,   35,   36,   37,
   38,   39,  299,   -1,   -1,   -1,   -1,  261,  262,  263,
   -1,   -1,  299,   -1,   -1,   53,   -1,   -1,   -1,   -1,
   58,   -1,   -1,   -1,   -1,   -1,  280,  281,   -1,   -1,
   68,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  338,   -1,   -1,   -1,  299,   -1,   -1,   -1,   -1,
   -1,  338,   -1,   -1,   -1,   -1,   94,   95,   96,   97,
   98,   99,   -1,   -1,   -1,   -1,   -1,   -1,   40,   41,
   -1,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  338,  123,   -1,   59,   -1,   -1,
   -1,   -1,   -1,   -1,  132,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  144,   -1,  146,   -1,
  148,  149,   -1,   -1,   -1,   -1,  154,  155,  156,  157,
  158,   -1,  160,  161,  162,  163,  164,  165,   -1,  167,
   -1,  169,   -1,  171,  172,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  184,   -1,   -1,   -1,
   -1,  123,   -1,  125,  192,   -1,   -1,   -1,   -1,   -1,
  198,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  210,   -1,   -1,   -1,   -1,   -1,  216,   -1,
   -1,   -1,   -1,  221,   -1,  223,   -1,   -1,   40,   -1,
   -1,   43,   -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  249,   -1,  251,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  259,   -1,  261,   -1,  263,  264,  265,  266,  267,
  268,  269,   -1,   -1,   -1,  273,   -1,   -1,   -1,  277,
   -1,  279,   -1,   -1,  282,  283,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  296,   17,
   -1,  299,  300,  301,  302,   -1,   -1,   -1,  306,  307,
  308,   -1,   -1,   -1,   -1,   33,   34,   35,   -1,   -1,
   38,   39,   -1,   -1,  256,   -1,   -1,   -1,   -1,   -1,
  328,   -1,  330,   -1,  332,   53,  334,   -1,  336,   -1,
   58,  339,   -1,   -1,   -1,   -1,  344,   -1,   -1,   -1,
   68,   -1,   -1,   -1,   -1,   -1,  354,   -1,  290,  291,
  292,  293,  294,  295,  296,  297,  298,   -1,  300,  301,
  302,  303,   -1,  305,  306,  307,   94,   95,   96,   97,
   98,   99,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  321,
  322,  323,  324,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,  123,  338,  339,  340,  341,
  342,   -1,  344,   -1,  132,   -1,  348,  349,  350,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  144,   -1,  146,   -1,
  148,  149,   -1,   -1,   -1,   -1,  154,  155,  156,   -1,
  158,   -1,  160,  161,  162,  163,  164,  165,   -1,  167,
   -1,  169,   -1,  171,  172,  267,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  184,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  192,   -1,   -1,  289,  290,  291,
  198,  293,   -1,   -1,   -1,   -1,   -1,   -1,  300,  301,
   -1,  303,  210,  305,   -1,   -1,   -1,   -1,  216,   -1,
   -1,   -1,   -1,  221,   -1,  223,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,    0,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,  249,  344,  251,   -1,   -1,  348,  349,  350,   -1,
   -1,  259,   -1,  261,   -1,  263,  264,  265,  266,  267,
  268,  269,   -1,   -1,   -1,  273,   -1,   41,   -1,  277,
   44,  279,   -1,   47,  282,  283,   -1,   -1,   -1,   -1,
    7,   -1,   -1,   -1,   58,   59,   13,   -1,  296,   63,
   -1,  299,  300,  301,  302,   -1,   -1,   -1,  306,  307,
  308,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,
  328,   -1,   -1,   -1,   -1,   -1,  334,   -1,  336,   56,
   57,  339,   -1,   -1,   -1,   -1,  344,   64,   65,   66,
   67,   -1,   -1,   70,   71,   -1,  354,   -1,   -1,  123,
   -1,   -1,   -1,   80,   -1,   -1,   83,   84,   85,   86,
   87,   88,   -1,   90,   -1,   92,   93,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  102,  103,   -1,   37,  106,
   -1,   40,   -1,   42,   43,   -1,   45,  114,   47,   -1,
   -1,   -1,   -1,   -1,  121,   -1,   -1,   -1,   -1,   -1,
   59,   -1,   -1,   -1,   63,   -1,  133,   -1,   -1,   -1,
   -1,   -1,  139,   -1,  141,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  181,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  195,   -1,
   -1,   37,   -1,  200,   40,   41,   42,   43,   44,   45,
   -1,   47,  209,   -1,   -1,   -1,   -1,  261,  262,  263,
   -1,   -1,   58,   59,   -1,   -1,   -1,   63,   -1,  226,
   -1,   -1,  229,  230,   -1,   -1,  280,  281,  235,   -1,
  237,   -1,   -1,   -1,   -1,   -1,   -1,  244,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  299,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   43,   -1,
   45,   -1,   47,  270,  271,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,  124,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  295,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  317,   -1,  319,   -1,   -1,   -1,  323,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  267,   -1,
   -1,   -1,   -1,   -1,  341,   -1,   -1,   -1,  123,   -1,
  125,  280,  281,   -1,  283,  284,  285,  286,  287,  288,
   -1,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,
   -1,  300,  301,   -1,  303,   -1,  305,   40,   -1,   -1,
   43,   -1,   45,   -1,   47,  314,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  323,   -1,   59,   -1,   -1,   -1,
   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
   -1,  340,  341,   -1,   -1,  344,   -1,   -1,  347,  348,
  349,  350,   -1,   -1,   -1,   -1,   -1,  263,   -1,   -1,
   -1,  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  280,  281,  282,   -1,   -1,  285,
   -1,   -1,   -1,  289,  290,  291,   -1,  293,   -1,   -1,
  123,   -1,  125,   -1,  300,  301,   -1,  303,   -1,  305,
   -1,   -1,   40,   -1,   -1,   43,   -1,   45,   -1,   47,
   -1,  256,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,
   -1,   59,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,
   -1,  347,   -1,   -1,  350,  290,  291,  292,  293,  294,
  295,  296,  297,  298,   -1,  300,  301,  302,  303,   -1,
  305,  306,  307,   40,   -1,   -1,   43,   -1,   45,   -1,
   47,   -1,   -1,   -1,   -1,   -1,  321,  322,  323,  324,
   -1,   -1,   59,   -1,   -1,  123,  331,  332,  333,  334,
  335,  336,   -1,  338,  339,  340,  341,  342,   -1,  344,
   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  256,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   43,
   -1,   45,   -1,   47,   -1,   -1,  123,   -1,  125,   -1,
   -1,   -1,   -1,   -1,   -1,   59,   -1,  290,  291,  292,
  293,  294,  295,  296,  297,  298,   -1,  300,  301,  302,
  303,   -1,  305,  306,  307,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  321,  322,
  323,  324,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,
  333,  334,  335,  336,   -1,  338,  339,  340,  341,  342,
   -1,  344,   -1,   -1,   -1,  348,  349,  350,  256,  123,
   -1,  125,   -1,   -1,   -1,  263,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  290,  291,  292,  293,  294,  295,  296,  297,
  298,   -1,  300,  301,  302,  303,   -1,  305,  306,  307,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,
   -1,   -1,   -1,  321,  322,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,  339,  340,  341,  342,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,  290,  291,  292,  293,  294,  295,  296,
  297,  298,   -1,  300,  301,  302,  303,   -1,  305,  306,
  307,   40,   -1,   -1,   43,   -1,   45,   -1,   47,   -1,
   -1,   -1,   -1,   -1,  321,  322,  323,  324,   -1,   -1,
   59,   -1,  256,   -1,  331,  332,  333,  334,  335,  336,
   -1,  338,  339,  340,  341,  342,   -1,  344,   -1,   -1,
   -1,  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  290,  291,  292,  293,
  294,  295,  296,  297,  298,   -1,  300,  301,  302,  303,
   -1,  305,  306,  307,   40,   -1,   -1,   43,   -1,   45,
   -1,   47,   -1,   -1,  123,   -1,  125,  321,  322,  323,
   -1,   -1,   -1,   59,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,  339,  340,  341,  342,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   43,   -1,
   45,   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   59,   -1,   -1,  123,   -1,  125,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   43,
   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   59,   -1,  256,  123,   -1,
  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  290,  291,  292,  293,  294,  295,  296,  297,  298,
   -1,  300,  301,  302,  303,   -1,  305,  306,  307,   -1,
   40,   -1,   -1,   43,   -1,   45,   -1,   47,   -1,  123,
   -1,  125,  321,  322,  323,   -1,   -1,   -1,   -1,   59,
  256,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
  339,  340,  341,  342,   -1,  344,   -1,   -1,   -1,  348,
  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  290,  291,  292,  293,  294,  295,
  296,  297,  298,   -1,  300,  301,  302,  303,   -1,  305,
  306,  307,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,
   43,  256,   45,  123,   47,  321,  322,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,  339,  340,  341,  342,   -1,  344,   -1,
   -1,   -1,  348,  349,  350,  290,  291,  292,  293,  294,
  295,  296,  297,  298,   -1,  300,  301,  302,  303,   -1,
  305,  306,  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  256,   -1,   -1,   -1,  321,  322,  323,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,
  335,  336,   -1,  338,  339,  340,  341,  342,   -1,  344,
   -1,   -1,   -1,  348,  349,  350,  290,  291,  292,  293,
  294,  295,  296,  297,  298,   -1,  300,  301,  302,  303,
   -1,  305,  306,  307,   40,   -1,   -1,   43,   -1,   45,
   -1,   47,   -1,   -1,   -1,   -1,   -1,  321,  322,  323,
   -1,   -1,   -1,   59,   -1,   -1,  256,  331,  332,  333,
  334,  335,  336,  263,  338,  339,  340,  341,  342,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  290,  291,  292,  293,  294,  295,  296,  297,  298,   -1,
  300,  301,  302,  303,   -1,  305,  306,  307,   40,   -1,
   -1,   43,   -1,   45,   -1,   47,   -1,  123,   -1,  125,
   -1,  321,  322,  323,   -1,   -1,   -1,   59,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,  339,
  340,  341,  342,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  290,  291,   40,
  293,   -1,   43,   -1,   45,   -1,   47,  300,  301,   -1,
  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   59,   -1,
   -1,  123,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,
  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,
  333,  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,
   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,
   40,   -1,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
  256,   -1,  123,   -1,  125,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  290,  291,  292,  293,  294,  295,
  296,  297,  298,   -1,  300,  301,  302,  303,   -1,  305,
  306,  307,   -1,   40,   -1,   -1,   43,   -1,   45,   -1,
   47,   -1,   -1,  123,   -1,  321,  322,  323,   -1,   -1,
   -1,   -1,   59,   -1,  256,  331,  332,  333,  334,  335,
  336,   -1,  338,  339,  340,  341,  342,   -1,  344,   -1,
   -1,   -1,  348,  349,  350,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  290,  291,
  292,  293,  294,  295,  296,  297,  298,   -1,  300,  301,
  302,  303,   -1,  305,  306,  307,   40,   -1,   -1,   43,
   -1,   45,   -1,   47,   -1,  256,  123,   -1,   -1,  321,
  322,  323,   -1,   -1,   -1,   59,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,  339,  340,  341,
  342,   -1,  344,   -1,   -1,   -1,  348,  349,  350,  290,
  291,  292,  293,  294,  295,  296,  297,  298,   -1,  300,
  301,  302,  303,   -1,  305,  306,  307,   40,   -1,   -1,
   43,   -1,   45,   -1,   47,   -1,  256,   -1,   -1,   -1,
  321,  322,  323,   -1,   -1,   -1,   59,   -1,   -1,  123,
  331,  332,  333,  334,  335,  336,   -1,  338,  339,  340,
  341,  342,   -1,  344,   -1,   -1,   -1,  348,  349,  350,
  290,  291,  292,  293,  294,  295,  296,  297,  298,   -1,
  300,  301,  302,  303,   -1,  305,  306,  307,   40,   -1,
   -1,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,
   -1,  321,  322,  323,   -1,   -1,   -1,   59,   -1,  256,
  123,  331,  332,  333,  334,  335,  336,   -1,  338,  339,
  340,  341,  342,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  290,  291,  292,  293,  294,  295,  296,
  297,  298,   -1,  300,  301,  302,  303,   -1,  305,  306,
  307,   40,   -1,   -1,   43,   -1,   45,   -1,   47,   -1,
   -1,  123,   -1,   -1,  321,  322,  323,   -1,   -1,   -1,
   59,   -1,  256,   -1,  331,  332,  333,  334,  335,  336,
   -1,  338,  339,  340,  341,  342,   -1,  344,   -1,   -1,
   -1,  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  290,  291,  292,  293,
  294,  295,  296,  297,  298,   -1,  300,  301,  302,  303,
   -1,  305,  306,  307,   40,   -1,   -1,   43,   -1,   45,
   -1,   47,   -1,  256,  123,   -1,   -1,  321,  322,  323,
   -1,   -1,   -1,   59,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,  339,  340,  341,  342,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,  290,  291,  292,
  293,  294,  295,  296,  297,  298,   -1,  300,  301,  302,
  303,   -1,  305,  306,  307,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  256,   -1,   -1,   -1,  321,  322,
  323,   -1,   -1,   -1,   -1,   -1,   -1,  123,  331,  332,
  333,  334,  335,  336,   -1,  338,  339,  340,  341,  342,
   -1,  344,   -1,   -1,   -1,  348,  349,  350,  290,  291,
  292,  293,  294,  295,  296,  297,  298,   -1,  300,  301,
  302,  303,   -1,  305,  306,  307,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  321,
  322,  323,   -1,   -1,   -1,   -1,   -1,  256,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,  339,  340,  341,
  342,   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  290,  291,  292,  293,  294,  295,  296,  297,  298,
   -1,  300,  301,  302,  303,   -1,  305,  306,  307,   40,
   41,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
   -1,   -1,  321,  322,  323,   -1,   -1,   -1,   -1,   -1,
  256,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
  339,  340,  341,  342,   -1,  344,   -1,   -1,   -1,  348,
  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  290,  291,  292,  293,  294,  295,
  296,  297,  298,   -1,  300,  301,  302,  303,   -1,  305,
  306,  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  321,  322,  323,   40,   -1,
   -1,   43,   -1,   45,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,  339,  340,  341,  342,   59,  344,   -1,
   -1,   63,  348,  349,  350,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   40,   41,   -1,   43,   44,   45,   -1,   -1,   -1,   -1,
   -1,   -1,  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   63,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   40,   41,   -1,   43,   44,   45,   -1,   -1,
   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,  290,
  291,   -1,  293,   -1,  295,   63,   -1,   -1,   -1,  300,
  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  321,  322,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,
   -1,  263,   -1,   -1,   -1,  267,  124,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,
   -1,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   40,   41,   -1,   43,   44,   45,  300,  301,
   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   63,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,  267,  340,  341,
   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,
  280,  281,   -1,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   -1,  293,   40,   41,   -1,   43,   -1,   45,
  300,  301,   -1,  303,   -1,  305,  124,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   63,   -1,   -1,
   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,  267,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,  280,  281,   -1,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   40,   -1,   -1,   43,
   44,   45,  300,  301,   -1,  303,   -1,  305,  124,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   63,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   40,   -1,   -1,   43,   -1,   45,   -1,   -1,  267,
  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   58,
   -1,   -1,  280,  281,   63,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,   -1,  300,  301,   -1,  303,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,  267,  340,  341,   -1,  124,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,  280,  281,   -1,  283,  284,  285,
  286,  287,  288,  289,  290,  291,   -1,  293,   40,   41,
   -1,   43,   -1,   45,  300,  301,   -1,  303,   -1,  305,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   63,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,  267,  340,  341,   -1,   -1,  344,   -1,
   -1,   -1,  348,  349,  350,   -1,  280,  281,   -1,  283,
  284,  285,  286,  287,  288,  289,  290,  291,   -1,  293,
   -1,   -1,   -1,   -1,   -1,   -1,  300,  301,   -1,  303,
   -1,  305,  124,   40,   41,   -1,   43,   -1,   45,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,
   -1,   -1,   -1,   -1,   -1,   -1,   63,  331,  332,  333,
  334,  335,  336,   -1,  338,   -1,  340,  341,  267,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,  280,  281,   -1,  283,  284,  285,  286,  287,  288,
  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,
   -1,  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,
   40,   41,   -1,   43,  323,   45,   -1,   -1,   -1,   -1,
   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
   -1,  340,  341,   63,   -1,  344,   -1,   -1,   -1,  348,
  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,
   -1,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   -1,   -1,  124,   -1,   -1,   -1,  300,  301,
   -1,  303,   -1,  305,   -1,   40,   41,   -1,   43,   -1,
   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   63,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,
  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  280,  281,   -1,  283,  284,  285,  286,
  287,  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,
   -1,   -1,   -1,  300,  301,   -1,  303,   -1,  305,  124,
   40,   41,   -1,   43,   -1,   45,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,
   -1,   -1,   -1,   63,  331,  332,  333,  334,  335,  336,
   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,
   -1,  348,  349,  350,   -1,   -1,   -1,  267,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  280,  281,   -1,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,   -1,
  300,  301,   -1,  303,  124,  305,   40,   -1,   -1,   43,
   -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  323,   -1,   59,   -1,   -1,   -1,   63,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  280,  281,   -1,  283,  284,
  285,  286,  287,  288,  289,  290,  291,   -1,  293,   -1,
  124,   -1,   -1,   -1,   -1,  300,  301,   -1,  303,   -1,
  305,   -1,   40,   41,   -1,   43,   -1,   45,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,   -1,
   -1,   -1,   -1,   -1,   -1,   63,  331,  332,  333,  334,
  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,
   -1,   -1,   -1,  348,  349,  350,   -1,  267,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  280,  281,   -1,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   -1,  293,   40,   -1,   -1,   43,   -1,   45,
  300,  301,   -1,  303,   -1,  305,  124,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   63,   -1,   -1,
   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,  267,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,   -1,  283,
  284,  285,  286,  287,  288,  289,  290,  291,  124,  293,
   40,   -1,   -1,   43,   -1,   45,  300,  301,   -1,  303,
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   63,   -1,   -1,   -1,   -1,   -1,  323,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,  124,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   40,   41,   -1,   -1,
   44,   -1,  300,  301,   -1,  303,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   58,   59,   -1,   -1,   -1,   63,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,  267,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,  280,  281,   -1,  283,  284,  285,
  286,  287,  288,  289,  290,  291,   -1,  293,   -1,   -1,
   -1,   -1,   40,   41,  300,  301,   44,  303,   -1,  305,
  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   58,   59,   -1,   -1,   -1,   63,   -1,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,
   -1,   -1,  348,  349,  350,   -1,   -1,  267,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  280,  281,   -1,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   -1,  293,   -1,   -1,  124,   -1,   -1,   40,
  300,  301,   43,  303,   45,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  263,
   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,  282,   -1,
   -1,  285,   -1,  124,   -1,  289,  290,  291,   -1,  293,
   40,   -1,   -1,   43,   -1,   45,  300,  301,   -1,  303,
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,  263,  340,  341,   -1,  267,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,   -1,  280,  281,  282,   -1,   -1,  285,   -1,   -1,
   -1,  289,  290,  291,   -1,  293,   40,   -1,   -1,   43,
   -1,   45,  300,  301,  124,  303,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   58,   -1,   -1,   -1,   -1,   63,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,  267,   -1,   -1,   40,
   -1,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,  280,
   -1,   -1,  283,  284,  285,  286,  287,  288,  289,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,   -1,  300,
  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,   40,   -1,  344,   43,   -1,   45,  348,  349,  350,
   -1,   -1,  123,   -1,   -1,   -1,   -1,  267,   -1,   -1,
   -1,   -1,   -1,   -1,   63,   40,   -1,   -1,   43,   -1,
   45,   -1,   47,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   -1,  293,   59,   -1,   -1,   -1,   -1,   -1,
  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,  267,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   40,  280,  281,   43,   -1,
   45,   -1,   47,   -1,   -1,  289,  290,  291,   -1,  293,
   -1,   -1,   -1,   -1,   -1,   -1,  300,  301,   -1,  303,
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,
  261,  262,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,
  301,   -1,  303,   40,  305,   -1,   43,   -1,   45,   -1,
   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,  267,  340,
  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,
   -1,  280,  281,   -1,   -1,   -1,   -1,   -1,  263,   -1,
  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,
   40,  300,  301,   43,  303,   45,  305,   47,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  290,  291,   -1,  293,   -1,
   -1,   -1,   -1,   -1,  323,  300,  301,   -1,  303,   -1,
  305,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
   -1,  340,  341,   -1,   -1,  344,   -1,   -1,  323,  348,
  349,  350,   -1,   -1,   -1,   -1,  331,  332,  333,  334,
  335,  336,   -1,  338,   -1,  340,  341,   -1,  263,  344,
   -1,   -1,   -1,  348,  349,  350,   40,   -1,   -1,   43,
   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  290,  291,   -1,  293,   -1,
   -1,   -1,   -1,   -1,   -1,  300,  301,   -1,  303,   -1,
  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,
  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,
   -1,   -1,   -1,  348,  349,  350,  263,   -1,   40,   -1,
   -1,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   40,  290,  291,   43,  293,   45,   -1,   47,
   -1,   -1,   -1,  300,  301,   -1,  303,   -1,  305,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,
   -1,   -1,   -1,  263,  331,  332,  333,  334,  335,  336,
   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,
   -1,  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   40,
  290,  291,   43,  293,   45,   -1,   47,   -1,   -1,   -1,
  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   40,   -1,   -1,   43,   -1,   45,   -1,
   47,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,  263,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   40,  290,  291,   43,  293,
   45,   -1,   47,   -1,   -1,   -1,  300,  301,   -1,  303,
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   40,
   -1,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,  323,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,
  344,  263,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   40,   -1,   -1,   43,  263,   45,   -1,  290,  291,
   -1,  293,   -1,   -1,   -1,   -1,   -1,   -1,  300,  301,
   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,  323,  300,  301,   -1,  303,   -1,  305,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,  323,  348,  349,  350,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,   -1,  300,
  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  290,  291,   -1,  293,   -1,   -1,   -1,
   -1,   -1,  323,  300,  301,   -1,  303,   -1,  305,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,   -1,   -1,  344,   -1,   -1,  323,  348,  349,  350,
   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,
   -1,  338,   -1,  340,  341,  290,  291,  344,  293,   -1,
   -1,  348,  349,  350,   -1,  300,  301,   -1,  303,   -1,
  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,  323,  300,
  301,   -1,  303,   -1,  305,   -1,  331,  332,  333,  334,
  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,
   -1,   -1,  323,  348,  349,  350,   -1,   -1,   -1,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,  290,  291,  344,  293,   -1,   -1,  348,  349,  350,
   -1,  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,   -1,
   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,
  349,  350,
};
#define YYFINAL 4
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 351
#if YYDEBUG
const char * const yyname[] =
	{
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,"'%'",0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,
"':'","';'",0,0,0,"'?'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",
"'|'","'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"FIRSTTOKEN","PROGRAM","PASTAT","PASTAT2",
"XBEGIN","XEND","NL","ARRAY","MATCH","NOTMATCH","MATCHOP","FINAL","DOT","ALL",
"CCL","NCCL","CHAR","OR","STAR","QUEST","PLUS","EMPTYRE","ZERO","AND","BOR",
"APPEND","EQ","GE","GT","LE","LT","NE","IN","ARG","BLTIN","BREAK","CLOSE",
"CONTINUE","DELETE","DO","EXIT","FOR","FUNC","SUB","GSUB","IF","INDEX",
"LSUBSTR","MATCHFCN","NEXT","NEXTFILE","ADD","MINUS","MULT","DIVIDE","MOD",
"ASSIGN","ASGNOP","ADDEQ","SUBEQ","MULTEQ","DIVEQ","MODEQ","POWEQ","PRINT",
"PRINTF","SPRINTF","ELSE","INTEST","CONDEXPR","POSTINCR","PREINCR","POSTDECR",
"PREDECR","VAR","IVAR","VARNF","CALL","NUMBER","STRING","REGEXPR","GETLINE",
"RETURN","SPLIT","SUBSTR","WHILE","CAT","NOT","UMINUS","UPLUS","POWER","DECR",
"INCR","INDIRECT","LASTTOKEN",
};
const char * const yyrule[] =
	{"$accept : program",
"program : pas",
"program : error",
"and : AND",
"and : and NL",
"bor : BOR",
"bor : bor NL",
"comma : ','",
"comma : comma NL",
"do : DO",
"do : do NL",
"else : ELSE",
"else : else NL",
"$$1 :",
"for : FOR '(' opt_simple_stmt ';' opt_nl pattern ';' opt_nl opt_simple_stmt rparen $$1 stmt",
"$$2 :",
"for : FOR '(' opt_simple_stmt ';' ';' opt_nl opt_simple_stmt rparen $$2 stmt",
"$$3 :",
"for : FOR '(' varname IN varname rparen $$3 stmt",
"funcname : VAR",
"funcname : CALL",
"if : IF '(' pattern rparen",
"lbrace : '{'",
"lbrace : lbrace NL",
"nl : NL",
"nl : nl NL",
"opt_nl :",
"opt_nl : nl",
"opt_pst :",
"opt_pst : pst",
"opt_simple_stmt :",
"opt_simple_stmt : simple_stmt",
"pas : opt_pst",
"pas : opt_pst pa_stats opt_pst",
"pa_pat : pattern",
"pa_stat : pa_pat",
"pa_stat : pa_pat lbrace stmtlist '}'",
"pa_stat : pa_pat ',' opt_nl pa_pat",
"pa_stat : pa_pat ',' opt_nl pa_pat lbrace stmtlist '}'",
"pa_stat : lbrace stmtlist '}'",
"pa_stat : XBEGIN lbrace stmtlist '}'",
"pa_stat : XEND lbrace stmtlist '}'",
"$$4 :",
"pa_stat : FUNC funcname '(' varlist rparen $$4 lbrace stmtlist '}'",
"pa_stats : pa_stat",
"pa_stats : pa_stats opt_pst pa_stat",
"patlist : pattern",
"patlist : patlist comma pattern",
"ppattern : var ASGNOP ppattern",
"ppattern : ppattern '?' ppattern ':' ppattern",
"ppattern : ppattern bor ppattern",
"ppattern : ppattern and ppattern",
"ppattern : ppattern MATCHOP reg_expr",
"ppattern : ppattern MATCHOP ppattern",
"ppattern : ppattern IN varname",
"ppattern : '(' plist ')' IN varname",
"ppattern : ppattern term",
"ppattern : re",
"ppattern : term",
"pattern : var ASGNOP pattern",
"pattern : pattern '?' pattern ':' pattern",
"pattern : pattern bor pattern",
"pattern : pattern and pattern",
"pattern : pattern EQ pattern",
"pattern : pattern GE pattern",
"pattern : pattern GT pattern",
"pattern : pattern LE pattern",
"pattern : pattern LT pattern",
"pattern : pattern NE pattern",
"pattern : pattern MATCHOP reg_expr",
"pattern : pattern MATCHOP pattern",
"pattern : pattern IN varname",
"pattern : '(' plist ')' IN varname",
"pattern : pattern '|' GETLINE var",
"pattern : pattern '|' GETLINE",
"pattern : pattern term",
"pattern : re",
"pattern : term",
"plist : pattern comma pattern",
"plist : plist comma pattern",
"pplist : ppattern",
"pplist : pplist comma ppattern",
"prarg :",
"prarg : pplist",
"prarg : '(' plist ')'",
"print : PRINT",
"print : PRINTF",
"pst : NL",
"pst : ';'",
"pst : pst NL",
"pst : pst ';'",
"rbrace : '}'",
"rbrace : rbrace NL",
"re : reg_expr",
"re : NOT re",
"$$5 :",
"reg_expr : '/' $$5 REGEXPR '/'",
"rparen : ')'",
"rparen : rparen NL",
"simple_stmt : print prarg '|' term",
"simple_stmt : print prarg APPEND term",
"simple_stmt : print prarg GT term",
"simple_stmt : print prarg",
"simple_stmt : DELETE varname '[' patlist ']'",
"simple_stmt : DELETE varname",
"simple_stmt : pattern",
"simple_stmt : error",
"st : nl",
"st : ';' opt_nl",
"stmt : BREAK st",
"stmt : CONTINUE st",
"$$6 :",
"$$7 :",
"stmt : do $$6 stmt $$7 WHILE '(' pattern ')' st",
"stmt : EXIT pattern st",
"stmt : EXIT st",
"stmt : for",
"stmt : if stmt else stmt",
"stmt : if stmt",
"stmt : lbrace stmtlist rbrace",
"stmt : NEXT st",
"stmt : NEXTFILE st",
"stmt : RETURN pattern st",
"stmt : RETURN st",
"stmt : simple_stmt st",
"$$8 :",
"stmt : while $$8 stmt",
"stmt : ';' opt_nl",
"stmtlist : stmt",
"stmtlist : stmtlist stmt",
"subop : SUB",
"subop : GSUB",
"string : STRING",
"string : string STRING",
"term : term '/' ASGNOP term",
"term : term '+' term",
"term : term '-' term",
"term : term '*' term",
"term : term '/' term",
"term : term '%' term",
"term : term POWER term",
"term : '-' term",
"term : '+' term",
"term : NOT term",
"term : BLTIN '(' ')'",
"term : BLTIN '(' patlist ')'",
"term : BLTIN",
"term : CALL '(' ')'",
"term : CALL '(' patlist ')'",
"term : CLOSE term",
"term : DECR var",
"term : INCR var",
"term : var DECR",
"term : var INCR",
"term : GETLINE var LT term",
"term : GETLINE LT term",
"term : GETLINE var",
"term : GETLINE",
"term : INDEX '(' pattern comma pattern ')'",
"term : INDEX '(' pattern comma reg_expr ')'",
"term : '(' pattern ')'",
"term : MATCHFCN '(' pattern comma reg_expr ')'",
"term : MATCHFCN '(' pattern comma pattern ')'",
"term : NUMBER",
"term : SPLIT '(' pattern comma varname comma pattern ')'",
"term : SPLIT '(' pattern comma varname comma reg_expr ')'",
"term : SPLIT '(' pattern comma varname ')'",
"term : SPRINTF '(' patlist ')'",
"term : string",
"term : subop '(' reg_expr comma pattern ')'",
"term : subop '(' pattern comma pattern ')'",
"term : subop '(' reg_expr comma pattern comma var ')'",
"term : subop '(' pattern comma pattern comma var ')'",
"term : SUBSTR '(' pattern comma pattern comma pattern ')'",
"term : SUBSTR '(' pattern comma pattern ')'",
"term : var",
"var : varname",
"var : varname '[' patlist ']'",
"var : IVAR",
"var : INDIRECT term",
"varlist :",
"varlist : VAR",
"varlist : varlist comma VAR",
"varname : VAR",
"varname : ARG",
"varname : VARNF",
"while : WHILE '(' pattern rparen",
};
#endif
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH 10000
#endif
#endif
#define YYINITSTACKSIZE 200
/* LINTUSED */
int yydebug;
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
YYSTYPE yylval;
short *yyss;
short *yysslim;
YYSTYPE *yyvs;
unsigned int yystacksize;
int yyparse(void);
#line 452 "awkgram.y"

void setfname(Cell *p)
{
	if (isarr(p))
		SYNTAX("%s is an array, not a function", p->nval);
	else if (isfcn(p))
		SYNTAX("you can't define function %s more than once", p->nval);
	curfname = p->nval;
}

int constnode(Node *p)
{
	return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
}

char *strnode(Node *p)
{
	return ((Cell *)(p->narg[0]))->sval;
}

Node *notnull(Node *n)
{
	switch (n->nobj) {
	case LE: case LT: case EQ: case NE: case GT: case GE:
	case BOR: case AND: case NOT:
		return n;
	default:
		return op2(NE, n, nullnode);
	}
}

void checkdup(Node *vl, Cell *cp)	/* check if name already in list */
{
	char *s = cp->nval;
	for ( ; vl; vl = vl->nnext) {
		if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
			SYNTAX("duplicate argument %s", s);
			break;
		}
	}
}
#line 2508 "awkgram.tab.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
static int yygrowstack(void)
{
    unsigned int newsize;
    long sslen;
    short *newss;
    YYSTYPE *newvs;

    if ((newsize = yystacksize) == 0)
        newsize = YYINITSTACKSIZE;
    else if (newsize >= YYMAXDEPTH)
        return -1;
    else if ((newsize *= 2) > YYMAXDEPTH)
        newsize = YYMAXDEPTH;
    sslen = yyssp - yyss;
#ifdef SIZE_MAX
#define YY_SIZE_MAX SIZE_MAX
#else
#define YY_SIZE_MAX 0xffffffffU
#endif
    if (newsize && YY_SIZE_MAX / newsize < sizeof *newss)
        goto bail;
    newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) :
      (short *)malloc(newsize * sizeof *newss); /* overflow check above */
    if (newss == NULL)
        goto bail;
    yyss = newss;
    yyssp = newss + sslen;
    if (newsize && YY_SIZE_MAX / newsize < sizeof *newvs)
        goto bail;
    newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) :
      (YYSTYPE *)malloc(newsize * sizeof *newvs); /* overflow check above */
    if (newvs == NULL)
        goto bail;
    yyvs = newvs;
    yyvsp = newvs + sslen;
    yystacksize = newsize;
    yysslim = yyss + newsize - 1;
    return 0;
bail:
    if (yyss)
            free(yyss);
    if (yyvs)
            free(yyvs);
    yyss = yyssp = NULL;
    yyvs = yyvsp = NULL;
    yystacksize = 0;
    return -1;
}

#define YYABORT goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse(void)
{
    int yym, yyn, yystate;
#if YYDEBUG
    const char *yys;

    if ((yys = getenv("YYDEBUG")))
    {
        yyn = *yys;
        if (yyn >= '0' && yyn <= '9')
            yydebug = yyn - '0';
    }
#endif /* YYDEBUG */

    yynerrs = 0;
    yyerrflag = 0;
    yychar = (-1);

    if (yyss == NULL && yygrowstack()) goto yyoverflow;
    yyssp = yyss;
    yyvsp = yyvs;
    *yyssp = yystate = 0;

yyloop:
    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    if (yychar < 0)
    {
        if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
        if (yydebug)
        {
            yys = 0;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (!yys) yys = "illegal-symbol";
            printf("%sdebug: state %d, reading %d (%s)\n",
                    YYPREFIX, yystate, yychar, yys);
        }
#endif
    }
    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
#if YYDEBUG
        if (yydebug)
            printf("%sdebug: state %d, shifting to state %d\n",
                    YYPREFIX, yystate, yytable[yyn]);
#endif
        if (yyssp >= yysslim && yygrowstack())
        {
            goto yyoverflow;
        }
        *++yyssp = yystate = yytable[yyn];
        *++yyvsp = yylval;
        yychar = (-1);
        if (yyerrflag > 0)  --yyerrflag;
        goto yyloop;
    }
    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
        yyn = yytable[yyn];
        goto yyreduce;
    }
    if (yyerrflag) goto yyinrecovery;
#if defined(__GNUC__)
    goto yynewerror;
#endif
yynewerror:
    yyerror("syntax error");
#if defined(__GNUC__)
    goto yyerrlab;
#endif
yyerrlab:
    ++yynerrs;
yyinrecovery:
    if (yyerrflag < 3)
    {
        yyerrflag = 3;
        for (;;)
        {
            if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
            {
#if YYDEBUG
                if (yydebug)
                    printf("%sdebug: state %d, error recovery shifting\
 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
#endif
                if (yyssp >= yysslim && yygrowstack())
                {
                    goto yyoverflow;
                }
                *++yyssp = yystate = yytable[yyn];
                *++yyvsp = yylval;
                goto yyloop;
            }
            else
            {
#if YYDEBUG
                if (yydebug)
                    printf("%sdebug: error recovery discarding state %d\n",
                            YYPREFIX, *yyssp);
#endif
                if (yyssp <= yyss) goto yyabort;
                --yyssp;
                --yyvsp;
            }
        }
    }
    else
    {
        if (yychar == 0) goto yyabort;
#if YYDEBUG
        if (yydebug)
        {
            yys = 0;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (!yys) yys = "illegal-symbol";
            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
                    YYPREFIX, yystate, yychar, yys);
        }
#endif
        yychar = (-1);
        goto yyloop;
    }
yyreduce:
#if YYDEBUG
    if (yydebug)
        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
                YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
    yym = yylen[yyn];
    if (yym)
        yyval = yyvsp[1-yym];
    else
        memset(&yyval, 0, sizeof yyval);
    switch (yyn)
    {
case 1:
#line 99 "awkgram.y"
{ if (errorflag==0)
			winner = (Node *)stat3(PROGRAM, beginloc, yyvsp[0].p, endloc); }
break;
case 2:
#line 101 "awkgram.y"
{ yyclearin; bracecheck(); SYNTAX("bailing out"); }
break;
case 13:
#line 125 "awkgram.y"
{inloop++;}
break;
case 14:
#line 126 "awkgram.y"
{ --inloop; yyval.p = stat4(FOR, yyvsp[-9].p, notnull(yyvsp[-6].p), yyvsp[-3].p, yyvsp[0].p); }
break;
case 15:
#line 127 "awkgram.y"
{inloop++;}
break;
case 16:
#line 128 "awkgram.y"
{ --inloop; yyval.p = stat4(FOR, yyvsp[-7].p, NIL, yyvsp[-3].p, yyvsp[0].p); }
break;
case 17:
#line 129 "awkgram.y"
{inloop++;}
break;
case 18:
#line 130 "awkgram.y"
{ --inloop; yyval.p = stat3(IN, yyvsp[-5].p, makearr(yyvsp[-3].p), yyvsp[0].p); }
break;
case 19:
#line 134 "awkgram.y"
{ setfname(yyvsp[0].cp); }
break;
case 20:
#line 135 "awkgram.y"
{ setfname(yyvsp[0].cp); }
break;
case 21:
#line 139 "awkgram.y"
{ yyval.p = notnull(yyvsp[-1].p); }
break;
case 26:
#line 151 "awkgram.y"
{ yyval.i = 0; }
break;
case 28:
#line 156 "awkgram.y"
{ yyval.i = 0; }
break;
case 30:
#line 162 "awkgram.y"
{ yyval.p = 0; }
break;
case 32:
#line 167 "awkgram.y"
{ yyval.p = 0; }
break;
case 33:
#line 168 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 34:
#line 172 "awkgram.y"
{ yyval.p = notnull(yyvsp[0].p); }
break;
case 35:
#line 176 "awkgram.y"
{ yyval.p = stat2(PASTAT, yyvsp[0].p, stat2(PRINT, rectonode(), NIL)); }
break;
case 36:
#line 177 "awkgram.y"
{ yyval.p = stat2(PASTAT, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 37:
#line 178 "awkgram.y"
{ yyval.p = pa2stat(yyvsp[-3].p, yyvsp[0].p, stat2(PRINT, rectonode(), NIL)); }
break;
case 38:
#line 179 "awkgram.y"
{ yyval.p = pa2stat(yyvsp[-6].p, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 39:
#line 180 "awkgram.y"
{ yyval.p = stat2(PASTAT, NIL, yyvsp[-1].p); }
break;
case 40:
#line 182 "awkgram.y"
{ beginloc = linkum(beginloc, yyvsp[-1].p); yyval.p = 0; }
break;
case 41:
#line 184 "awkgram.y"
{ endloc = linkum(endloc, yyvsp[-1].p); yyval.p = 0; }
break;
case 42:
#line 185 "awkgram.y"
{infunc = true;}
break;
case 43:
#line 186 "awkgram.y"
{ infunc = false; curfname=0; defn((Cell *)yyvsp[-7].p, yyvsp[-5].p, yyvsp[-1].p); yyval.p = 0; }
break;
case 45:
#line 191 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 47:
#line 196 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 48:
#line 200 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 49:
#line 202 "awkgram.y"
{ yyval.p = op3(CONDEXPR, notnull(yyvsp[-4].p), yyvsp[-2].p, yyvsp[0].p); }
break;
case 50:
#line 204 "awkgram.y"
{ yyval.p = op2(BOR, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 51:
#line 206 "awkgram.y"
{ yyval.p = op2(AND, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 52:
#line 207 "awkgram.y"
{ yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(yyvsp[0].s, 0)); }
break;
case 53:
#line 209 "awkgram.y"
{ if (constnode(yyvsp[0].p))
			yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(strnode(yyvsp[0].p), 0));
		  else
			yyval.p = op3(yyvsp[-1].i, (Node *)1, yyvsp[-2].p, yyvsp[0].p); }
break;
case 54:
#line 213 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-2].p, makearr(yyvsp[0].p)); }
break;
case 55:
#line 214 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-3].p, makearr(yyvsp[0].p)); }
break;
case 56:
#line 215 "awkgram.y"
{ yyval.p = op2(CAT, yyvsp[-1].p, yyvsp[0].p); }
break;
case 59:
#line 221 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 60:
#line 223 "awkgram.y"
{ yyval.p = op3(CONDEXPR, notnull(yyvsp[-4].p), yyvsp[-2].p, yyvsp[0].p); }
break;
case 61:
#line 225 "awkgram.y"
{ yyval.p = op2(BOR, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 62:
#line 227 "awkgram.y"
{ yyval.p = op2(AND, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 63:
#line 228 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 64:
#line 229 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 65:
#line 230 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 66:
#line 231 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 67:
#line 232 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 68:
#line 233 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 69:
#line 234 "awkgram.y"
{ yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(yyvsp[0].s, 0)); }
break;
case 70:
#line 236 "awkgram.y"
{ if (constnode(yyvsp[0].p))
			yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(strnode(yyvsp[0].p), 0));
		  else
			yyval.p = op3(yyvsp[-1].i, (Node *)1, yyvsp[-2].p, yyvsp[0].p); }
break;
case 71:
#line 240 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-2].p, makearr(yyvsp[0].p)); }
break;
case 72:
#line 241 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-3].p, makearr(yyvsp[0].p)); }
break;
case 73:
#line 242 "awkgram.y"
{
			if (safe) SYNTAX("cmd | getline is unsafe");
			else yyval.p = op3(GETLINE, yyvsp[0].p, itonp(yyvsp[-2].i), yyvsp[-3].p); }
break;
case 74:
#line 245 "awkgram.y"
{
			if (safe) SYNTAX("cmd | getline is unsafe");
			else yyval.p = op3(GETLINE, (Node*)0, itonp(yyvsp[-1].i), yyvsp[-2].p); }
break;
case 75:
#line 248 "awkgram.y"
{ yyval.p = op2(CAT, yyvsp[-1].p, yyvsp[0].p); }
break;
case 78:
#line 254 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 79:
#line 255 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 81:
#line 260 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 82:
#line 264 "awkgram.y"
{ yyval.p = rectonode(); }
break;
case 84:
#line 266 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 93:
#line 283 "awkgram.y"
{ yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yyvsp[0].s, 0)); }
break;
case 94:
#line 284 "awkgram.y"
{ yyval.p = op1(NOT, notnull(yyvsp[0].p)); }
break;
case 95:
#line 288 "awkgram.y"
{startreg();}
break;
case 96:
#line 288 "awkgram.y"
{ yyval.s = yyvsp[-1].s; }
break;
case 99:
#line 296 "awkgram.y"
{
			if (safe) SYNTAX("print | is unsafe");
			else yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 100:
#line 299 "awkgram.y"
{
			if (safe) SYNTAX("print >> is unsafe");
			else yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 101:
#line 302 "awkgram.y"
{
			if (safe) SYNTAX("print > is unsafe");
			else yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 102:
#line 305 "awkgram.y"
{ yyval.p = stat3(yyvsp[-1].i, yyvsp[0].p, NIL, NIL); }
break;
case 103:
#line 306 "awkgram.y"
{ yyval.p = stat2(DELETE, makearr(yyvsp[-3].p), yyvsp[-1].p); }
break;
case 104:
#line 307 "awkgram.y"
{ yyval.p = stat2(DELETE, makearr(yyvsp[0].p), 0); }
break;
case 105:
#line 308 "awkgram.y"
{ yyval.p = exptostat(yyvsp[0].p); }
break;
case 106:
#line 309 "awkgram.y"
{ yyclearin; SYNTAX("illegal statement"); }
break;
case 109:
#line 318 "awkgram.y"
{ if (!inloop) SYNTAX("break illegal outside of loops");
				  yyval.p = stat1(BREAK, NIL); }
break;
case 110:
#line 320 "awkgram.y"
{  if (!inloop) SYNTAX("continue illegal outside of loops");
				  yyval.p = stat1(CONTINUE, NIL); }
break;
case 111:
#line 322 "awkgram.y"
{inloop++;}
break;
case 112:
#line 322 "awkgram.y"
{--inloop;}
break;
case 113:
#line 323 "awkgram.y"
{ yyval.p = stat2(DO, yyvsp[-6].p, notnull(yyvsp[-2].p)); }
break;
case 114:
#line 324 "awkgram.y"
{ yyval.p = stat1(EXIT, yyvsp[-1].p); }
break;
case 115:
#line 325 "awkgram.y"
{ yyval.p = stat1(EXIT, NIL); }
break;
case 117:
#line 327 "awkgram.y"
{ yyval.p = stat3(IF, yyvsp[-3].p, yyvsp[-2].p, yyvsp[0].p); }
break;
case 118:
#line 328 "awkgram.y"
{ yyval.p = stat3(IF, yyvsp[-1].p, yyvsp[0].p, NIL); }
break;
case 119:
#line 329 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 120:
#line 330 "awkgram.y"
{ if (infunc)
				SYNTAX("next is illegal inside a function");
			  yyval.p = stat1(NEXT, NIL); }
break;
case 121:
#line 333 "awkgram.y"
{ if (infunc)
				SYNTAX("nextfile is illegal inside a function");
			  yyval.p = stat1(NEXTFILE, NIL); }
break;
case 122:
#line 336 "awkgram.y"
{ yyval.p = stat1(RETURN, yyvsp[-1].p); }
break;
case 123:
#line 337 "awkgram.y"
{ yyval.p = stat1(RETURN, NIL); }
break;
case 125:
#line 339 "awkgram.y"
{inloop++;}
break;
case 126:
#line 339 "awkgram.y"
{ --inloop; yyval.p = stat2(WHILE, yyvsp[-2].p, yyvsp[0].p); }
break;
case 127:
#line 340 "awkgram.y"
{ yyval.p = 0; }
break;
case 129:
#line 345 "awkgram.y"
{ yyval.p = linkum(yyvsp[-1].p, yyvsp[0].p); }
break;
case 133:
#line 354 "awkgram.y"
{ yyval.cp = catstr(yyvsp[-1].cp, yyvsp[0].cp); }
break;
case 134:
#line 358 "awkgram.y"
{ yyval.p = op2(DIVEQ, yyvsp[-3].p, yyvsp[0].p); }
break;
case 135:
#line 359 "awkgram.y"
{ yyval.p = op2(ADD, yyvsp[-2].p, yyvsp[0].p); }
break;
case 136:
#line 360 "awkgram.y"
{ yyval.p = op2(MINUS, yyvsp[-2].p, yyvsp[0].p); }
break;
case 137:
#line 361 "awkgram.y"
{ yyval.p = op2(MULT, yyvsp[-2].p, yyvsp[0].p); }
break;
case 138:
#line 362 "awkgram.y"
{ yyval.p = op2(DIVIDE, yyvsp[-2].p, yyvsp[0].p); }
break;
case 139:
#line 363 "awkgram.y"
{ yyval.p = op2(MOD, yyvsp[-2].p, yyvsp[0].p); }
break;
case 140:
#line 364 "awkgram.y"
{ yyval.p = op2(POWER, yyvsp[-2].p, yyvsp[0].p); }
break;
case 141:
#line 365 "awkgram.y"
{ yyval.p = op1(UMINUS, yyvsp[0].p); }
break;
case 142:
#line 366 "awkgram.y"
{ yyval.p = op1(UPLUS, yyvsp[0].p); }
break;
case 143:
#line 367 "awkgram.y"
{ yyval.p = op1(NOT, notnull(yyvsp[0].p)); }
break;
case 144:
#line 368 "awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yyvsp[-2].i), rectonode()); }
break;
case 145:
#line 369 "awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yyvsp[-3].i), yyvsp[-1].p); }
break;
case 146:
#line 370 "awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yyvsp[0].i), rectonode()); }
break;
case 147:
#line 371 "awkgram.y"
{ yyval.p = op2(CALL, celltonode(yyvsp[-2].cp,CVAR), NIL); }
break;
case 148:
#line 372 "awkgram.y"
{ yyval.p = op2(CALL, celltonode(yyvsp[-3].cp,CVAR), yyvsp[-1].p); }
break;
case 149:
#line 373 "awkgram.y"
{ yyval.p = op1(CLOSE, yyvsp[0].p); }
break;
case 150:
#line 374 "awkgram.y"
{ yyval.p = op1(PREDECR, yyvsp[0].p); }
break;
case 151:
#line 375 "awkgram.y"
{ yyval.p = op1(PREINCR, yyvsp[0].p); }
break;
case 152:
#line 376 "awkgram.y"
{ yyval.p = op1(POSTDECR, yyvsp[-1].p); }
break;
case 153:
#line 377 "awkgram.y"
{ yyval.p = op1(POSTINCR, yyvsp[-1].p); }
break;
case 154:
#line 378 "awkgram.y"
{ yyval.p = op3(GETLINE, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 155:
#line 379 "awkgram.y"
{ yyval.p = op3(GETLINE, NIL, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 156:
#line 380 "awkgram.y"
{ yyval.p = op3(GETLINE, yyvsp[0].p, NIL, NIL); }
break;
case 157:
#line 381 "awkgram.y"
{ yyval.p = op3(GETLINE, NIL, NIL, NIL); }
break;
case 158:
#line 383 "awkgram.y"
{ yyval.p = op2(INDEX, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 159:
#line 385 "awkgram.y"
{ SYNTAX("index() doesn't permit regular expressions");
		  yyval.p = op2(INDEX, yyvsp[-3].p, (Node*)yyvsp[-1].s); }
break;
case 160:
#line 387 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 161:
#line 389 "awkgram.y"
{ yyval.p = op3(MATCHFCN, NIL, yyvsp[-3].p, (Node*)makedfa(yyvsp[-1].s, 1)); }
break;
case 162:
#line 391 "awkgram.y"
{ if (constnode(yyvsp[-1].p))
			yyval.p = op3(MATCHFCN, NIL, yyvsp[-3].p, (Node*)makedfa(strnode(yyvsp[-1].p), 1));
		  else
			yyval.p = op3(MATCHFCN, (Node *)1, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 163:
#line 395 "awkgram.y"
{ yyval.p = celltonode(yyvsp[0].cp, CCON); }
break;
case 164:
#line 397 "awkgram.y"
{ yyval.p = op4(SPLIT, yyvsp[-5].p, makearr(yyvsp[-3].p), yyvsp[-1].p, (Node*)STRING); }
break;
case 165:
#line 399 "awkgram.y"
{ yyval.p = op4(SPLIT, yyvsp[-5].p, makearr(yyvsp[-3].p), (Node*)makedfa(yyvsp[-1].s, 1), (Node *)REGEXPR); }
break;
case 166:
#line 401 "awkgram.y"
{ yyval.p = op4(SPLIT, yyvsp[-3].p, makearr(yyvsp[-1].p), NIL, (Node*)STRING); }
break;
case 167:
#line 402 "awkgram.y"
{ yyval.p = op1(yyvsp[-3].i, yyvsp[-1].p); }
break;
case 168:
#line 403 "awkgram.y"
{ yyval.p = celltonode(yyvsp[0].cp, CCON); }
break;
case 169:
#line 405 "awkgram.y"
{ yyval.p = op4(yyvsp[-5].i, NIL, (Node*)makedfa(yyvsp[-3].s, 1), yyvsp[-1].p, rectonode()); }
break;
case 170:
#line 407 "awkgram.y"
{ if (constnode(yyvsp[-3].p))
			yyval.p = op4(yyvsp[-5].i, NIL, (Node*)makedfa(strnode(yyvsp[-3].p), 1), yyvsp[-1].p, rectonode());
		  else
			yyval.p = op4(yyvsp[-5].i, (Node *)1, yyvsp[-3].p, yyvsp[-1].p, rectonode()); }
break;
case 171:
#line 412 "awkgram.y"
{ yyval.p = op4(yyvsp[-7].i, NIL, (Node*)makedfa(yyvsp[-5].s, 1), yyvsp[-3].p, yyvsp[-1].p); }
break;
case 172:
#line 414 "awkgram.y"
{ if (constnode(yyvsp[-5].p))
			yyval.p = op4(yyvsp[-7].i, NIL, (Node*)makedfa(strnode(yyvsp[-5].p), 1), yyvsp[-3].p, yyvsp[-1].p);
		  else
			yyval.p = op4(yyvsp[-7].i, (Node *)1, yyvsp[-5].p, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 173:
#line 419 "awkgram.y"
{ yyval.p = op3(SUBSTR, yyvsp[-5].p, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 174:
#line 421 "awkgram.y"
{ yyval.p = op3(SUBSTR, yyvsp[-3].p, yyvsp[-1].p, NIL); }
break;
case 177:
#line 427 "awkgram.y"
{ yyval.p = op2(ARRAY, makearr(yyvsp[-3].p), yyvsp[-1].p); }
break;
case 178:
#line 428 "awkgram.y"
{ yyval.p = op1(INDIRECT, celltonode(yyvsp[0].cp, CVAR)); }
break;
case 179:
#line 429 "awkgram.y"
{ yyval.p = op1(INDIRECT, yyvsp[0].p); }
break;
case 180:
#line 433 "awkgram.y"
{ arglist = yyval.p = 0; }
break;
case 181:
#line 434 "awkgram.y"
{ arglist = yyval.p = celltonode(yyvsp[0].cp,CVAR); }
break;
case 182:
#line 435 "awkgram.y"
{
			checkdup(yyvsp[-2].p, yyvsp[0].cp);
			arglist = yyval.p = linkum(yyvsp[-2].p,celltonode(yyvsp[0].cp,CVAR)); }
break;
case 183:
#line 441 "awkgram.y"
{ yyval.p = celltonode(yyvsp[0].cp, CVAR); }
break;
case 184:
#line 442 "awkgram.y"
{ yyval.p = op1(ARG, itonp(yyvsp[0].i)); }
break;
case 185:
#line 443 "awkgram.y"
{ yyval.p = op1(VARNF, (Node *) yyvsp[0].cp); }
break;
case 186:
#line 448 "awkgram.y"
{ yyval.p = notnull(yyvsp[-1].p); }
break;
#line 3301 "awkgram.tab.c"
    }
    yyssp -= yym;
    yystate = *yyssp;
    yyvsp -= yym;
    yym = yylhs[yyn];
    if (yystate == 0 && yym == 0)
    {
#if YYDEBUG
        if (yydebug)
            printf("%sdebug: after reduction, shifting from state 0 to\
 state %d\n", YYPREFIX, YYFINAL);
#endif
        yystate = YYFINAL;
        *++yyssp = YYFINAL;
        *++yyvsp = yyval;
        if (yychar < 0)
        {
            if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
            if (yydebug)
            {
                yys = 0;
                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
                if (!yys) yys = "illegal-symbol";
                printf("%sdebug: state %d, reading %d (%s)\n",
                        YYPREFIX, YYFINAL, yychar, yys);
            }
#endif
        }
        if (yychar == 0) goto yyaccept;
        goto yyloop;
    }
    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
        yystate = yytable[yyn];
    else
        yystate = yydgoto[yym];
#if YYDEBUG
    if (yydebug)
        printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yyssp, yystate);
#endif
    if (yyssp >= yysslim && yygrowstack())
    {
        goto yyoverflow;
    }
    *++yyssp = yystate;
    *++yyvsp = yyval;
    goto yyloop;
yyoverflow:
    yyerror("yacc stack overflow");
yyabort:
    if (yyss)
            free(yyss);
    if (yyvs)
            free(yyvs);
    yyss = yyssp = NULL;
    yyvs = yyvsp = NULL;
    yystacksize = 0;
    return (1);
yyaccept:
    if (yyss)
            free(yyss);
    if (yyvs)
            free(yyvs);
    yyss = yyssp = NULL;
    yyvs = yyvsp = NULL;
    yystacksize = 0;
    return (0);
}
