#include #ifndef lint #if 0 static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; #else __IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.14 1997/10/20 03:41:16 lukem Exp $"); #endif #endif #include #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 30 "awk.g.y" #include "awk.h" #include #include #include int yywrap(void) { return(1); } #ifndef DEBUG # define PUTS(x) #endif Node *beginloc = 0, *endloc = 0; int infunc = 0; /* = 1 if in arglist or body of func */ unsigned char *curfname = 0; Node *arglist = 0; /* list of args for current function */ static void setfname(Cell *); static int constnode(Node *); static unsigned char *strnode(Node *); static Node *notnull(Node *); extern const char illstat[]; extern int yylex(void); #line 51 "awk.g.y" typedef union { Node *p; Cell *cp; intptr_t i; unsigned char *s; } YYSTYPE; #line 47 "y.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 MCHAR 274 #define OR 275 #define STAR 276 #define QUEST 277 #define PLUS 278 #define AND 279 #define BOR 280 #define APPEND 281 #define EQ 282 #define GE 283 #define GT 284 #define LE 285 #define LT 286 #define NE 287 #define IN 288 #define ARG 289 #define BLTIN 290 #define BREAK 291 #define CONTINUE 292 #define DELETE 293 #define DO 294 #define EXIT 295 #define FOR 296 #define FUNC 297 #define SUB 298 #define GSUB 299 #define IF 300 #define INDEX 301 #define LSUBSTR 302 #define MATCHFCN 303 #define NEXT 304 #define ADD 305 #define MINUS 306 #define MULT 307 #define DIVIDE 308 #define MOD 309 #define ASSIGN 310 #define ASGNOP 311 #define ADDEQ 312 #define SUBEQ 313 #define MULTEQ 314 #define DIVEQ 315 #define MODEQ 316 #define POWEQ 317 #define PRINT 318 #define PRINTF 319 #define SPRINTF 320 #define ELSE 321 #define INTEST 322 #define CONDEXPR 323 #define POSTINCR 324 #define PREINCR 325 #define POSTDECR 326 #define PREDECR 327 #define VAR 328 #define IVAR 329 #define VARNF 330 #define CALL 331 #define NUMBER 332 #define STRING 333 #define FIELD 334 #define REGEXPR 335 #define GETLINE 336 #define RETURN 337 #define SPLIT 338 #define SUBSTR 339 #define WHILE 340 #define CAT 341 #define NOT 342 #define UMINUS 343 #define POWER 344 #define DECR 345 #define INCR 346 #define INDIRECT 347 #define LASTTOKEN 348 #define YYERRCODE 256 short yylhs[] = { -1, 0, 0, 32, 32, 33, 33, 29, 29, 36, 36, 37, 37, 22, 22, 22, 20, 20, 23, 27, 27, 30, 30, 31, 31, 26, 26, 15, 15, 1, 1, 10, 11, 11, 11, 11, 11, 11, 11, 38, 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, 2, 4, 4, 5, 5, 7, 7, 7, 35, 35, 25, 25, 25, 25, 39, 39, 9, 9, 40, 13, 28, 28, 14, 14, 14, 14, 14, 14, 14, 14, 41, 41, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 34, 34, 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, 18, 21, 21, 21, 19, 19, 19, 24, }; short yylen[] = { 2, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 9, 8, 7, 1, 1, 4, 1, 2, 1, 2, 0, 1, 0, 1, 0, 1, 1, 3, 1, 1, 4, 3, 6, 3, 4, 4, 0, 9, 1, 3, 1, 3, 3, 5, 3, 3, 3, 3, 3, 5, 2, 1, 1, 3, 5, 3, 3, 2, 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, 7, 3, 2, 1, 4, 2, 3, 2, 3, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 2, 2, 2, 3, 4, 1, 3, 4, 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, 1, 2, 0, 1, 3, 1, 1, 1, 4, }; short yydefred[] = { 0, 2, 85, 86, 0, 1, 0, 0, 87, 88, 0, 0, 19, 0, 93, 175, 0, 0, 124, 125, 0, 0, 0, 174, 169, 176, 0, 153, 158, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 41, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 140, 141, 170, 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, 142, 143, 0, 104, 20, 0, 0, 0, 0, 9, 0, 0, 0, 0, 83, 84, 0, 0, 0, 0, 122, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 7, 150, 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 69, 0, 4, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 21, 0, 121, 0, 0, 107, 108, 0, 0, 111, 0, 0, 116, 0, 118, 0, 119, 36, 123, 0, 120, 0, 0, 0, 0, 0, 0, 0, 54, 0, 10, 0, 0, 0, 37, 38, 8, 0, 0, 0, 94, 136, 0, 172, 0, 0, 0, 157, 139, 0, 0, 0, 71, 0, 0, 33, 167, 22, 106, 0, 110, 28, 0, 0, 0, 117, 0, 11, 0, 89, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 113, 90, 0, 0, 0, 49, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 173, 148, 149, 152, 151, 156, 0, 164, 0, 35, 101, 0, 0, 0, 0, 0, 0, 0, 160, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 154, 155, 163, 0, 0, 15, 109, 162, 161, 40, 14, 0, 13, }; short yydgoto[] = { 4, 5, 121, 205, 53, 206, 142, 207, 40, 41, 42, 43, 44, 45, 122, 243, 123, 124, 46, 47, 58, 225, 125, 126, 127, 6, 7, 128, 271, 223, 185, 183, 91, 92, 49, 129, 130, 249, 306, 251, 54, 186, }; short yysindex[] = { -59, 0, 0, 0, 0, 0, -53, 7440, 0, 0, -83, -83, 0, 8385, 0, 0, 22, -270, 0, 0, 44, 51, 55, 0, 0, 0, 83, 0, 0, 0, 382, 101, 106, 8537, 8537, 8385, 414, 414, 8537, 6998, -35, 0, -24, 0, -48, 0, -184, -22, 3566, 125, 3566, 3566, 5680, 94, -268, 1843, 0, 0, 127, 8385, 8385, 8385, 7843, 8537, -111, 8385, 8385, 8385, 8537, -164, -113, -164, -140, -164, 0, 0, 0, 0, -149, 8385, 0, 0, 8385, 8385, 8385, 8385, 8385, 8385, -160, 8385, -35, 7894, 7979, 8537, 8537, 8537, 8537, 8537, 8537, 8385, 3566, 7440, 8385, 0, 0, 8385, 0, 0, -63, -46, -46, -160, 0, 7579, 176, 182, -46, 0, 0, 7579, 194, 6998, -46, 0, 4401, 0, 5310, 5310, 3566, 8408, 4510, 8385, 4589, 4668, 0, 0, 8057, -50, 8057, 207, 0, 6998, 98, -73, 6117, 6117, 133, 0, 154, -35, 8537, 6117, 6117, 6208, -164, 414, 8617, 0, 8617, 8617, 8617, 8617, 8617, 8617, 0, 6299, 0, 7346, 0, 2660, -164, -33, -33, -164, -164, -164, -83, 4735, 0, 6998, -16, 0, -4, 0, -63, -4, 0, 0, 169, 5771, 0, 7519, 8385, 0, 5771, 0, 8385, 0, 0, 0, -60, 0, 4827, 8385, 8462, 7668, 221, -108, -35, 0, -152, 0, -74, 6117, 221, 0, 0, 0, 6998, -160, 6998, 0, 0, 8057, 0, 155, 8057, 8057, 0, 0, -35, -99, 8057, 0, 8385, 3566, 0, 0, 0, 0, 8385, 0, 0, 212, -86, 6381, 0, 6381, 0, 4933, 0, 32, 170, 0, 8513, -160, 8513, -35, 8077, 8151, 8205, 8537, 8537, 8537, 8513, 257, 8057, 8057, 0, 6998, 0, 42, -236, 6472, 267, 6563, 275, 204, 5853, 6998, 5045, 35, 8289, -160, 42, 42, 0, 0, 0, 39, 8385, 8617, 0, 0, 7416, 8309, 7749, 7668, -35, -35, -35, 7668, 8385, 5944, 6035, 0, -83, 0, 0, 0, 0, 0, 0, 8057, 0, 8057, 0, 0, 7519, 6645, 282, -160, 206, 8513, 6736, 0, 333, 0, 333, 3566, 6827, 301, 6909, 282, 7519, 5145, 0, 39, 7668, -46, 303, 314, 5243, 0, 0, 0, 5145, 282, 0, 0, 0, 0, 0, 0, 5145, 0, }; short yyrindex[] = { 1342, 0, 0, 0, 0, 0, 2245, 328, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2893, 0, 0, 0, 0, 0, 0, 0, 0, 144, 2572, 0, 354, 0, 1342, 0, 1976, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 0, 0, 0, 0, 495, 1571, 583, 3158, 1665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 0, 0, 0, 0, 0, 0, 3507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 208, 0, 0, 0, 0, 0, 2390, 0, 0, 0, 0, 677, 2987, 2076, 0, 3252, 3280, 3300, 3313, 3342, 3458, 0, 0, 0, 4406, 0, 56, 989, 2063, 2157, 1077, 1171, 1483, 848, 0, 0, 63, 0, 0, 4090, 0, 3507, 4202, 0, 0, -10, 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, 5370, 0, 0, 0, 0, -12, 308, -5, 7209, 0, 3685, 0, 0, 0, 7089, 0, 0, 0, 229, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3371, 0, 0, 0, 0, 0, 0, 4272, 0, 0, 0, 0, 0, 7322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 239, 0, 0, 7089, 0, 7089, 0, 0, 96, 0, 0, 0, 0, 5463, 5572, 0, 0, 0, 324, 0, 523, 0, 0, 0, 177, 446, 57, 16, 31, 52, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7089, 0, 0, 325, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; short yygindex[] = { 0, 0, 4173, -178, -177, 0, -39, 0, 8889, 287, 281, 280, 0, -76, -126, -301, 819, -26, 3899, 381, 0, 0, 0, 0, 0, 0, 338, 8, -162, 8851, -78, 200, 158, 283, 0, 0, 0, 0, 0, 0, 0, 50, }; #define YYTABLESIZE 9227 short yytable[] = { 3, 166, 97, 157, 97, 105, 9, 96, 94, 96, 95, 3, 93, 184, 93, 48, 261, 333, 50, 51, 99, 103, 146, 148, 132, 133, 252, 217, 134, 78, 182, 102, 78, 347, 45, 80, 100, 45, 166, 103, 12, 166, 166, 166, 166, 166, 166, 78, 166, 102, 100, 45, 45, 80, 100, 214, 58, 97, 56, 166, 166, 57, 55, 56, 166, 242, 180, 139, 43, 105, 46, 43, 98, 46, 177, 97, 291, 237, 294, 134, 295, 296, 297, 284, 59, 285, 301, 46, 46, 137, 98, 60, 307, 99, 166, 61, 57, 58, 79, 12, 58, 79, 202, 58, 56, 44, 182, 56, 44, 48, 56, 99, 78, 322, 58, 58, 79, 45, 80, 58, 43, 56, 56, 62, 166, 166, 137, 102, 317, 15, 137, 137, 137, 137, 137, 137, 137, 57, 134, 222, 57, 65, 134, 57, 31, 338, 66, 137, 137, 58, 274, 276, 137, 46, 57, 57, 56, 44, 335, 264, 187, 103, 104, 190, 217, 131, 193, 143, 23, 195, 25, 346, 197, 262, 228, 150, 263, 134, 292, 58, 98, 79, 137, 146, 235, 354, 56, 155, 31, 57, 15, 31, 242, 103, 104, 229, 270, 1, 134, 134, 181, 281, 283, 31, 2, 36, 37, 38, 242, 280, 8, 289, 137, 137, 134, 2, 191, 181, 48, 57, 146, 48, 192, 146, 146, 146, 146, 146, 146, 23, 146, 25, 103, 104, 196, 48, 48, 331, 219, 241, 48, 146, 146, 103, 246, 312, 146, 337, 134, 171, 134, 78, 171, 102, 221, 224, 45, 80, 100, 238, 240, 248, 166, 166, 166, 134, 265, 31, 166, 78, 76, 282, 78, 76, 45, 80, 146, 45, 80, 97, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 46, 77, 98, 288, 77, 302, 166, 166, 166, 48, 166, 342, 166, 305, 146, 146, 309, 98, 46, 98, 166, 46, 329, 99, 311, 58, 58, 58, 79, 166, 74, 270, 56, 56, 56, 321, 29, 166, 166, 166, 166, 166, 166, 166, 58, 166, 79, 166, 166, 79, 344, 166, 350, 166, 166, 166, 166, 81, 137, 137, 137, 58, 32, 351, 137, 57, 57, 57, 56, 30, 39, 258, 27, 82, 27, 81, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 176, 178, 101, 82, 239, 0, 137, 137, 137, 349, 137, 0, 137, 57, 32, 0, 0, 32, 0, 32, 137, 32, 0, 0, 0, 31, 31, 31, 0, 137, 0, 0, 0, 32, 0, 0, 209, 137, 137, 137, 137, 137, 137, 137, 0, 137, 0, 137, 137, 0, 0, 137, 81, 137, 137, 137, 137, 0, 0, 0, 48, 31, 0, 0, 146, 146, 146, 0, 82, 258, 146, 0, 258, 258, 258, 258, 48, 48, 48, 258, 0, 48, 146, 146, 146, 146, 146, 146, 146, 164, 146, 146, 146, 146, 0, 0, 0, 0, 0, 0, 146, 146, 146, 0, 146, 0, 146, 47, 259, 0, 47, 253, 188, 0, 146, 133, 258, 0, 0, 0, 0, 0, 0, 146, 47, 47, 0, 0, 0, 47, 0, 146, 146, 146, 146, 146, 146, 146, 0, 146, 0, 146, 146, 0, 0, 146, 0, 146, 146, 146, 146, 0, 133, 0, 0, 133, 133, 133, 133, 133, 133, 209, 133, 209, 0, 209, 209, 209, 0, 0, 0, 209, 0, 133, 133, 0, 0, 0, 133, 0, 0, 0, 0, 0, 50, 0, 0, 50, 0, 0, 47, 81, 244, 0, 259, 0, 0, 259, 259, 259, 259, 50, 50, 132, 259, 0, 50, 82, 133, 81, 0, 0, 81, 0, 0, 0, 217, 0, 0, 0, 268, 0, 0, 0, 0, 82, 0, 0, 82, 0, 209, 0, 277, 0, 0, 32, 32, 32, 133, 133, 132, 259, 15, 132, 132, 132, 132, 132, 132, 0, 132, 0, 0, 0, 0, 0, 293, 0, 0, 0, 0, 132, 132, 32, 32, 0, 132, 50, 0, 0, 0, 32, 32, 32, 0, 32, 0, 32, 0, 0, 0, 23, 24, 25, 320, 0, 0, 29, 63, 0, 0, 15, 0, 0, 32, 0, 132, 134, 0, 0, 38, 0, 32, 32, 32, 32, 32, 32, 32, 0, 32, 0, 32, 32, 0, 0, 32, 0, 0, 32, 32, 32, 336, 15, 0, 0, 132, 132, 0, 47, 23, 24, 25, 0, 134, 0, 29, 134, 134, 134, 134, 134, 134, 0, 134, 0, 47, 47, 0, 38, 47, 0, 0, 0, 0, 134, 134, 0, 0, 0, 134, 0, 23, 24, 25, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 133, 133, 133, 0, 0, 38, 133, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 50, 0, 0, 0, 0, 0, 133, 133, 133, 0, 133, 0, 133, 0, 134, 134, 50, 50, 50, 0, 133, 50, 0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 133, 133, 133, 133, 133, 133, 133, 0, 133, 0, 133, 133, 0, 0, 133, 0, 0, 133, 133, 133, 0, 132, 132, 132, 0, 34, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 0, 0, 0, 0, 0, 0, 132, 132, 132, 0, 132, 0, 132, 0, 34, 0, 0, 34, 0, 34, 132, 34, 0, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 34, 0, 0, 0, 132, 132, 132, 132, 132, 132, 132, 0, 132, 0, 132, 132, 0, 0, 132, 0, 0, 132, 132, 132, 0, 0, 0, 0, 0, 0, 0, 134, 134, 134, 0, 0, 199, 134, 200, 201, 0, 0, 212, 0, 199, 199, 0, 0, 0, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 0, 0, 0, 0, 0, 0, 134, 134, 134, 0, 134, 0, 134, 0, 0, 0, 0, 0, 0, 0, 134, 129, 0, 0, 0, 0, 0, 0, 199, 134, 0, 0, 0, 0, 0, 0, 0, 134, 134, 134, 134, 134, 134, 134, 0, 134, 0, 134, 134, 0, 0, 134, 0, 199, 134, 134, 134, 0, 129, 0, 0, 129, 129, 129, 129, 129, 129, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 129, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 34, 129, 129, 128, 0, 0, 128, 128, 128, 128, 128, 128, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 34, 34, 0, 128, 0, 0, 0, 0, 34, 34, 34, 0, 34, 0, 34, 0, 0, 348, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 353, 0, 0, 34, 0, 128, 130, 0, 355, 0, 0, 34, 34, 34, 34, 34, 34, 34, 0, 34, 0, 34, 34, 0, 0, 34, 0, 0, 34, 34, 34, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 130, 0, 0, 130, 130, 130, 130, 130, 130, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 130, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 129, 129, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 0, 0, 0, 0, 0, 0, 129, 129, 129, 0, 129, 0, 129, 0, 130, 130, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 129, 129, 129, 129, 129, 129, 129, 0, 129, 0, 129, 129, 0, 0, 129, 0, 0, 129, 129, 129, 0, 128, 128, 128, 0, 25, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 0, 128, 0, 25, 0, 0, 25, 0, 25, 128, 25, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 0, 128, 0, 128, 128, 0, 0, 128, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 130, 130, 130, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 0, 0, 0, 25, 0, 0, 130, 130, 130, 0, 130, 0, 130, 0, 0, 0, 0, 0, 0, 0, 130, 131, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 130, 130, 130, 130, 130, 130, 130, 0, 130, 0, 130, 130, 0, 0, 130, 0, 0, 130, 130, 130, 0, 131, 0, 0, 131, 131, 131, 131, 131, 131, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 131, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 0, 131, 131, 165, 0, 0, 165, 165, 165, 165, 165, 165, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 165, 25, 25, 0, 165, 0, 0, 0, 0, 25, 25, 25, 0, 25, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 165, 75, 0, 0, 0, 0, 25, 25, 25, 25, 25, 25, 25, 0, 25, 0, 25, 25, 0, 0, 25, 0, 0, 25, 25, 25, 0, 0, 0, 0, 165, 165, 0, 0, 0, 0, 0, 0, 134, 0, 0, 75, 75, 134, 134, 75, 134, 0, 134, 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, 0, 0, 131, 131, 131, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 0, 0, 0, 0, 0, 0, 131, 131, 131, 0, 131, 0, 131, 0, 75, 75, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 131, 131, 131, 131, 131, 131, 131, 0, 131, 0, 131, 131, 0, 0, 131, 0, 0, 131, 131, 131, 0, 165, 165, 165, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 0, 0, 0, 0, 0, 0, 165, 165, 165, 0, 165, 0, 165, 0, 0, 0, 0, 0, 0, 0, 165, 13, 140, 0, 33, 0, 34, 0, 14, 165, 0, 0, 0, 0, 0, 0, 0, 165, 165, 165, 165, 165, 165, 165, 0, 165, 0, 165, 165, 0, 0, 165, 0, 165, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 0, 75, 75, 75, 75, 75, 75, 75, 75, 75, 0, 0, 0, 0, 0, 0, 75, 75, 75, 0, 75, 0, 75, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 75, 75, 75, 75, 0, 75, 0, 75, 75, 0, 0, 75, 0, 0, 75, 75, 75, 165, 0, 0, 165, 165, 165, 165, 165, 165, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 165, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 165, 0, 0, 126, 126, 0, 126, 126, 126, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 68, 126, 126, 68, 0, 0, 126, 0, 0, 0, 0, 0, 15, 16, 68, 68, 0, 0, 0, 68, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 68, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 35, 126, 126, 36, 37, 38, 0, 0, 0, 0, 0, 0, 127, 127, 68, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 165, 165, 0, 0, 0, 165, 0, 26, 0, 0, 0, 0, 127, 0, 0, 0, 0, 165, 165, 0, 165, 165, 165, 165, 165, 165, 165, 165, 165, 0, 0, 0, 0, 0, 0, 165, 165, 165, 0, 165, 0, 165, 127, 127, 0, 0, 0, 26, 0, 0, 26, 0, 26, 0, 26, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 165, 165, 165, 165, 165, 165, 165, 0, 165, 0, 165, 165, 0, 0, 165, 0, 165, 0, 0, 165, 126, 126, 126, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 68, 68, 68, 0, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 68, 68, 0, 0, 0, 126, 126, 126, 0, 126, 0, 126, 0, 26, 0, 0, 0, 0, 68, 126, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 145, 126, 126, 126, 126, 126, 126, 126, 0, 126, 0, 126, 126, 0, 0, 126, 0, 0, 126, 126, 126, 0, 68, 0, 0, 0, 0, 0, 127, 127, 127, 0, 0, 0, 127, 0, 0, 0, 0, 0, 145, 145, 0, 0, 145, 0, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 145, 145, 0, 0, 0, 145, 127, 127, 127, 0, 127, 0, 127, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 127, 144, 0, 0, 0, 0, 145, 0, 127, 127, 127, 127, 127, 127, 127, 0, 127, 0, 127, 127, 0, 0, 127, 0, 0, 127, 127, 127, 0, 26, 26, 0, 0, 0, 0, 0, 145, 145, 0, 0, 0, 144, 144, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 144, 144, 0, 0, 0, 144, 26, 26, 26, 0, 26, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 144, 75, 26, 26, 26, 26, 26, 26, 26, 0, 26, 0, 26, 26, 0, 0, 26, 0, 0, 26, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 144, 144, 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, 0, 0, 145, 145, 145, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 0, 0, 0, 0, 0, 0, 145, 145, 145, 0, 145, 0, 145, 0, 75, 75, 0, 0, 0, 67, 145, 0, 33, 0, 34, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 145, 145, 145, 145, 0, 145, 0, 145, 145, 0, 0, 145, 0, 0, 145, 145, 145, 0, 144, 144, 144, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 0, 0, 0, 0, 0, 0, 144, 144, 144, 0, 144, 0, 144, 0, 0, 78, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 73, 144, 144, 144, 144, 144, 144, 144, 0, 144, 0, 144, 144, 0, 0, 144, 0, 0, 144, 144, 144, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 0, 0, 0, 75, 0, 0, 0, 0, 0, 73, 73, 0, 0, 73, 0, 75, 75, 0, 75, 75, 75, 75, 75, 75, 75, 75, 75, 73, 73, 0, 0, 0, 73, 75, 75, 75, 0, 75, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 147, 0, 0, 0, 0, 73, 0, 75, 75, 75, 75, 75, 75, 75, 0, 75, 0, 75, 75, 0, 0, 75, 0, 0, 75, 75, 75, 0, 0, 0, 0, 0, 0, 0, 79, 73, 73, 147, 0, 0, 147, 147, 147, 147, 147, 147, 80, 147, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 147, 147, 0, 0, 0, 147, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 147, 72, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 147, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 72, 0, 72, 72, 72, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 73, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 73, 73, 0, 73, 73, 73, 73, 73, 73, 73, 73, 73, 0, 0, 0, 0, 0, 0, 73, 73, 73, 0, 73, 0, 73, 0, 72, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 73, 73, 73, 73, 73, 73, 73, 0, 73, 0, 73, 73, 0, 0, 73, 0, 0, 73, 73, 73, 0, 147, 147, 147, 0, 60, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 147, 147, 147, 147, 147, 147, 0, 147, 147, 0, 147, 0, 0, 0, 0, 0, 0, 147, 147, 147, 0, 147, 0, 147, 0, 60, 60, 0, 60, 60, 60, 147, 60, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 60, 60, 0, 0, 0, 60, 0, 0, 147, 147, 147, 0, 0, 147, 0, 147, 147, 0, 0, 147, 0, 147, 147, 147, 0, 0, 0, 0, 0, 0, 0, 0, 72, 72, 72, 60, 61, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 72, 0, 72, 72, 72, 72, 72, 72, 72, 0, 72, 0, 0, 62, 60, 60, 0, 72, 72, 72, 0, 72, 0, 72, 0, 0, 61, 0, 0, 61, 0, 0, 61, 63, 0, 0, 0, 0, 0, 0, 72, 0, 0, 61, 61, 0, 64, 0, 61, 0, 0, 72, 72, 72, 62, 0, 72, 62, 72, 72, 62, 0, 72, 0, 0, 72, 72, 0, 0, 0, 0, 62, 62, 0, 63, 65, 62, 63, 61, 0, 63, 0, 0, 0, 0, 0, 0, 64, 0, 0, 64, 63, 63, 64, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 64, 64, 62, 0, 61, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 65, 0, 0, 65, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 65, 65, 0, 62, 0, 65, 64, 0, 166, 0, 0, 166, 0, 166, 166, 0, 166, 0, 166, 60, 60, 60, 0, 63, 0, 60, 0, 0, 0, 0, 166, 0, 0, 0, 166, 65, 64, 60, 60, 0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0, 0, 0, 0, 0, 0, 60, 60, 60, 66, 60, 0, 60, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 60, 60, 60, 60, 60, 60, 60, 0, 60, 166, 60, 60, 0, 66, 60, 0, 66, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 61, 61, 61, 66, 66, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 61, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 0, 0, 0, 23, 0, 61, 23, 66, 23, 0, 23, 0, 0, 0, 0, 62, 62, 63, 63, 63, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 62, 0, 63, 63, 66, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 64, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 65, 65, 65, 13, 0, 0, 33, 64, 34, 0, 14, 0, 0, 62, 0, 0, 0, 0, 65, 65, 0, 0, 108, 0, 0, 0, 0, 23, 0, 23, 0, 0, 0, 63, 0, 166, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 166, 166, 0, 166, 166, 166, 166, 166, 166, 0, 166, 166, 0, 0, 0, 0, 0, 0, 0, 166, 166, 0, 166, 0, 166, 0, 0, 0, 65, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 12, 0, 166, 0, 0, 0, 0, 0, 0, 0, 166, 166, 166, 166, 166, 166, 166, 0, 166, 0, 166, 166, 0, 0, 166, 0, 166, 166, 166, 166, 66, 66, 66, 165, 0, 0, 165, 165, 165, 165, 165, 165, 0, 165, 0, 0, 0, 0, 66, 66, 0, 0, 0, 0, 165, 165, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 23, 23, 23, 23, 23, 23, 23, 23, 0, 23, 23, 23, 23, 165, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 23, 23, 23, 23, 107, 0, 0, 0, 0, 0, 23, 23, 23, 23, 23, 23, 23, 0, 23, 23, 23, 23, 23, 0, 23, 0, 0, 23, 23, 23, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 0, 21, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 119, 31, 32, 120, 0, 35, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 70, 70, 0, 75, 76, 70, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 70, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 165, 165, 165, 70, 0, 165, 0, 70, 0, 165, 165, 165, 0, 0, 0, 0, 0, 0, 0, 165, 165, 0, 165, 0, 165, 0, 0, 0, 70, 70, 70, 70, 70, 70, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 165, 165, 165, 165, 165, 165, 165, 70, 165, 0, 165, 165, 0, 0, 165, 210, 165, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 70, 70, 0, 0, 0, 0, 70, 70, 70, 70, 0, 233, 70, 0, 70, 70, 70, 70, 70, 70, 0, 70, 0, 70, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 70, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 70, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 24, 0, 24, 0, 24, 0, 0, 0, 0, 0, 0, 70, 0, 70, 0, 0, 24, 0, 0, 0, 210, 0, 210, 0, 210, 210, 210, 70, 70, 70, 210, 0, 0, 0, 0, 70, 0, 0, 0, 70, 0, 70, 0, 0, 70, 70, 0, 39, 0, 0, 0, 0, 0, 52, 0, 0, 0, 70, 0, 0, 70, 70, 70, 70, 0, 0, 0, 70, 0, 70, 70, 0, 0, 0, 0, 72, 0, 0, 0, 0, 24, 0, 24, 0, 0, 70, 0, 0, 0, 210, 70, 0, 340, 0, 341, 141, 70, 0, 70, 144, 145, 141, 141, 0, 70, 151, 152, 153, 0, 105, 0, 0, 105, 0, 105, 0, 105, 0, 0, 156, 0, 0, 158, 159, 160, 161, 162, 163, 105, 165, 0, 167, 169, 0, 0, 0, 0, 0, 0, 39, 0, 39, 179, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, 0, 218, 0, 220, 115, 0, 0, 115, 0, 115, 0, 115, 0, 0, 0, 0, 0, 105, 0, 105, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 0, 0, 0, 247, 0, 0, 0, 0, 0, 0, 52, 0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 0, 24, 24, 24, 24, 0, 24, 24, 115, 269, 115, 0, 273, 275, 0, 0, 0, 0, 278, 59, 279, 24, 24, 24, 24, 0, 141, 0, 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 0, 24, 24, 24, 24, 24, 0, 24, 0, 0, 24, 24, 24, 0, 303, 304, 13, 0, 0, 33, 0, 34, 59, 14, 0, 59, 0, 0, 59, 0, 319, 0, 0, 105, 0, 108, 0, 0, 52, 59, 59, 0, 0, 0, 59, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 332, 0, 0, 105, 105, 105, 105, 105, 105, 105, 105, 59, 105, 105, 105, 105, 0, 105, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 105, 105, 105, 12, 0, 198, 0, 115, 59, 105, 105, 105, 105, 105, 105, 105, 0, 105, 105, 105, 105, 105, 0, 105, 0, 0, 105, 105, 105, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 115, 115, 115, 115, 115, 115, 115, 115, 108, 115, 115, 115, 115, 0, 115, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 115, 115, 115, 0, 0, 0, 0, 0, 0, 115, 115, 115, 115, 115, 115, 115, 0, 115, 115, 115, 115, 115, 0, 115, 0, 0, 115, 115, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 33, 12, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 59, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 59, 0, 0, 0, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 59, 21, 116, 0, 0, 13, 0, 0, 33, 12, 34, 215, 14, 0, 0, 0, 117, 118, 22, 0, 0, 0, 0, 0, 108, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 119, 31, 32, 120, 0, 35, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 211, 0, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 216, 108, 0, 0, 0, 0, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 0, 21, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 106, 30, 119, 31, 32, 120, 0, 35, 0, 0, 36, 37, 38, 12, 0, 236, 0, 0, 0, 0, 0, 0, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 15, 16, 109, 110, 111, 112, 113, 114, 108, 18, 19, 115, 20, 0, 21, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 106, 30, 119, 31, 32, 120, 0, 35, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 250, 0, 0, 0, 0, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 0, 21, 116, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 117, 118, 22, 0, 0, 106, 108, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 119, 31, 32, 120, 0, 35, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 0, 21, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 22, 12, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 119, 31, 32, 120, 0, 35, 0, 0, 36, 37, 38, 106, 0, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 0, 21, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 119, 31, 32, 120, 12, 35, 316, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 33, 106, 34, 0, 14, 0, 0, 0, 286, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 0, 21, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 12, 30, 119, 31, 32, 120, 0, 35, 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, 106, 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, 0, 0, 0, 0, 0, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 0, 21, 116, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 117, 118, 22, 12, 0, 352, 108, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 119, 31, 32, 120, 0, 35, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 305, 0, 114, 0, 0, 114, 0, 114, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 12, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 0, 21, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 119, 31, 32, 120, 0, 35, 0, 0, 36, 37, 38, 114, 0, 114, 0, 0, 0, 106, 0, 0, 0, 18, 0, 0, 18, 0, 18, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 0, 21, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 22, 0, 0, 106, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 119, 31, 32, 120, 0, 35, 18, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 177, 21, 116, 177, 0, 177, 0, 177, 0, 0, 0, 0, 0, 0, 114, 0, 117, 118, 22, 177, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 119, 31, 32, 120, 0, 35, 0, 0, 36, 37, 38, 0, 114, 114, 114, 114, 114, 114, 114, 114, 0, 114, 114, 114, 114, 0, 114, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 114, 114, 0, 0, 0, 0, 177, 0, 0, 114, 114, 114, 114, 114, 114, 114, 0, 114, 114, 114, 114, 114, 0, 114, 0, 0, 114, 114, 114, 0, 18, 67, 135, 0, 33, 134, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, 0, 18, 18, 18, 18, 0, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 0, 18, 18, 18, 18, 18, 78, 18, 0, 0, 18, 18, 18, 67, 0, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 184, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 177, 177, 177, 177, 177, 177, 177, 0, 177, 177, 177, 177, 0, 177, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 177, 177, 67, 314, 78, 33, 134, 34, 0, 177, 177, 177, 177, 177, 177, 177, 0, 177, 177, 177, 177, 177, 0, 177, 0, 89, 177, 177, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 78, 18, 19, 0, 20, 0, 21, 67, 325, 0, 33, 134, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 78, 18, 19, 0, 20, 0, 21, 67, 327, 0, 33, 134, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 67, 0, 78, 33, 134, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 78, 18, 19, 0, 20, 0, 21, 67, 135, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 78, 18, 19, 0, 20, 0, 21, 67, 0, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 234, 0, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 67, 270, 78, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 78, 18, 19, 0, 20, 0, 21, 67, 308, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 78, 18, 19, 0, 20, 0, 21, 67, 310, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 67, 0, 78, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 334, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 78, 18, 19, 0, 20, 0, 21, 67, 339, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 78, 18, 19, 0, 20, 0, 21, 67, 343, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 67, 345, 78, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 89, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 78, 18, 19, 0, 20, 67, 21, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 89, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 78, 0, 0, 18, 19, 0, 20, 91, 21, 0, 91, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 91, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 55, 55, 68, 0, 55, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 55, 55, 0, 0, 0, 55, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 55, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 53, 53, 0, 0, 53, 0, 91, 91, 0, 91, 91, 91, 91, 91, 91, 91, 91, 91, 53, 53, 0, 0, 0, 53, 67, 91, 91, 33, 91, 34, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 91, 91, 91, 91, 91, 91, 91, 0, 91, 0, 91, 91, 0, 0, 91, 0, 0, 91, 91, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 55, 0, 323, 0, 55, 0, 0, 256, 13, 0, 0, 33, 0, 34, 0, 14, 55, 55, 55, 0, 0, 55, 0, 0, 0, 55, 55, 55, 0, 0, 0, 0, 0, 0, 0, 55, 55, 0, 55, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 55, 55, 55, 55, 55, 55, 55, 0, 55, 0, 55, 55, 0, 0, 55, 0, 0, 55, 55, 55, 0, 0, 13, 0, 0, 33, 12, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53, 0, 0, 53, 0, 0, 0, 53, 53, 53, 79, 0, 0, 0, 0, 0, 13, 53, 53, 33, 53, 34, 53, 14, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 184, 0, 0, 0, 53, 0, 18, 19, 0, 20, 0, 21, 53, 53, 53, 53, 53, 53, 53, 0, 53, 0, 53, 53, 0, 0, 53, 0, 22, 53, 53, 53, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 254, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 80, 81, 0, 0, 0, 0, 10, 11, 0, 255, 15, 16, 0, 67, 0, 0, 33, 0, 34, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 256, 0, 0, 0, 0, 22, 17, 18, 19, 0, 20, 0, 21, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 22, 36, 37, 38, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 106, 30, 0, 31, 32, 0, 0, 35, 0, 0, 36, 37, 38, 0, 67, 0, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 111, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 22, 0, 0, 181, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 35, 0, 0, 36, 37, 38, 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 13, 147, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 35, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 13, 254, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 80, 81, 0, 0, 0, 0, 0, 0, 0, 255, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 254, 0, 0, 13, 0, 0, 33, 0, 34, 0, 14, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 255, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 15, 16, 35, 0, 0, 36, 37, 38, 290, 18, 19, 33, 20, 34, 21, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 35, 0, 0, 36, 37, 38, 168, 0, 0, 290, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 217, 35, 0, 0, 36, 37, 38, 0, 0, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 166, 0, 0, 0, 0, 0, 15, 16, 318, 67, 0, 0, 33, 0, 34, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 22, 20, 0, 21, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 22, 0, 35, 0, 0, 36, 37, 38, 23, 24, 25, 26, 27, 28, 29, 0, 30, 168, 31, 32, 0, 0, 204, 0, 0, 36, 37, 38, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 203, 18, 19, 33, 20, 34, 21, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 204, 15, 16, 36, 37, 38, 0, 0, 0, 67, 18, 19, 33, 20, 34, 21, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 204, 0, 0, 36, 37, 38, 290, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 67, 15, 16, 33, 0, 34, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 255, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 22, 20, 0, 21, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 22, 0, 35, 0, 0, 36, 37, 38, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 67, 0, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 22, 18, 19, 0, 20, 0, 21, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 35, 22, 0, 36, 37, 38, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 204, 15, 16, 36, 37, 38, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 15, 16, 204, 0, 0, 36, 37, 38, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 22, 0, 18, 19, 0, 20, 0, 21, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 204, 0, 22, 36, 37, 38, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 138, 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 69, 71, 73, 0, 0, 77, 90, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 90, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 149, 0, 0, 31, 32, 154, 0, 68, 0, 90, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 226, 227, 0, 0, 0, 0, 0, 231, 232, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 90, 90, 0, 0, 0, 0, 230, 90, 90, 90, 0, 0, 90, 0, 90, 90, 90, 90, 90, 90, 0, 90, 0, 90, 260, 90, 0, 0, 0, 0, 0, 266, 267, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 272, 0, 90, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 257, 0, 0, 0, 0, 0, 0, 0, 90, 138, 0, 0, 0, 90, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 315, 0, 0, 0, 0, 90, 0, 90, 0, 0, 0, 0, 0, 0, 208, 0, 208, 0, 208, 208, 208, 298, 299, 300, 208, 326, 328, 0, 0, 90, 0, 0, 0, 90, 0, 90, 0, 0, 90, 90, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 257, 0, 0, 257, 257, 257, 257, 0, 0, 0, 257, 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 208, 90, 0, 0, 0, 0, 0, 90, 0, 90, 0, 0, 0, 0, 0, 257, }; short yycheck[] = { 59, 0, 37, 79, 37, 91, 59, 42, 43, 42, 45, 59, 47, 59, 47, 7, 124, 318, 10, 11, 44, 41, 61, 62, 50, 51, 203, 263, 44, 41, 108, 41, 44, 334, 41, 41, 41, 44, 37, 59, 123, 40, 41, 42, 43, 44, 45, 59, 47, 59, 42, 58, 59, 59, 59, 131, 0, 41, 328, 58, 59, 331, 40, 0, 63, 191, 105, 335, 41, 91, 41, 44, 41, 44, 100, 59, 254, 93, 256, 44, 258, 259, 260, 245, 40, 247, 264, 58, 59, 0, 59, 40, 328, 41, 93, 40, 0, 41, 41, 123, 44, 44, 128, 47, 41, 41, 184, 44, 44, 101, 47, 59, 124, 290, 58, 59, 59, 124, 124, 63, 93, 58, 59, 40, 123, 124, 37, 311, 93, 289, 41, 42, 43, 44, 45, 41, 47, 41, 44, 41, 44, 40, 44, 47, 0, 323, 40, 58, 59, 93, 226, 227, 63, 124, 58, 59, 93, 93, 320, 311, 110, 345, 346, 113, 263, 40, 116, 40, 328, 119, 330, 333, 122, 281, 41, 286, 284, 44, 254, 123, 344, 124, 93, 0, 176, 347, 123, 336, 44, 93, 289, 47, 318, 345, 346, 41, 41, 256, 44, 44, 263, 240, 288, 59, 263, 345, 346, 347, 334, 235, 263, 41, 123, 124, 44, 263, 40, 263, 41, 123, 37, 44, 40, 40, 41, 42, 43, 44, 45, 328, 47, 330, 345, 346, 40, 58, 59, 313, 288, 189, 63, 58, 59, 263, 194, 41, 63, 41, 44, 41, 44, 263, 44, 263, 47, 328, 263, 263, 263, 263, 91, 321, 261, 262, 263, 44, 340, 123, 267, 281, 41, 59, 284, 44, 281, 281, 93, 284, 284, 263, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 263, 41, 263, 263, 44, 40, 297, 298, 299, 124, 301, 329, 303, 263, 123, 124, 41, 344, 281, 344, 311, 284, 306, 263, 41, 261, 262, 263, 263, 320, 35, 41, 261, 262, 263, 288, 0, 328, 329, 330, 331, 332, 333, 334, 280, 336, 281, 338, 339, 284, 41, 342, 41, 344, 345, 346, 347, 41, 261, 262, 263, 297, 0, 41, 267, 261, 262, 263, 297, 0, 123, 205, 59, 41, 41, 59, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 99, 101, 44, 59, 184, -1, 297, 298, 299, 339, 301, -1, 303, 297, 40, -1, -1, 43, -1, 45, 311, 47, -1, -1, -1, 261, 262, 263, -1, 320, -1, -1, -1, 59, -1, -1, 129, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, 124, 344, 345, 346, 347, -1, -1, -1, 263, 297, -1, -1, 261, 262, 263, -1, 124, 291, 267, -1, 294, 295, 296, 297, 279, 280, 281, 301, -1, 284, 279, 280, 281, 282, 283, 284, 285, 88, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, 41, 205, -1, 44, 204, 111, -1, 311, 0, 338, -1, -1, -1, -1, -1, -1, 320, 58, 59, -1, -1, -1, 63, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, 344, 345, 346, 347, -1, 37, -1, -1, 40, 41, 42, 43, 44, 45, 254, 47, 256, -1, 258, 259, 260, -1, -1, -1, 264, -1, 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, 41, -1, -1, 44, -1, -1, 124, 263, 191, -1, 291, -1, -1, 294, 295, 296, 297, 58, 59, 0, 301, -1, 63, 263, 93, 281, -1, -1, 284, -1, -1, -1, 263, -1, -1, -1, 219, -1, -1, -1, -1, 281, -1, -1, 284, -1, 323, -1, 231, -1, -1, 261, 262, 263, 123, 124, 37, 338, 289, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 58, 59, 289, 290, -1, 63, 124, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, 328, 329, 330, 283, -1, -1, 334, 286, -1, -1, 289, -1, -1, 320, -1, 93, 0, -1, -1, 347, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, 321, 289, -1, -1, 123, 124, -1, 263, 328, 329, 330, -1, 37, -1, 334, 40, 41, 42, 43, 44, 45, -1, 47, -1, 280, 281, -1, 347, 284, -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, -1, 328, 329, 330, -1, -1, -1, 334, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, 347, 267, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 263, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 123, 124, 279, 280, 281, -1, 311, 284, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 261, 262, 263, -1, 0, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, 336, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 40, -1, -1, 43, -1, 45, 311, 47, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, 59, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, 124, 267, 126, 127, -1, -1, 130, -1, 132, 133, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, 311, 0, -1, -1, -1, -1, -1, -1, 177, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, 202, 345, 346, 347, -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, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, 123, 124, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 289, 290, -1, 63, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, -1, -1, 320, -1, 93, 0, -1, 354, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, 123, 124, -1, -1, -1, -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, -1, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 123, 124, -1, -1, -1, -1, 311, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 261, 262, 263, -1, 0, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 40, -1, -1, 43, -1, 45, 311, 47, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, 123, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, 311, 0, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -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, 261, 262, -1, 123, 124, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 289, 290, -1, 63, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, 93, 0, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, 123, 124, -1, -1, -1, -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, -1, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 123, 124, -1, -1, -1, -1, 311, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, 311, 40, 41, -1, 43, -1, 45, -1, 47, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, 344, -1, -1, 347, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, 0, -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, 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, 44, 58, 59, 47, -1, -1, 63, -1, -1, -1, -1, -1, 289, 290, 58, 59, -1, -1, -1, 63, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 0, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, 93, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, 123, 124, 345, 346, 347, -1, -1, -1, -1, -1, -1, 40, 41, 123, 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, -1, -1, -1, 261, 262, 263, -1, -1, -1, 267, -1, 0, -1, -1, -1, -1, 93, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, 123, 124, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, 344, -1, -1, 347, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, 279, 280, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 123, -1, -1, -1, -1, 297, 311, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 0, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 336, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, 40, 41, -1, -1, 44, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 58, 59, -1, -1, -1, 63, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, 311, -1, -1, -1, -1, -1, -1, -1, -1, 320, 0, -1, -1, -1, -1, 93, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 261, 262, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, 40, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, 58, 59, -1, -1, -1, 63, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, 93, 0, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -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, -1, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 123, 124, -1, -1, -1, 40, 311, -1, 43, -1, 45, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, 124, -1, -1, -1, -1, 311, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 0, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, 40, 41, -1, -1, 44, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 58, 59, -1, -1, -1, 63, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, 0, -1, -1, -1, -1, 93, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, 267, 123, 124, 37, -1, -1, 40, 41, 42, 43, 44, 45, 279, 47, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 58, 59, -1, -1, -1, 63, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, 93, 0, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 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, -1, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 261, 262, 263, -1, 0, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 40, 41, -1, 43, 44, 45, 311, 47, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, 331, 332, 333, -1, -1, 336, -1, 338, 339, -1, -1, 342, -1, 344, 345, 346, -1, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, 93, 0, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, -1, 290, -1, -1, 0, 123, 124, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, 41, -1, -1, 44, -1, -1, 47, 0, -1, -1, -1, -1, -1, -1, 320, -1, -1, 58, 59, -1, 0, -1, 63, -1, -1, 331, 332, 333, 41, -1, 336, 44, 338, 339, 47, -1, 342, -1, -1, 345, 346, -1, -1, -1, -1, 58, 59, -1, 41, 0, 63, 44, 93, -1, 47, -1, -1, -1, -1, -1, -1, 41, -1, -1, 44, 58, 59, 47, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, 58, 59, 93, -1, 123, 63, -1, -1, -1, -1, -1, -1, 41, -1, -1, 44, -1, -1, 47, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, 58, 59, -1, 123, -1, 63, 93, -1, 37, -1, -1, 40, -1, 42, 43, -1, 45, -1, 47, 261, 262, 263, -1, 123, -1, 267, -1, -1, -1, -1, 59, -1, -1, -1, 63, 93, 123, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, 0, 301, -1, 303, -1, -1, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 124, 338, 339, -1, 41, 342, -1, 44, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, -1, 40, -1, 297, 43, 93, 45, -1, 47, -1, -1, -1, -1, 279, 280, 261, 262, 263, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, 297, -1, 279, 280, 123, -1, -1, -1, -1, -1, -1, 336, -1, -1, -1, 279, 280, -1, -1, -1, 297, -1, -1, -1, -1, -1, 261, 262, 263, 40, -1, -1, 43, 297, 45, -1, 47, -1, -1, 336, -1, -1, -1, -1, 279, 280, -1, -1, 59, -1, -1, -1, -1, 123, -1, 125, -1, -1, -1, 336, -1, 267, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, 336, 279, 280, -1, 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, 336, -1, -1, -1, 311, -1, -1, -1, -1, -1, -1, 123, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, 344, 345, 346, 347, 261, 262, 263, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, 279, 280, -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 336, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, 124, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, 318, 319, 320, 321, 263, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, 33, 34, -1, 36, 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, -1, -1, 52, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, 279, 280, 281, 68, -1, 284, -1, 72, -1, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, 93, 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, 121, 336, -1, 338, 339, -1, -1, 342, 129, 344, -1, -1, 347, -1, -1, -1, -1, -1, -1, -1, 141, -1, -1, 144, 145, -1, -1, -1, -1, 150, 151, 152, 153, -1, 155, 156, -1, 158, 159, 160, 161, 162, 163, -1, 165, -1, 167, -1, 169, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, 189, -1, -1, -1, -1, 194, -1, -1, -1, -1, -1, -1, -1, -1, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, 245, -1, 247, -1, -1, 59, -1, -1, -1, 254, -1, 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, -1, -1, -1, 273, -1, 275, -1, -1, 278, 279, -1, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, 291, -1, -1, 294, 295, 296, 297, -1, -1, -1, 301, -1, 303, 304, -1, -1, -1, -1, 35, -1, -1, -1, -1, 123, -1, 125, -1, -1, 319, -1, -1, -1, 323, 324, -1, 326, -1, 328, 55, 330, -1, 332, 59, 60, 61, 62, -1, 338, 65, 66, 67, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, 79, -1, -1, 82, 83, 84, 85, 86, 87, 59, 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, -1, 101, 102, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, -1, 136, -1, 138, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, 123, -1, 125, -1, -1, -1, 59, -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, -1, -1, 192, -1, -1, -1, 196, -1, -1, -1, -1, -1, -1, 203, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, 123, 223, 125, -1, 226, 227, -1, -1, -1, -1, 232, 0, 234, 318, 319, 320, 321, -1, 240, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, -1, 266, 267, 40, -1, -1, 43, -1, 45, 41, 47, -1, 44, -1, -1, 47, -1, 282, -1, -1, 256, -1, 59, -1, -1, 290, 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, 302, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, 315, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, 93, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, 321, 123, -1, 125, -1, 256, 123, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, 59, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, 321, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, 123, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, 297, 303, 304, -1, -1, 40, -1, -1, 43, 123, 45, 125, 47, -1, -1, -1, 318, 319, 320, -1, -1, -1, -1, -1, 59, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, 263, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, 123, -1, 125, 59, -1, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, 256, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, 123, -1, 125, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, 59, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, 256, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, -1, 125, -1, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, 318, 319, 320, -1, -1, 256, 59, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, 123, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, 256, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 123, 342, 125, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, 256, 45, -1, 47, -1, -1, -1, 263, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, 123, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, 318, 319, 320, 123, -1, 125, 59, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, 263, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, 123, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, 123, -1, 125, -1, -1, -1, 256, -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, -1, -1, -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, -1, -1, 256, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, 123, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, 40, 303, 304, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, 256, -1, 318, 319, 320, 59, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, -1, -1, -1, -1, 123, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, -1, 345, 346, 347, -1, 256, 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 124, 342, -1, -1, 345, 346, 347, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, 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, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, 40, 41, 124, 43, 44, 45, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, -1, 63, 345, 346, 347, -1, -1, -1, -1, -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, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 124, 298, 299, -1, 301, -1, 303, 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 124, 298, 299, -1, 301, -1, 303, 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, 40, -1, 124, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 124, 298, 299, -1, 301, -1, 303, 40, 41, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 124, 298, 299, -1, 301, -1, 303, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, 58, -1, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, 40, 41, 124, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 124, 298, 299, -1, 301, -1, 303, 40, 41, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 124, 298, 299, -1, 301, -1, 303, 40, 41, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, 40, -1, 124, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, 59, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 124, 298, 299, -1, 301, -1, 303, 40, 41, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 124, 298, 299, -1, 301, -1, 303, 40, 41, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, 40, 41, 124, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 124, 298, 299, -1, 301, 40, 303, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, 63, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, 124, -1, -1, 298, 299, -1, 301, 40, 303, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, 63, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, 40, 41, 342, -1, 44, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, 124, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, 40, 41, -1, -1, 44, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 58, 59, -1, -1, -1, 63, 40, 298, 299, 43, 301, 45, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, 263, -1, 58, -1, 267, -1, -1, 63, 40, -1, -1, 43, -1, 45, -1, 47, 279, 280, 281, -1, -1, 284, -1, -1, -1, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, 40, -1, -1, 43, 123, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, -1, -1, 284, -1, -1, -1, 288, 289, 290, 267, -1, -1, -1, -1, -1, 40, 298, 299, 43, 301, 45, 303, 47, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, 59, -1, -1, -1, 320, -1, 298, 299, -1, 301, -1, 303, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, 320, 345, 346, 347, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 267, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 279, 280, -1, -1, -1, -1, 261, 262, -1, 288, 289, 290, -1, 40, -1, -1, 43, -1, 45, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, 63, -1, -1, -1, -1, 320, 297, 298, 299, -1, 301, -1, 303, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, 320, 345, 346, 347, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, 256, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, -1, -1, 293, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, 319, 320, -1, -1, 263, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, 40, 41, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, 40, 267, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, 279, 280, -1, -1, -1, -1, -1, -1, -1, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, 267, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, 279, -1, -1, -1, -1, -1, -1, -1, -1, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, 40, -1, -1, 43, -1, 45, -1, 47, -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, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, 289, 290, 342, -1, -1, 345, 346, 347, 40, 298, 299, 43, 301, 45, 303, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, 263, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, 263, 342, -1, -1, 345, 346, 347, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, 263, -1, -1, -1, -1, -1, 289, 290, 59, 40, -1, -1, 43, -1, 45, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, 320, 301, -1, 303, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, 320, -1, 342, -1, -1, 345, 346, 347, 328, 329, 330, 331, 332, 333, 334, -1, 336, 263, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, 289, 290, -1, -1, -1, -1, -1, -1, 40, 298, 299, 43, 301, 45, 303, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, 289, 290, 345, 346, 347, -1, -1, -1, 40, 298, 299, 43, 301, 45, 303, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, 40, 289, 290, 43, -1, 45, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, 320, 301, -1, 303, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, 320, -1, 342, -1, -1, 345, 346, 347, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, -1, -1, -1, -1, -1, -1, 320, 298, 299, -1, 301, -1, 303, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, 320, -1, 345, 346, 347, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, 289, 290, 345, 346, 347, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, 289, 290, 342, -1, -1, 345, 346, 347, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, -1, -1, -1, -1, -1, 320, -1, 298, 299, -1, 301, -1, 303, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, 320, 345, 346, 347, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, 53, -1, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, 33, 34, 35, -1, -1, 38, 39, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, 52, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, 63, -1, -1, 338, 339, 68, -1, 342, -1, 72, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, -1, -1, 144, 145, -1, -1, -1, -1, -1, 151, 152, -1, -1, -1, -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, 129, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 141, -1, -1, 144, 145, -1, -1, -1, -1, 150, 151, 152, 153, -1, -1, 156, -1, 158, 159, 160, 161, 162, 163, -1, 165, -1, 167, 206, 169, -1, -1, -1, -1, -1, 213, 214, -1, -1, 179, -1, -1, -1, -1, -1, -1, -1, 225, -1, 189, -1, -1, -1, -1, 194, -1, -1, -1, -1, -1, -1, -1, -1, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, 252, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 277, 278, -1, -1, -1, -1, 245, -1, 247, -1, -1, -1, -1, -1, -1, 254, -1, 256, -1, 258, 259, 260, 261, 262, 263, 264, 303, 304, -1, -1, 269, -1, -1, -1, 273, -1, 275, -1, -1, 278, 279, -1, -1, -1, -1, 322, -1, -1, -1, -1, -1, -1, 291, -1, -1, 294, 295, 296, 297, -1, -1, -1, 301, -1, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 319, -1, -1, -1, 323, 324, -1, -1, -1, -1, -1, 330, -1, 332, -1, -1, -1, -1, -1, 338, }; #define YYFINAL 4 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 348 #if YYDEBUG char *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","MCHAR","OR","STAR","QUEST","PLUS","AND","BOR","APPEND", "EQ","GE","GT","LE","LT","NE","IN","ARG","BLTIN","BREAK","CONTINUE","DELETE", "DO","EXIT","FOR","FUNC","SUB","GSUB","IF","INDEX","LSUBSTR","MATCHFCN","NEXT", "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","FIELD","REGEXPR","GETLINE","RETURN","SPLIT","SUBSTR","WHILE","CAT", "NOT","UMINUS","POWER","DECR","INCR","INDIRECT","LASTTOKEN", }; char *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", "for : FOR '(' opt_simple_stmt ';' pattern ';' opt_simple_stmt rparen stmt", "for : FOR '(' opt_simple_stmt ';' ';' opt_simple_stmt rparen stmt", "for : FOR '(' varname IN varname rparen 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 ',' pa_pat", "pa_stat : pa_pat ',' pa_pat lbrace stmtlist '}'", "pa_stat : lbrace stmtlist '}'", "pa_stat : XBEGIN lbrace stmtlist '}'", "pa_stat : XEND lbrace stmtlist '}'", "$$1 :", "pa_stat : FUNC funcname '(' varlist rparen $$1 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 : NOT 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", "$$2 :", "reg_expr : '/' $$2 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", "stmt : do stmt 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 : RETURN pattern st", "stmt : RETURN st", "stmt : simple_stmt st", "stmt : while stmt", "stmt : ';' opt_nl", "stmtlist : stmt", "stmtlist : stmtlist stmt", "subop : SUB", "subop : GSUB", "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 : 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 : FIELD", "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 int yydebug; int yynerrs; int yyerrflag; int yychar; short *yyssp; YYSTYPE *yyvsp; YYSTYPE yyval; YYSTYPE yylval; short *yyss; short *yysslim; YYSTYPE *yyvs; int yystacksize; #line 438 "awk.g.y" static void setfname(Cell *p) { if (isarr(p)) vyyerror(":99:%s is an array, not a function", p->nval); else if (isfunc(p)) vyyerror(":100:You cannot define function %s more than once", p->nval); curfname = p->nval; } static int constnode(Node *p) { return p->ntype == NVALUE && ((Cell *) (p->narg[0]))->csub == CCON; } static unsigned char *strnode(Node *p) { return ((Cell *)(p->narg[0]))->sval; } static 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); } } #line 2423 "y.tab.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ int yyparse __P((void)); static int yygrowstack __P((void)); static int yygrowstack() { int newsize, i; short *newss; YYSTYPE *newvs; if ((newsize = yystacksize) == 0) newsize = YYINITSTACKSIZE; else if (newsize >= YYMAXDEPTH) return -1; else if ((newsize *= 2) > YYMAXDEPTH) newsize = YYMAXDEPTH; i = yyssp - yyss; if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL) return -1; yyss = newss; yyssp = newss + i; if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL) return -1; yyvs = newvs; yyvsp = newvs + i; yystacksize = newsize; yysslim = yyss + newsize - 1; return 0; } #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int yyparse() { int yym, yyn, yystate; #if YYDEBUG char *yys; if ((yys = getenv("YYDEBUG")) != NULL) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif 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; goto yynewerror; yynewerror: yyerror("syntax error"); goto yyerrlab; 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]; yyval = yyvsp[1-yym]; switch (yyn) { case 1: #line 107 "awk.g.y" { if (errorflag==0) winner = (Node *)stat3(PROGRAM, beginloc, yyvsp[0].p, endloc); } break; case 2: #line 109 "awk.g.y" { yyclearin; bracecheck(); vyyerror(":95:Bailing out"); } break; case 9: #line 125 "awk.g.y" { } break; case 11: #line 129 "awk.g.y" { } break; case 13: #line 134 "awk.g.y" { yyval.p = stat4(FOR, yyvsp[-6].p, notnull(yyvsp[-4].p), yyvsp[-2].p, yyvsp[0].p); } break; case 14: #line 136 "awk.g.y" { yyval.p = stat4(FOR, yyvsp[-5].p, NIL, yyvsp[-2].p, yyvsp[0].p); } break; case 15: #line 138 "awk.g.y" { yyval.p = stat3(IN, yyvsp[-4].p, makearr(yyvsp[-2].p), yyvsp[0].p); } break; case 16: #line 142 "awk.g.y" { setfname(yyvsp[0].cp); } break; case 17: #line 143 "awk.g.y" { setfname(yyvsp[0].cp); } break; case 18: #line 147 "awk.g.y" { yyval.p = notnull(yyvsp[-1].p); } break; case 23: #line 159 "awk.g.y" { yyval.i = 0; } break; case 25: #line 164 "awk.g.y" { yyval.i = 0; } break; case 27: #line 170 "awk.g.y" { yyval.p = 0; } break; case 29: #line 175 "awk.g.y" { yyval.p = 0; } break; case 30: #line 176 "awk.g.y" { yyval.p = yyvsp[-1].p; } break; case 31: #line 180 "awk.g.y" { yyval.p = notnull(yyvsp[0].p); } break; case 32: #line 184 "awk.g.y" { yyval.p = stat2(PASTAT, yyvsp[0].p, stat2(PRINT, rectonode(), NIL)); } break; case 33: #line 185 "awk.g.y" { yyval.p = stat2(PASTAT, yyvsp[-3].p, yyvsp[-1].p); } break; case 34: #line 186 "awk.g.y" { yyval.p = pa2stat(yyvsp[-2].p, yyvsp[0].p, stat2(PRINT, rectonode(), NIL)); } break; case 35: #line 187 "awk.g.y" { yyval.p = pa2stat(yyvsp[-5].p, yyvsp[-3].p, yyvsp[-1].p); } break; case 36: #line 188 "awk.g.y" { yyval.p = stat2(PASTAT, NIL, yyvsp[-1].p); } break; case 37: #line 190 "awk.g.y" { beginloc = linkum(beginloc, yyvsp[-1].p); yyval.p = 0; } break; case 38: #line 192 "awk.g.y" { endloc = linkum(endloc, yyvsp[-1].p); yyval.p = 0; } break; case 39: #line 193 "awk.g.y" {infunc++;} break; case 40: #line 194 "awk.g.y" { infunc--; curfname=0; defn((Cell *)yyvsp[-7].p, yyvsp[-5].p, yyvsp[-1].p); yyval.p = 0; } break; case 42: #line 199 "awk.g.y" { yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); } break; case 44: #line 204 "awk.g.y" { yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); } break; case 45: #line 208 "awk.g.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 46: #line 210 "awk.g.y" { yyval.p = op3(CONDEXPR, notnull(yyvsp[-4].p), yyvsp[-2].p, yyvsp[0].p); } break; case 47: #line 212 "awk.g.y" { yyval.p = op2(BOR, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); } break; case 48: #line 214 "awk.g.y" { yyval.p = op2(AND, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); } break; case 49: #line 215 "awk.g.y" { yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(yyvsp[0].s, 0)); } break; case 50: #line 217 "awk.g.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 51: #line 221 "awk.g.y" { yyval.p = op2(INTEST, yyvsp[-2].p, makearr(yyvsp[0].p)); } break; case 52: #line 222 "awk.g.y" { yyval.p = op2(INTEST, yyvsp[-3].p, makearr(yyvsp[0].p)); } break; case 53: #line 223 "awk.g.y" { yyval.p = op2(CAT, yyvsp[-1].p, yyvsp[0].p); } break; case 56: #line 229 "awk.g.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 57: #line 231 "awk.g.y" { yyval.p = op3(CONDEXPR, notnull(yyvsp[-4].p), yyvsp[-2].p, yyvsp[0].p); } break; case 58: #line 233 "awk.g.y" { yyval.p = op2(BOR, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); } break; case 59: #line 235 "awk.g.y" { yyval.p = op2(AND, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); } break; case 60: #line 237 "awk.g.y" { yyval.p = op1(NOT, op2(NE,yyvsp[0].p,valtonode(lookup("$zero&null",symtab),CCON))); } break; case 61: #line 238 "awk.g.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 62: #line 239 "awk.g.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 63: #line 240 "awk.g.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 64: #line 241 "awk.g.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 65: #line 242 "awk.g.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 66: #line 243 "awk.g.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 67: #line 244 "awk.g.y" { yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(yyvsp[0].s, 0)); } break; case 68: #line 246 "awk.g.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 69: #line 250 "awk.g.y" { yyval.p = op2(INTEST, yyvsp[-2].p, makearr(yyvsp[0].p)); } break; case 70: #line 251 "awk.g.y" { yyval.p = op2(INTEST, yyvsp[-3].p, makearr(yyvsp[0].p)); } break; case 71: #line 252 "awk.g.y" { yyval.p = op3(GETLINE, yyvsp[0].p, (Node*)yyvsp[-2].i, yyvsp[-3].p); } break; case 72: #line 253 "awk.g.y" { yyval.p = op3(GETLINE, (Node*)0, (Node*)yyvsp[-1].i, yyvsp[-2].p); } break; case 73: #line 254 "awk.g.y" { yyval.p = op2(CAT, yyvsp[-1].p, yyvsp[0].p); } break; case 76: #line 260 "awk.g.y" { yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); } break; case 77: #line 261 "awk.g.y" { yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); } break; case 79: #line 266 "awk.g.y" { yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); } break; case 80: #line 270 "awk.g.y" { yyval.p = rectonode(); } break; case 82: #line 272 "awk.g.y" { yyval.p = yyvsp[-1].p; } break; case 89: #line 284 "awk.g.y" { } break; case 91: #line 289 "awk.g.y" { yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yyvsp[0].s,0)); } break; case 92: #line 290 "awk.g.y" {yyval.p = op1(NOT, notnull(yyvsp[0].p)); } break; case 93: #line 294 "awk.g.y" {startreg();} break; case 94: #line 294 "awk.g.y" { yyval.s = yyvsp[-1].s; } break; case 97: #line 302 "awk.g.y" { yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, (Node *) yyvsp[-1].i, yyvsp[0].p); } break; case 98: #line 303 "awk.g.y" { yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, (Node *) yyvsp[-1].i, yyvsp[0].p); } break; case 99: #line 304 "awk.g.y" { yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, (Node *) yyvsp[-1].i, yyvsp[0].p); } break; case 100: #line 305 "awk.g.y" { yyval.p = stat3(yyvsp[-1].i, yyvsp[0].p, NIL, NIL); } break; case 101: #line 306 "awk.g.y" { yyval.p = stat2(DELETE, makearr(yyvsp[-3].p), yyvsp[-1].p); } break; case 102: #line 307 "awk.g.y" { yyclearin; vyyerror(":96:You can only delete array[element]"); yyval.p = stat1(DELETE, yyvsp[0].p); } break; case 103: #line 308 "awk.g.y" { yyval.p = exptostat(yyvsp[0].p); } break; case 104: #line 309 "awk.g.y" { yyclearin; vyyerror(illstat); } break; case 105: #line 313 "awk.g.y" { } break; case 106: #line 313 "awk.g.y" { } break; case 107: #line 317 "awk.g.y" { yyval.p = stat1(BREAK, NIL); } break; case 108: #line 318 "awk.g.y" { yyval.p = stat1(CONTINUE, NIL); } break; case 109: #line 320 "awk.g.y" { yyval.p = stat2(DO, yyvsp[-5].p, notnull(yyvsp[-2].p)); } break; case 110: #line 321 "awk.g.y" { yyval.p = stat1(EXIT, yyvsp[-1].p); } break; case 111: #line 322 "awk.g.y" { yyval.p = stat1(EXIT, NIL); } break; case 113: #line 324 "awk.g.y" { yyval.p = stat3(IF, yyvsp[-3].p, yyvsp[-2].p, yyvsp[0].p); } break; case 114: #line 325 "awk.g.y" { yyval.p = stat3(IF, yyvsp[-1].p, yyvsp[0].p, NIL); } break; case 115: #line 326 "awk.g.y" { yyval.p = yyvsp[-1].p; } break; case 116: #line 327 "awk.g.y" { if (infunc) vyyerror(":97:Next is illegal inside a function"); yyval.p = stat1(NEXT, NIL); } break; case 117: #line 330 "awk.g.y" { yyval.p = stat1(RETURN, yyvsp[-1].p); } break; case 118: #line 331 "awk.g.y" { yyval.p = stat1(RETURN, NIL); } break; case 120: #line 333 "awk.g.y" { yyval.p = stat2(WHILE, yyvsp[-1].p, yyvsp[0].p); } break; case 121: #line 334 "awk.g.y" { yyval.p = 0; } break; case 123: #line 339 "awk.g.y" { yyval.p = linkum(yyvsp[-1].p, yyvsp[0].p); } break; case 126: #line 347 "awk.g.y" { yyval.p = op2(ADD, yyvsp[-2].p, yyvsp[0].p); } break; case 127: #line 348 "awk.g.y" { yyval.p = op2(MINUS, yyvsp[-2].p, yyvsp[0].p); } break; case 128: #line 349 "awk.g.y" { yyval.p = op2(MULT, yyvsp[-2].p, yyvsp[0].p); } break; case 129: #line 350 "awk.g.y" { yyval.p = op2(DIVIDE, yyvsp[-2].p, yyvsp[0].p); } break; case 130: #line 351 "awk.g.y" { yyval.p = op2(MOD, yyvsp[-2].p, yyvsp[0].p); } break; case 131: #line 352 "awk.g.y" { yyval.p = op2(POWER, yyvsp[-2].p, yyvsp[0].p); } break; case 132: #line 353 "awk.g.y" { yyval.p = op1(UMINUS, yyvsp[0].p); } break; case 133: #line 354 "awk.g.y" { yyval.p = yyvsp[0].p; } break; case 134: #line 355 "awk.g.y" { yyval.p = op1(NOT, notnull(yyvsp[0].p)); } break; case 135: #line 356 "awk.g.y" { yyval.p = op2(BLTIN, (Node *) yyvsp[-2].i, rectonode()); } break; case 136: #line 357 "awk.g.y" { yyval.p = op2(BLTIN, (Node *) yyvsp[-3].i, yyvsp[-1].p); } break; case 137: #line 358 "awk.g.y" { yyval.p = op2(BLTIN, (Node *) yyvsp[0].i, rectonode()); } break; case 138: #line 359 "awk.g.y" { yyval.p = op2(CALL, valtonode(yyvsp[-2].cp,CVAR), NIL); } break; case 139: #line 360 "awk.g.y" { yyval.p = op2(CALL, valtonode(yyvsp[-3].cp,CVAR), yyvsp[-1].p); } break; case 140: #line 361 "awk.g.y" { yyval.p = op1(PREDECR, yyvsp[0].p); } break; case 141: #line 362 "awk.g.y" { yyval.p = op1(PREINCR, yyvsp[0].p); } break; case 142: #line 363 "awk.g.y" { yyval.p = op1(POSTDECR, yyvsp[-1].p); } break; case 143: #line 364 "awk.g.y" { yyval.p = op1(POSTINCR, yyvsp[-1].p); } break; case 144: #line 365 "awk.g.y" { yyval.p = op3(GETLINE, yyvsp[-2].p, (Node *)yyvsp[-1].i, yyvsp[0].p); } break; case 145: #line 366 "awk.g.y" { yyval.p = op3(GETLINE, NIL, (Node *)yyvsp[-1].i, yyvsp[0].p); } break; case 146: #line 367 "awk.g.y" { yyval.p = op3(GETLINE, yyvsp[0].p, NIL, NIL); } break; case 147: #line 368 "awk.g.y" { yyval.p = op3(GETLINE, NIL, NIL, NIL); } break; case 148: #line 370 "awk.g.y" { yyval.p = op2(INDEX, yyvsp[-3].p, yyvsp[-1].p); } break; case 149: #line 372 "awk.g.y" { vyyerror(":98:Index() doesn't permit regular expressions"); yyval.p = op2(INDEX, yyvsp[-3].p, (Node*)yyvsp[-1].s); } break; case 150: #line 374 "awk.g.y" { yyval.p = yyvsp[-1].p; } break; case 151: #line 376 "awk.g.y" { yyval.p = op3(MATCHFCN, NIL, yyvsp[-3].p, (Node*)makedfa(yyvsp[-1].s, 1)); } break; case 152: #line 378 "awk.g.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 153: #line 382 "awk.g.y" { yyval.p = valtonode(yyvsp[0].cp, CCON); } break; case 154: #line 384 "awk.g.y" { yyval.p = op4(SPLIT, yyvsp[-5].p, makearr(yyvsp[-3].p), yyvsp[-1].p, (Node*)STRING); } break; case 155: #line 386 "awk.g.y" { yyval.p = op4(SPLIT, yyvsp[-5].p, makearr(yyvsp[-3].p), (Node*)makedfa(yyvsp[-1].s, 1), (Node *)REGEXPR); } break; case 156: #line 388 "awk.g.y" { yyval.p = op4(SPLIT, yyvsp[-3].p, makearr(yyvsp[-1].p), NIL, (Node*)STRING); } break; case 157: #line 389 "awk.g.y" { yyval.p = op1(yyvsp[-3].i, yyvsp[-1].p); } break; case 158: #line 390 "awk.g.y" { yyval.p = valtonode(yyvsp[0].cp, CCON); } break; case 159: #line 392 "awk.g.y" { yyval.p = op4(yyvsp[-5].i, NIL, (Node*)makedfa(yyvsp[-3].s, 1), yyvsp[-1].p, rectonode()); } break; case 160: #line 394 "awk.g.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 161: #line 399 "awk.g.y" { yyval.p = op4(yyvsp[-7].i, NIL, (Node*)makedfa(yyvsp[-5].s, 1), yyvsp[-3].p, yyvsp[-1].p); } break; case 162: #line 401 "awk.g.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 163: #line 406 "awk.g.y" { yyval.p = op3(SUBSTR, yyvsp[-5].p, yyvsp[-3].p, yyvsp[-1].p); } break; case 164: #line 408 "awk.g.y" { yyval.p = op3(SUBSTR, yyvsp[-3].p, yyvsp[-1].p, NIL); } break; case 167: #line 414 "awk.g.y" { yyval.p = op2(ARRAY, makearr(yyvsp[-3].p), yyvsp[-1].p); } break; case 168: #line 415 "awk.g.y" { yyval.p = valtonode(yyvsp[0].cp, CFLD); } break; case 169: #line 416 "awk.g.y" { yyval.p = op1(INDIRECT, valtonode(yyvsp[0].cp, CVAR)); } break; case 170: #line 417 "awk.g.y" { yyval.p = op1(INDIRECT, yyvsp[0].p); } break; case 171: #line 421 "awk.g.y" { arglist = yyval.p = 0; } break; case 172: #line 422 "awk.g.y" { arglist = yyval.p = valtonode(yyvsp[0].cp,CVAR); } break; case 173: #line 423 "awk.g.y" { arglist = yyval.p = linkum(yyvsp[-2].p,valtonode(yyvsp[0].cp,CVAR)); } break; case 174: #line 427 "awk.g.y" { yyval.p = valtonode(yyvsp[0].cp, CVAR); } break; case 175: #line 428 "awk.g.y" { yyval.p = op1(ARG, (Node *) yyvsp[0].i); } break; case 176: #line 429 "awk.g.y" { yyval.p = op1(VARNF, (Node *) yyvsp[0].cp); } break; case 177: #line 434 "awk.g.y" { yyval.p = notnull(yyvsp[-1].p); } break; #line 3160 "y.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: return (1); yyaccept: return (0); }