#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.2001.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.2001.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, 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, 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, 3, 5, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 3, 2, 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, 1, 4, 1, 1, 2, 0, 1, 3, 1, 1, 1, 4, }; short yydefred[] = { 0, 2, 83, 84, 0, 1, 0, 0, 85, 86, 0, 0, 19, 0, 91, 174, 0, 0, 122, 123, 0, 0, 0, 173, 168, 175, 0, 151, 156, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 41, 0, 89, 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, 90, 138, 139, 169, 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, 140, 141, 0, 102, 20, 0, 0, 0, 0, 9, 0, 0, 0, 0, 81, 82, 0, 0, 0, 0, 120, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 7, 148, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 4, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 21, 0, 119, 0, 0, 105, 106, 0, 0, 109, 0, 0, 114, 0, 116, 0, 117, 36, 121, 0, 118, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 37, 38, 8, 0, 0, 0, 92, 134, 0, 171, 0, 0, 0, 155, 137, 0, 0, 0, 70, 0, 0, 33, 166, 22, 104, 0, 108, 28, 0, 0, 0, 115, 0, 11, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 111, 88, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 172, 146, 147, 150, 149, 154, 0, 162, 0, 35, 99, 0, 0, 0, 0, 0, 0, 0, 158, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 152, 153, 161, 0, 0, 15, 107, 160, 159, 40, 14, 0, 13, }; short yydgoto[] = { 4, 5, 121, 204, 53, 205, 142, 206, 40, 41, 42, 43, 44, 45, 122, 241, 123, 124, 46, 47, 58, 223, 125, 126, 127, 6, 7, 128, 268, 221, 185, 183, 91, 92, 49, 129, 130, 247, 303, 249, 54, 186, }; short yysindex[] = { -46, 0, 0, 0, 0, 0, -54, 7593, 0, 0, -84, -84, 0, 8477, 0, 0, 44, -270, 0, 0, 55, 59, 64, 0, 0, 0, 68, 0, 0, 0, 571, 76, 78, 8554, 8554, 8477, 113, 113, 8554, 7192, -33, 0, -20, 0, -32, 0, -224, 53, 4328, 110, 4328, 4328, 5866, 37, -155, 7861, 0, 0, 159, 8477, 8477, 8477, 7938, 8554, -86, 8477, 8477, 8477, 8554, -139, -283, -139, -218, -139, 0, 0, 0, 0, -129, 8477, 0, 0, 8477, 8477, 8477, 8477, 8477, 8477, -177, 8477, -33, 7989, 8067, 8554, 8554, 8554, 8554, 8554, 8554, 8477, 4328, 7593, 8477, 0, 0, 8477, 0, 0, -52, -30, -30, -177, 0, 7759, 174, 175, -30, 0, 0, 7759, 176, 7192, -30, 0, 4387, 0, 5553, 5553, 4328, 8605, 4479, 8477, 4704, 4791, 0, 0, 8169, -70, 8169, 172, 0, 7192, 41, -106, 6310, 6310, 97, 0, 118, -33, 8554, 6310, 6310, 6402, -139, 113, 8785, 0, 8785, 8785, 8785, 8785, 8785, 8785, 0, 6488, 0, 4111, 0, 2246, -139, -31, -31, -139, -139, -139, -84, 4850, 0, 7192, -14, 0, -28, 0, -52, -28, 0, 0, 141, 5960, 0, 4593, 8477, 0, 5960, 0, 8477, 0, 0, 0, -83, 0, 4929, 8477, 7364, 199, -107, -33, -200, 0, -96, 6310, 199, 0, 0, 0, 7192, -177, 7192, 0, 0, 8169, 0, 119, 8169, 8169, 0, 0, -33, -193, 8169, 0, 8477, 4328, 0, 0, 0, 0, 8477, 0, 0, 186, -91, 6574, 0, 6574, 0, 5029, 0, -16, 127, 8703, -177, 8703, -33, 8246, 8297, 8375, 8554, 8554, 8554, 8703, 208, 8169, 8169, 0, 7192, 0, -13, -235, 6666, 211, 6752, 214, 128, 6046, 7192, 5116, -10, 8395, -177, -13, -13, 0, 0, 0, -39, 8477, 8785, 0, 0, 7533, 7841, 7674, 7364, -33, -33, -33, 7364, 8477, 6138, 6224, 0, -84, 0, 0, 0, 0, 0, 0, 8169, 0, 8169, 0, 0, 4593, 6838, 219, -177, 132, 8703, 6930, 0, 261, 0, 261, 4328, 7016, 224, 7102, 219, 4593, 5241, 0, -39, 7364, -30, 226, 229, 5341, 0, 0, 0, 5241, 219, 0, 0, 0, 0, 0, 0, 5241, 0, }; short yyrindex[] = { 1342, 0, 0, 0, 0, 0, 1836, 272, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2988, 0, 0, 0, 0, 0, 0, 0, 0, 31, 2806, 0, 354, 0, 1342, 0, 2064, 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, 3339, 1976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 274, 0, 0, 0, 0, 0, 0, 3870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 134, 0, 0, 0, 0, 0, 2479, 0, 0, 0, 0, 677, 3253, 47, 1665, 541, 1035, 1529, 2022, 2941, 3351, 0, 0, 0, 3436, 0, 56, 989, 2158, 2391, 1077, 1171, 1483, 848, 0, 0, 98, 0, 0, 3929, 0, 3870, 4016, 0, 0, -26, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 5428, 0, 0, 0, 410, 551, -9, 7269, 3748, 0, 0, 0, 3613, 0, 0, 0, 152, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3424, 0, 0, 0, 0, 0, 0, 4241, 0, 0, 0, 0, 7445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 156, 0, 0, 3613, 0, 3613, 0, 0, 143, 0, 0, 0, 0, 5649, 5736, 0, 0, 0, 555, 0, 689, 3520, 0, 0, -23, 447, 448, -4, 8, 10, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3613, 0, 0, 236, 0, 0, 0, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; short yygindex[] = { 0, 0, 9328, 488, -195, 0, 15, 0, 9443, 18, 196, 195, 0, -59, -125, -258, 7286, -48, 9057, 327, 0, 0, 0, 0, 0, 0, 253, 12, -136, 1905, -82, 117, 374, 561, 0, 0, 0, 0, 0, 0, 0, 45, }; #define YYTABLESIZE 9778 short yytable[] = { 105, 165, 132, 133, 97, 9, 97, 101, 250, 96, 94, 96, 95, 3, 93, 100, 93, 258, 48, 48, 157, 48, 50, 51, 99, 101, 182, 3, 215, 184, 134, 31, 98, 100, 134, 48, 48, 95, 165, 12, 48, 165, 165, 165, 165, 165, 165, 67, 165, 96, 98, 97, 177, 74, 100, 95, 57, 330, 56, 165, 165, 57, 103, 104, 165, 43, 240, 96, 43, 97, 215, 44, 212, 344, 44, 31, 146, 148, 137, 235, 202, 134, 220, 314, 55, 134, 74, 102, 67, 135, 31, 67, 319, 304, 165, 59, 15, 57, 55, 60, 57, 48, 182, 12, 61, 67, 67, 281, 62, 282, 67, 261, 15, 48, 57, 57, 65, 43, 66, 57, 180, 103, 104, 44, 165, 165, 135, 36, 37, 38, 135, 135, 135, 135, 135, 23, 135, 25, 226, 55, 67, 134, 55, 56, 105, 103, 104, 135, 135, 57, 131, 23, 135, 25, 31, 187, 55, 55, 190, 227, 267, 193, 134, 134, 195, 271, 273, 197, 286, 309, 67, 134, 134, 334, 259, 170, 134, 260, 170, 57, 139, 332, 135, 144, 56, 277, 45, 56, 233, 45, 240, 55, 289, 74, 343, 75, 74, 280, 75, 143, 150, 56, 56, 45, 45, 98, 240, 155, 351, 8, 1, 181, 135, 135, 191, 192, 196, 2, 217, 219, 144, 55, 222, 144, 144, 144, 144, 144, 144, 101, 144, 2, 238, 181, 239, 236, 56, 100, 246, 244, 48, 144, 144, 134, 262, 279, 144, 285, 299, 318, 302, 328, 306, 278, 98, 308, 48, 48, 48, 95, 267, 48, 165, 165, 165, 341, 56, 347, 165, 45, 348, 96, 29, 97, 30, 27, 144, 27, 339, 39, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 31, 31, 31, 176, 178, 101, 165, 165, 165, 237, 165, 0, 165, 0, 144, 144, 67, 67, 67, 98, 165, 98, 0, 326, 0, 57, 57, 57, 0, 165, 0, 0, 0, 0, 67, 67, 31, 165, 165, 165, 165, 165, 165, 165, 57, 165, 0, 165, 165, 0, 0, 165, 67, 165, 165, 165, 165, 0, 135, 135, 135, 57, 32, 0, 135, 0, 0, 55, 55, 55, 0, 0, 0, 0, 0, 0, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 0, 346, 0, 67, 0, 0, 135, 135, 135, 0, 135, 0, 135, 0, 32, 55, 0, 32, 0, 32, 135, 32, 15, 0, 56, 56, 56, 0, 45, 135, 0, 0, 0, 32, 0, 164, 0, 135, 135, 135, 135, 135, 135, 135, 0, 135, 45, 135, 135, 45, 0, 135, 0, 135, 135, 135, 135, 0, 188, 0, 56, 23, 24, 25, 144, 144, 144, 29, 0, 0, 144, 76, 0, 0, 76, 0, 0, 0, 0, 0, 38, 0, 144, 144, 144, 144, 144, 144, 144, 76, 144, 144, 144, 144, 0, 0, 0, 0, 0, 0, 144, 144, 144, 78, 144, 0, 144, 0, 47, 77, 0, 47, 77, 0, 144, 131, 0, 0, 0, 0, 0, 78, 0, 144, 0, 47, 47, 77, 0, 0, 47, 144, 144, 144, 144, 144, 144, 144, 242, 144, 0, 144, 144, 0, 215, 144, 0, 144, 144, 144, 144, 0, 131, 0, 76, 131, 131, 131, 131, 131, 131, 60, 131, 0, 265, 0, 46, 0, 0, 46, 15, 0, 0, 131, 131, 0, 274, 0, 131, 0, 0, 0, 0, 46, 46, 0, 78, 0, 0, 0, 0, 47, 77, 0, 0, 0, 0, 0, 255, 290, 0, 0, 60, 130, 0, 60, 0, 0, 131, 23, 24, 25, 79, 0, 0, 29, 80, 0, 0, 60, 60, 0, 0, 0, 60, 0, 0, 317, 38, 0, 79, 0, 0, 0, 80, 32, 32, 32, 131, 131, 130, 0, 0, 130, 130, 130, 130, 130, 130, 46, 130, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 130, 130, 32, 32, 333, 130, 0, 0, 0, 0, 32, 32, 32, 0, 32, 0, 32, 0, 0, 0, 0, 255, 0, 60, 255, 255, 255, 255, 0, 0, 0, 255, 76, 32, 79, 130, 132, 0, 80, 0, 0, 32, 32, 32, 32, 32, 32, 32, 0, 32, 76, 32, 32, 76, 0, 32, 0, 0, 32, 32, 32, 0, 0, 0, 78, 130, 130, 0, 255, 47, 77, 0, 0, 132, 0, 0, 132, 132, 132, 132, 132, 132, 78, 132, 0, 78, 47, 47, 77, 50, 47, 77, 50, 0, 132, 132, 0, 0, 288, 132, 291, 0, 292, 293, 294, 0, 50, 50, 298, 0, 0, 50, 0, 0, 0, 131, 131, 131, 0, 0, 0, 131, 0, 0, 256, 0, 0, 46, 0, 132, 0, 0, 0, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 46, 0, 0, 46, 0, 0, 131, 131, 131, 0, 131, 0, 131, 0, 132, 132, 60, 60, 60, 0, 131, 0, 335, 0, 0, 0, 0, 50, 79, 131, 0, 0, 80, 0, 60, 60, 0, 131, 131, 131, 131, 131, 131, 131, 0, 131, 79, 131, 131, 79, 80, 131, 60, 80, 131, 131, 131, 0, 130, 130, 130, 0, 34, 256, 130, 0, 256, 256, 256, 256, 0, 63, 0, 256, 15, 0, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 0, 0, 0, 60, 0, 0, 130, 130, 130, 0, 130, 0, 130, 0, 34, 0, 0, 34, 0, 34, 130, 34, 256, 0, 0, 23, 24, 25, 0, 130, 0, 29, 0, 34, 0, 0, 0, 130, 130, 130, 130, 130, 130, 130, 38, 130, 0, 130, 130, 0, 0, 130, 0, 0, 130, 130, 130, 0, 0, 0, 0, 0, 0, 0, 132, 132, 132, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 50, 50, 50, 0, 0, 50, 132, 132, 132, 0, 132, 0, 132, 0, 0, 0, 0, 0, 0, 0, 132, 127, 0, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 132, 132, 132, 132, 132, 132, 132, 0, 132, 0, 132, 132, 0, 0, 132, 0, 0, 132, 132, 132, 50, 127, 0, 0, 127, 127, 127, 127, 127, 127, 61, 127, 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, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 61, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 61, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 34, 127, 127, 126, 0, 0, 126, 126, 126, 126, 126, 126, 0, 126, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 126, 126, 34, 34, 0, 126, 0, 0, 0, 0, 34, 34, 34, 0, 34, 0, 34, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 126, 128, 0, 0, 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, 126, 126, 0, 0, 0, 0, 0, 0, 128, 0, 0, 128, 128, 128, 128, 128, 128, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 127, 0, 127, 0, 128, 128, 61, 61, 61, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 61, 61, 0, 127, 127, 127, 127, 127, 127, 127, 0, 127, 0, 127, 127, 0, 0, 127, 61, 0, 127, 127, 127, 0, 126, 126, 126, 0, 25, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, 0, 61, 0, 0, 126, 126, 126, 0, 126, 0, 126, 0, 25, 0, 0, 25, 0, 25, 126, 25, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 126, 126, 126, 126, 126, 126, 126, 0, 126, 0, 126, 126, 0, 0, 126, 0, 0, 126, 126, 126, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 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, 25, 0, 0, 128, 128, 128, 0, 128, 0, 128, 0, 0, 0, 0, 0, 0, 0, 128, 129, 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, 129, 0, 0, 129, 129, 129, 129, 129, 129, 62, 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, 0, 0, 0, 0, 0, 0, 0, 0, 62, 163, 0, 62, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 0, 129, 129, 163, 0, 0, 163, 163, 163, 163, 163, 163, 0, 163, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 163, 163, 25, 25, 0, 163, 0, 0, 0, 0, 25, 25, 25, 0, 25, 0, 25, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 163, 66, 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, 163, 163, 0, 0, 0, 0, 0, 0, 89, 0, 0, 66, 66, 89, 66, 66, 66, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 0, 0, 0, 66, 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, 66, 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, 66, 66, 62, 62, 62, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 62, 62, 0, 129, 129, 129, 129, 129, 129, 129, 0, 129, 0, 129, 129, 0, 0, 129, 62, 0, 129, 129, 129, 0, 163, 163, 163, 0, 26, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 0, 0, 0, 62, 0, 0, 163, 163, 163, 0, 163, 0, 163, 0, 26, 0, 0, 26, 0, 26, 163, 26, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 163, 163, 163, 163, 163, 163, 163, 0, 163, 0, 163, 163, 0, 0, 163, 0, 163, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 0, 66, 66, 66, 66, 66, 66, 66, 66, 66, 0, 136, 138, 26, 0, 0, 66, 66, 66, 0, 66, 0, 66, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 66, 66, 66, 66, 0, 66, 0, 66, 66, 0, 0, 66, 0, 89, 66, 66, 66, 132, 0, 0, 73, 73, 132, 132, 73, 132, 63, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, 0, 0, 0, 0, 0, 229, 230, 0, 0, 0, 0, 0, 63, 163, 0, 63, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 73, 73, 163, 0, 0, 163, 163, 163, 163, 163, 163, 257, 163, 0, 0, 0, 63, 263, 264, 0, 0, 0, 0, 163, 163, 0, 26, 26, 163, 269, 0, 0, 0, 0, 26, 26, 26, 0, 26, 0, 26, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 26, 163, 124, 0, 0, 0, 0, 0, 26, 26, 26, 26, 26, 26, 26, 0, 26, 0, 26, 26, 0, 0, 26, 310, 312, 26, 26, 26, 0, 0, 0, 163, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 124, 0, 124, 124, 124, 0, 323, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 124, 0, 0, 0, 124, 0, 0, 138, 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, 124, 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, 124, 124, 63, 63, 63, 67, 0, 0, 33, 0, 34, 0, 14, 0, 0, 73, 0, 0, 0, 0, 63, 63, 0, 73, 73, 73, 73, 73, 73, 73, 0, 73, 0, 73, 73, 0, 0, 73, 63, 0, 73, 73, 73, 0, 163, 163, 163, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 163, 0, 163, 163, 163, 163, 163, 163, 163, 163, 163, 0, 0, 0, 63, 0, 0, 163, 163, 163, 0, 163, 0, 163, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 125, 163, 163, 163, 163, 163, 163, 163, 0, 163, 0, 163, 163, 0, 0, 163, 0, 163, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 124, 124, 124, 0, 0, 0, 124, 0, 0, 0, 0, 0, 125, 125, 0, 125, 125, 125, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 125, 125, 0, 0, 0, 125, 124, 124, 124, 0, 124, 0, 124, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 124, 143, 0, 0, 0, 0, 125, 0, 124, 124, 124, 124, 124, 124, 124, 0, 124, 0, 124, 124, 0, 0, 124, 0, 0, 124, 124, 124, 0, 0, 0, 0, 0, 0, 0, 79, 125, 125, 0, 0, 0, 143, 143, 0, 0, 143, 0, 80, 0, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 143, 143, 0, 0, 0, 143, 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, 143, 142, 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, 143, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, 125, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 0, 0, 0, 0, 0, 0, 125, 125, 125, 0, 125, 0, 125, 0, 142, 142, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 125, 125, 125, 125, 125, 125, 125, 0, 125, 0, 125, 125, 0, 0, 125, 0, 0, 125, 125, 125, 0, 143, 143, 143, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 0, 0, 0, 0, 0, 0, 143, 143, 143, 0, 143, 0, 143, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 73, 143, 143, 143, 143, 143, 143, 143, 0, 143, 0, 143, 143, 0, 0, 143, 0, 0, 143, 143, 143, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 0, 0, 0, 142, 0, 0, 0, 0, 0, 73, 73, 0, 0, 73, 0, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 73, 73, 0, 0, 0, 73, 142, 142, 142, 0, 142, 0, 142, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 142, 72, 0, 0, 0, 0, 73, 0, 142, 142, 142, 142, 142, 142, 142, 0, 142, 0, 142, 142, 0, 0, 142, 0, 0, 142, 142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 0, 0, 0, 72, 72, 0, 0, 72, 0, 0, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 64, 0, 72, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 72, 0, 0, 0, 0, 0, 0, 145, 0, 0, 145, 145, 145, 145, 145, 145, 64, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 73, 73, 73, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 145, 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, 145, 145, 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, 72, 72, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 72, 0, 72, 72, 72, 72, 72, 72, 72, 72, 72, 0, 0, 0, 0, 0, 0, 72, 72, 72, 0, 72, 0, 72, 0, 0, 0, 0, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 64, 72, 72, 72, 72, 72, 72, 72, 0, 72, 0, 72, 72, 0, 0, 72, 0, 64, 72, 72, 72, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 0, 71, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 145, 145, 145, 145, 0, 145, 145, 64, 145, 0, 0, 0, 0, 0, 0, 145, 145, 145, 0, 145, 0, 145, 0, 71, 71, 0, 71, 71, 71, 145, 71, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 71, 71, 0, 0, 0, 71, 0, 0, 145, 145, 145, 0, 0, 145, 0, 145, 145, 0, 0, 145, 0, 145, 145, 145, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 71, 0, 59, 59, 0, 59, 59, 59, 0, 59, 0, 0, 0, 0, 0, 65, 0, 0, 65, 0, 59, 59, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 65, 65, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 59, 59, 165, 0, 165, 165, 0, 165, 0, 165, 0, 0, 65, 0, 0, 58, 0, 0, 58, 0, 0, 165, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 58, 58, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 71, 71, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 71, 71, 0, 71, 71, 71, 71, 71, 71, 71, 0, 71, 0, 0, 0, 0, 165, 0, 71, 71, 71, 0, 71, 0, 71, 89, 0, 58, 49, 49, 89, 49, 49, 49, 0, 49, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 49, 49, 0, 0, 0, 49, 71, 71, 71, 0, 0, 71, 0, 71, 71, 0, 0, 71, 0, 0, 71, 71, 59, 59, 59, 0, 0, 0, 59, 0, 0, 0, 0, 0, 65, 65, 65, 0, 0, 0, 59, 59, 0, 59, 59, 59, 59, 59, 59, 59, 59, 59, 65, 65, 0, 0, 0, 0, 59, 59, 59, 0, 59, 0, 59, 0, 49, 0, 0, 0, 65, 0, 89, 0, 0, 89, 0, 89, 89, 0, 89, 59, 89, 0, 0, 0, 0, 0, 0, 59, 59, 59, 59, 59, 59, 59, 0, 59, 89, 59, 59, 0, 0, 59, 0, 0, 0, 0, 0, 65, 0, 0, 0, 165, 0, 0, 0, 0, 0, 58, 58, 58, 0, 0, 0, 165, 165, 0, 165, 165, 165, 165, 165, 165, 0, 165, 165, 58, 58, 0, 0, 0, 0, 0, 165, 165, 0, 165, 0, 165, 0, 0, 0, 0, 0, 58, 0, 165, 0, 89, 0, 0, 0, 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, 165, 165, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 163, 0, 49, 163, 163, 163, 163, 163, 163, 0, 163, 0, 0, 0, 49, 49, 49, 0, 0, 49, 0, 163, 163, 49, 49, 49, 163, 0, 0, 0, 0, 0, 0, 49, 49, 0, 49, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 49, 49, 49, 49, 0, 49, 0, 49, 49, 0, 0, 49, 0, 89, 49, 49, 49, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 0, 89, 89, 89, 89, 89, 89, 89, 89, 89, 0, 0, 0, 0, 0, 0, 23, 89, 89, 23, 89, 23, 89, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 89, 89, 89, 89, 89, 89, 89, 0, 89, 0, 89, 89, 0, 0, 89, 0, 89, 89, 89, 89, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 24, 0, 24, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 23, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 163, 163, 0, 0, 163, 0, 0, 0, 163, 163, 163, 0, 0, 0, 0, 0, 0, 0, 163, 163, 0, 163, 0, 163, 24, 0, 24, 0, 103, 0, 0, 103, 0, 103, 0, 103, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 103, 163, 163, 163, 163, 163, 163, 163, 0, 163, 0, 163, 163, 0, 0, 163, 0, 163, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 33, 0, 34, 0, 14, 23, 23, 23, 23, 23, 23, 23, 23, 0, 23, 23, 23, 23, 0, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 23, 23, 23, 23, 0, 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, 24, 24, 24, 24, 24, 24, 24, 24, 0, 24, 24, 24, 24, 0, 24, 24, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 0, 24, 24, 24, 24, 24, 0, 24, 103, 0, 24, 24, 24, 0, 0, 0, 0, 113, 0, 0, 113, 0, 113, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 103, 103, 103, 103, 103, 103, 103, 103, 0, 103, 103, 103, 103, 0, 103, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 103, 103, 0, 0, 0, 0, 0, 0, 103, 103, 103, 103, 103, 103, 103, 0, 103, 103, 103, 103, 103, 0, 103, 0, 0, 103, 103, 103, 113, 0, 113, 0, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 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, 13, 0, 0, 33, 22, 34, 0, 14, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 108, 30, 0, 31, 32, 12, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 198, 0, 0, 0, 0, 0, 0, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 113, 113, 113, 113, 113, 113, 113, 113, 108, 113, 113, 113, 113, 0, 113, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 113, 113, 113, 0, 0, 0, 0, 0, 0, 113, 113, 113, 113, 113, 113, 113, 0, 113, 113, 113, 113, 113, 0, 113, 106, 0, 113, 113, 113, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 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, 106, 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, 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, 106, 0, 0, 0, 0, 0, 0, 209, 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, 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, 12, 0, 213, 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, 0, 0, 111, 0, 0, 0, 13, 18, 19, 33, 20, 34, 21, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 117, 118, 22, 12, 0, 214, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 33, 12, 34, 234, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 30, 119, 31, 32, 120, 0, 35, 106, 0, 36, 37, 38, 12, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 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, 106, 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, 15, 16, 109, 110, 111, 112, 113, 114, 0, 18, 19, 115, 20, 12, 21, 116, 0, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 117, 118, 22, 0, 0, 0, 0, 108, 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, 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, 12, 0, 313, 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, 13, 0, 0, 33, 106, 34, 0, 14, 0, 0, 0, 283, 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, 106, 0, 36, 37, 38, 0, 0, 0, 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, 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, 12, 0, 349, 0, 112, 0, 0, 112, 0, 112, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 302, 0, 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, 0, 0, 0, 0, 0, 112, 0, 112, 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, 13, 0, 0, 33, 106, 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, 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, 112, 0, 36, 37, 38, 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, 112, 112, 112, 112, 112, 112, 112, 112, 0, 112, 112, 112, 112, 0, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 112, 112, 112, 112, 0, 112, 112, 112, 112, 112, 0, 112, 0, 18, 112, 112, 112, 176, 0, 0, 176, 0, 176, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 176, 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, 18, 67, 135, 0, 33, 134, 34, 0, 14, 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, 176, 0, 18, 18, 18, 0, 0, 0, 67, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 89, 0, 176, 176, 176, 176, 176, 176, 176, 176, 0, 176, 176, 176, 176, 0, 176, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 176, 176, 0, 0, 0, 0, 0, 0, 0, 176, 176, 176, 176, 176, 176, 176, 0, 176, 176, 176, 176, 176, 0, 176, 0, 0, 176, 176, 176, 78, 0, 67, 311, 0, 33, 134, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 78, 0, 0, 0, 0, 0, 0, 0, 67, 322, 0, 33, 134, 34, 0, 14, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 89, 30, 0, 31, 32, 0, 0, 68, 0, 0, 36, 37, 38, 0, 0, 0, 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, 0, 18, 19, 0, 20, 78, 21, 67, 324, 0, 33, 134, 34, 0, 14, 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, 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, 78, 21, 67, 0, 0, 33, 134, 34, 0, 14, 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, 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, 78, 0, 18, 19, 0, 20, 0, 21, 67, 135, 0, 33, 0, 34, 0, 14, 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, 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, 78, 21, 67, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 232, 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, 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, 78, 21, 67, 267, 0, 33, 0, 34, 0, 14, 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, 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, 78, 0, 18, 19, 0, 20, 0, 21, 67, 305, 0, 33, 0, 34, 0, 14, 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, 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, 78, 21, 67, 307, 0, 33, 0, 34, 0, 14, 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, 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, 78, 21, 67, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 331, 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, 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, 78, 0, 18, 19, 0, 20, 0, 21, 67, 336, 0, 33, 0, 34, 0, 14, 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, 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, 78, 21, 67, 340, 0, 33, 0, 34, 0, 14, 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, 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, 78, 21, 67, 342, 0, 33, 0, 34, 0, 14, 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, 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, 78, 0, 18, 19, 0, 20, 67, 21, 0, 33, 0, 34, 0, 14, 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, 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, 54, 54, 0, 0, 54, 18, 19, 78, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 54, 54, 0, 0, 0, 54, 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, 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, 54, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 67, 21, 0, 33, 0, 34, 199, 14, 200, 201, 0, 0, 210, 0, 199, 199, 0, 0, 22, 0, 0, 0, 0, 253, 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, 79, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 82, 83, 84, 85, 86, 87, 88, 15, 16, 0, 0, 53, 53, 0, 199, 53, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 53, 53, 0, 0, 0, 53, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 54, 284, 68, 0, 54, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 54, 0, 0, 54, 0, 0, 0, 54, 54, 54, 0, 0, 0, 199, 0, 0, 0, 54, 54, 53, 54, 0, 54, 67, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 320, 0, 0, 0, 0, 253, 54, 54, 54, 54, 54, 54, 54, 0, 54, 0, 54, 54, 0, 0, 54, 0, 0, 54, 54, 54, 0, 345, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 350, 0, 251, 0, 13, 0, 0, 33, 352, 34, 0, 14, 0, 0, 80, 81, 0, 0, 0, 0, 0, 0, 0, 252, 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, 53, 36, 37, 38, 53, 0, 67, 0, 12, 33, 0, 34, 0, 14, 0, 0, 53, 53, 53, 0, 0, 53, 0, 0, 0, 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 53, 53, 0, 53, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53, 53, 53, 53, 53, 0, 53, 0, 53, 53, 0, 0, 53, 0, 0, 53, 53, 53, 0, 0, 0, 0, 0, 0, 13, 251, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 80, 81, 0, 0, 0, 0, 184, 0, 0, 252, 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, 10, 11, 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, 67, 15, 16, 33, 0, 34, 0, 14, 0, 17, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 13, 140, 0, 33, 0, 34, 0, 14, 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, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 252, 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, 68, 0, 0, 36, 37, 38, 181, 0, 0, 0, 0, 0, 0, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 35, 0, 0, 36, 37, 38, 13, 251, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 15, 16, 0, 0, 0, 0, 0, 0, 0, 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, 68, 0, 0, 36, 37, 38, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 35, 0, 0, 36, 37, 38, 13, 0, 0, 33, 0, 34, 0, 14, 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, 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, 287, 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, 168, 35, 0, 0, 36, 37, 38, 287, 0, 0, 33, 0, 34, 0, 14, 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, 0, 35, 0, 0, 36, 37, 38, 287, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, 0, 13, 0, 0, 33, 0, 34, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 315, 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, 166, 0, 35, 0, 0, 36, 37, 38, 13, 0, 0, 33, 0, 34, 0, 14, 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, 168, 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, 68, 0, 0, 36, 37, 38, 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, 215, 68, 0, 0, 36, 37, 38, 203, 0, 0, 33, 0, 34, 0, 14, 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, 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, 68, 0, 0, 36, 37, 38, 23, 24, 25, 26, 27, 28, 29, 0, 30, 0, 31, 32, 0, 0, 35, 0, 0, 36, 37, 38, 287, 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, 0, 35, 0, 0, 36, 37, 38, 67, 0, 0, 33, 0, 34, 0, 14, 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, 15, 16, 68, 0, 0, 36, 37, 38, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 64, 21, 0, 70, 70, 0, 75, 76, 70, 70, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 70, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 70, 0, 0, 31, 32, 70, 0, 68, 0, 70, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 70, 70, 70, 70, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 70, 70, 0, 0, 0, 0, 70, 70, 70, 70, 0, 231, 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, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 70, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 70, 0, 0, 0, 0, 0, 208, 0, 208, 0, 208, 208, 208, 70, 70, 70, 208, 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, 0, 0, 0, 0, 0, 70, 0, 0, 0, 208, 70, 0, 337, 0, 338, 141, 70, 0, 70, 144, 145, 141, 141, 0, 70, 151, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 158, 159, 160, 161, 162, 163, 0, 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, 211, 0, 0, 0, 0, 216, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 71, 73, 0, 0, 77, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 154, 0, 0, 0, 90, 0, 0, 0, 0, 243, 0, 0, 0, 245, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 266, 0, 0, 270, 272, 0, 0, 0, 0, 275, 0, 276, 0, 0, 0, 90, 0, 141, 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 90, 90, 0, 0, 300, 301, 228, 90, 90, 90, 0, 0, 90, 0, 90, 90, 90, 90, 90, 90, 316, 90, 0, 90, 0, 90, 0, 0, 52, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 321, 0, 0, 0, 0, 90, 0, 0, 0, 0, 90, 327, 0, 329, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 90, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 90, 0, 0, 0, 0, 0, 207, 0, 207, 0, 207, 207, 207, 295, 296, 297, 207, 0, 0, 0, 0, 90, 0, 0, 0, 90, 0, 90, 0, 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 254, 254, 254, 254, 0, 0, 0, 254, 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 207, 90, 0, 0, 0, 0, 0, 90, 0, 90, 0, 0, 0, 0, 0, 254, }; short yycheck[] = { 91, 0, 50, 51, 37, 59, 37, 41, 203, 42, 43, 42, 45, 59, 47, 41, 47, 124, 41, 7, 79, 44, 10, 11, 44, 59, 108, 59, 263, 59, 44, 0, 41, 59, 44, 58, 59, 41, 37, 123, 63, 40, 41, 42, 43, 44, 45, 0, 47, 41, 59, 41, 100, 35, 42, 59, 0, 315, 328, 58, 59, 331, 345, 346, 63, 41, 191, 59, 44, 59, 263, 41, 131, 331, 44, 44, 61, 62, 41, 93, 128, 44, 41, 93, 40, 44, 68, 311, 41, 0, 59, 44, 287, 328, 93, 40, 289, 41, 0, 40, 44, 124, 184, 123, 40, 58, 59, 243, 40, 245, 63, 311, 289, 101, 58, 59, 40, 93, 40, 63, 105, 345, 346, 93, 123, 124, 37, 345, 346, 347, 41, 42, 43, 44, 45, 328, 47, 330, 41, 41, 93, 44, 44, 0, 91, 345, 346, 58, 59, 93, 40, 328, 63, 330, 123, 110, 58, 59, 113, 41, 41, 116, 44, 44, 119, 224, 225, 122, 41, 41, 123, 44, 44, 41, 281, 41, 44, 284, 44, 123, 335, 317, 93, 0, 41, 233, 41, 44, 176, 44, 315, 93, 251, 41, 330, 41, 44, 288, 44, 40, 286, 58, 59, 58, 59, 344, 331, 336, 344, 263, 256, 263, 123, 124, 40, 40, 40, 263, 288, 47, 37, 123, 328, 40, 41, 42, 43, 44, 45, 263, 47, 263, 91, 263, 189, 263, 93, 263, 321, 194, 263, 58, 59, 44, 340, 59, 63, 263, 40, 288, 263, 310, 41, 238, 263, 41, 279, 280, 281, 263, 41, 284, 261, 262, 263, 41, 123, 41, 267, 124, 41, 263, 0, 263, 0, 59, 93, 41, 326, 123, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 261, 262, 263, 99, 101, 44, 297, 298, 299, 184, 301, -1, 303, -1, 123, 124, 261, 262, 263, 344, 311, 344, -1, 303, -1, 261, 262, 263, -1, 320, -1, -1, -1, -1, 279, 280, 297, 328, 329, 330, 331, 332, 333, 334, 280, 336, -1, 338, 339, -1, -1, 342, 297, 344, 345, 346, 347, -1, 261, 262, 263, 297, 0, -1, 267, -1, -1, 261, 262, 263, -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, 336, -1, 336, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 40, 297, -1, 43, -1, 45, 311, 47, 289, -1, 261, 262, 263, -1, 263, 320, -1, -1, -1, 59, -1, 88, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 281, 338, 339, 284, -1, 342, -1, 344, 345, 346, 347, -1, 111, -1, 297, 328, 329, 330, 261, 262, 263, 334, -1, -1, 267, 41, -1, -1, 44, -1, -1, -1, -1, -1, 347, -1, 279, 280, 281, 282, 283, 284, 285, 59, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, 297, 298, 299, 41, 301, -1, 303, -1, 41, 41, -1, 44, 44, -1, 311, 0, -1, -1, -1, -1, -1, 59, -1, 320, -1, 58, 59, 59, -1, -1, 63, 328, 329, 330, 331, 332, 333, 334, 191, 336, -1, 338, 339, -1, 263, 342, -1, 344, 345, 346, 347, -1, 37, -1, 124, 40, 41, 42, 43, 44, 45, 0, 47, -1, 217, -1, 41, -1, -1, 44, 289, -1, -1, 58, 59, -1, 229, -1, 63, -1, -1, -1, -1, 58, 59, -1, 124, -1, -1, -1, -1, 124, 124, -1, -1, -1, -1, -1, 204, 252, -1, -1, 41, 0, -1, 44, -1, -1, 93, 328, 329, 330, 41, -1, -1, 334, 41, -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, 280, 347, -1, 59, -1, -1, -1, 59, 261, 262, 263, 123, 124, 37, -1, -1, 40, 41, 42, 43, 44, 45, 124, 47, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, 58, 59, 289, 290, 318, 63, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, 288, -1, 123, 291, 292, 293, 294, -1, -1, -1, 298, 263, 320, 124, 93, 0, -1, 124, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 281, 338, 339, 284, -1, 342, -1, -1, 345, 346, 347, -1, -1, -1, 263, 123, 124, -1, 335, 263, 263, -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, 45, 281, 47, -1, 284, 280, 281, 281, 41, 284, 284, 44, -1, 58, 59, -1, -1, 251, 63, 253, -1, 255, 256, 257, -1, 58, 59, 261, -1, -1, 63, -1, -1, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, 204, -1, -1, 263, -1, 93, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 281, -1, -1, 284, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 123, 124, 261, 262, 263, -1, 311, -1, 320, -1, -1, -1, -1, 124, 263, 320, -1, -1, 263, -1, 279, 280, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 281, 338, 339, 284, 281, 342, 297, 284, 345, 346, 347, -1, 261, 262, 263, -1, 0, 288, 267, -1, 291, 292, 293, 294, -1, 286, -1, 298, 289, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, 336, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 40, -1, -1, 43, -1, 45, 311, 47, 335, -1, -1, 328, 329, 330, -1, 320, -1, 334, -1, 59, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, 347, 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, 263, -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 279, 280, 281, -1, -1, 284, 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, 336, 37, -1, -1, 40, 41, 42, 43, 44, 45, 0, 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, 41, 0, -1, 44, -1, -1, 93, -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, 261, 262, 263, 123, 124, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, 93, -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, 123, -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, 261, 262, 263, -1, 311, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, 279, 280, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, 297, -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, 336, -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, 0, 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, 41, 0, -1, 44, -1, -1, 93, -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, 261, 262, -1, 123, 124, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, 93, -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, 123, -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, 261, 262, 263, -1, 311, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, 279, 280, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, 297, -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, 336, -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, 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, 52, 53, 123, -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, 344, 345, 346, 347, 37, -1, -1, 40, 41, 42, 43, 44, 45, 0, 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, 144, 145, -1, -1, -1, -1, -1, 151, 152, -1, -1, -1, -1, -1, 41, 0, -1, 44, -1, -1, 93, -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, 261, 262, 123, 124, 37, -1, -1, 40, 41, 42, 43, 44, 45, 205, 47, -1, -1, -1, 93, 211, 212, -1, -1, -1, -1, 58, 59, -1, 289, 290, 63, 223, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, 250, 320, 93, 0, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, 274, 275, 345, 346, 347, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 300, 301, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, 319, -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, 261, 262, 263, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, 320, -1, -1, -1, -1, 279, 280, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, 297, -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, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, 336, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, 124, -1, -1, -1, -1, -1, -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, 344, -1, -1, 347, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, 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, -1, -1, -1, -1, -1, -1, 267, 123, 124, -1, -1, -1, 40, 41, -1, -1, 44, -1, 279, -1, -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, -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, -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, -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, 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, -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, 40, 41, -1, -1, 44, -1, -1, 0, -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, 41, -1, -1, 44, -1, 93, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, 45, 93, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, -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, -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, 261, 262, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, 279, 280, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, -1, -1, 342, -1, 297, 345, 346, 347, -1, -1, -1, -1, -1, -1, -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, 336, 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, 0, -1, -1, -1, -1, -1, -1, 93, -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, -1, -1, 123, 124, -1, 40, 41, -1, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, 41, -1, -1, 44, -1, 58, 59, -1, -1, -1, 63, -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, 93, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 123, 124, 40, -1, 42, 43, -1, 45, -1, 47, -1, -1, 123, -1, -1, 41, -1, -1, 44, -1, -1, 59, -1, -1, -1, 63, -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, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, -1, 290, -1, -1, -1, -1, 124, -1, 297, 298, 299, -1, 301, -1, 303, 37, -1, 123, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, 331, 332, 333, -1, -1, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 261, 262, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 279, 280, -1, -1, -1, -1, 297, 298, 299, -1, 301, -1, 303, -1, 124, -1, -1, -1, 297, -1, 37, -1, -1, 40, -1, 42, 43, -1, 45, 320, 47, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 63, 338, 339, -1, -1, 342, -1, -1, -1, -1, -1, 336, -1, -1, -1, 267, -1, -1, -1, -1, -1, 261, 262, 263, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, -1, 289, 290, 279, 280, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, 297, -1, 311, -1, 124, -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, 344, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, -1, 37, -1, 267, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, 279, 280, 281, -1, -1, 284, -1, 58, 59, 288, 289, 290, 63, -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, 344, 345, 346, 347, -1, -1, -1, -1, 124, -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, 40, 298, 299, 43, 301, 45, 303, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -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, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, 123, -1, 125, -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, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, -1, 303, 123, -1, 125, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, 59, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, 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, 256, -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, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, 124, -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, 256, -1, 345, 346, 347, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -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, 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, 123, -1, 125, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -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, 40, -1, -1, 43, 320, 45, -1, 47, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, 59, 336, -1, 338, 339, 123, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 321, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, -1, 342, 256, -1, 345, 346, 347, -1, -1, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, -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, 256, -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, 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, 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, -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, -1, 342, -1, -1, 345, 346, 347, 123, -1, 125, -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, -1, -1, 293, -1, -1, -1, 40, 298, 299, 43, 301, 45, 303, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, 318, 319, 320, 123, -1, 125, -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, -1, 256, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, 123, 45, 125, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, 336, 337, 338, 339, 340, -1, 342, 256, -1, 345, 346, 347, 123, -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, 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, 256, -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, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, 123, 303, 304, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, 318, 319, 320, -1, -1, -1, -1, 59, -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, -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, 123, -1, 125, -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, 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, 256, -1, 345, 346, 347, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -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, -1, 342, -1, -1, 345, 346, 347, 123, -1, 125, -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, 256, -1, -1, -1, -1, -1, -1, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, -1, -1, -1, -1, 123, -1, 125, -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, 40, -1, -1, 43, 256, 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, -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, 256, -1, 345, 346, 347, 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, 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, 123, 345, 346, 347, 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, -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, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, -1, 303, 304, -1, 123, -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, 256, 40, 41, -1, 43, 44, 45, -1, 47, -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, 256, -1, 345, 346, 347, -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, 63, -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, -1, 342, -1, -1, 345, 346, 347, 124, -1, 40, 41, -1, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 40, 41, -1, 43, 44, 45, -1, 47, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, 63, 336, -1, 338, 339, -1, -1, 342, -1, -1, 345, 346, 347, -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, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, 124, 303, 40, 41, -1, 43, 44, 45, -1, 47, -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, 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, 124, 303, 40, -1, -1, 43, 44, 45, -1, 47, -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, -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, 124, -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, 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, 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, 124, 303, 40, -1, -1, 43, -1, 45, -1, 47, -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, -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, -1, 298, 299, -1, 301, 124, 303, 40, 41, -1, 43, -1, 45, -1, 47, -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, -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, 124, -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, 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, 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, 124, 303, 40, 41, -1, 43, -1, 45, -1, 47, -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, 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, 124, 303, 40, -1, -1, 43, -1, 45, -1, 47, -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, -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, 124, -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, 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, 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, 124, 303, 40, 41, -1, 43, -1, 45, -1, 47, -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, 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, 124, 303, 40, 41, -1, 43, -1, 45, -1, 47, -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, -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, 124, -1, 298, 299, -1, 301, 40, 303, -1, 43, -1, 45, -1, 47, -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, 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, 40, 41, -1, -1, 44, 298, 299, 124, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, -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, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 124, -1, -1, -1, -1, -1, -1, 298, 299, -1, 301, 40, 303, -1, 43, -1, 45, 124, 47, 126, 127, -1, -1, 130, -1, 132, 133, -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, 267, -1, -1, -1, 177, -1, -1, -1, -1, -1, -1, -1, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, 40, 41, -1, 202, 44, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, 333, 334, -1, 336, -1, 338, 339, 263, 247, 342, -1, 267, 345, 346, 347, -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, -1, -1, 284, -1, -1, -1, 288, 289, 290, -1, -1, -1, 277, -1, -1, -1, 298, 299, 124, 301, -1, 303, 40, -1, -1, 43, -1, 45, -1, 47, -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, 332, -1, -1, -1, -1, -1, -1, 339, -1, -1, -1, 343, -1, 267, -1, 40, -1, -1, 43, 351, 45, -1, 47, -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, 263, 345, 346, 347, 267, -1, 40, -1, 123, 43, -1, 45, -1, 47, -1, -1, 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, -1, -1, -1, -1, 40, 267, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, 279, 280, -1, -1, -1, -1, 59, -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, 261, 262, -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, 289, 290, 43, -1, 45, -1, 47, -1, 297, 298, 299, -1, 301, -1, 303, -1, -1, -1, -1, 40, 41, -1, 43, -1, 45, -1, 47, -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, -1, -1, -1, -1, -1, -1, -1, -1, -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, 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, 263, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 267, -1, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -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, 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, 47, -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, 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, 263, 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, 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, 263, -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, 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, 263, -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, 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, 263, 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, 289, 290, -1, -1, -1, -1, -1, -1, -1, 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, -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, 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, 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, 289, 290, 342, -1, -1, 345, 346, 347, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, -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, -1, -1, -1, -1, -1, -1, -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, 30, 303, -1, 33, 34, -1, 36, 37, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, 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, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, -1, 216, -1, 218, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, 251, -1, 253, -1, 255, 256, 257, 258, 259, 260, 261, -1, -1, -1, -1, 266, -1, -1, -1, 270, -1, 272, -1, -1, 275, 276, -1, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, 288, -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, 300, 301, -1, -1, -1, -1, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, -1, -1, 320, 321, -1, 323, -1, 325, 55, 327, -1, 329, 59, 60, 61, 62, -1, 335, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, 82, 83, 84, 85, 86, 87, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, 34, 35, -1, -1, 38, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, 68, -1, -1, -1, 72, -1, -1, -1, -1, 192, -1, -1, -1, 196, -1, -1, -1, -1, -1, -1, 203, -1, -1, -1, -1, 93, 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, 224, 225, -1, -1, -1, -1, 230, -1, 232, -1, -1, -1, 121, -1, 238, -1, -1, -1, -1, -1, 129, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 141, -1, -1, 144, 145, -1, -1, 263, 264, 150, 151, 152, 153, -1, -1, 156, -1, 158, 159, 160, 161, 162, 163, 279, 165, -1, 167, -1, 169, -1, -1, 287, -1, -1, -1, -1, -1, -1, 179, -1, -1, -1, -1, 299, -1, -1, -1, -1, 189, -1, -1, -1, -1, 194, 310, -1, 312, -1, -1, -1, -1, -1, -1, 204, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, -1, 216, -1, 218, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, 251, -1, 253, -1, 255, 256, 257, 258, 259, 260, 261, -1, -1, -1, -1, 266, -1, -1, -1, 270, -1, 272, -1, -1, 275, 276, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, 300, 301, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, -1, -1, 320, 321, -1, -1, -1, -1, -1, 327, -1, 329, -1, -1, -1, -1, -1, 335, }; #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 : 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 : 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", "term : re", "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 437 "awk.g.2001.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 2532 "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.2001.y" { if (errorflag==0) winner = (Node *)stat3(PROGRAM, beginloc, yyvsp[0].p, endloc); } break; case 2: #line 109 "awk.g.2001.y" { yyclearin; bracecheck(); vyyerror(":95:Bailing out"); } break; case 9: #line 125 "awk.g.2001.y" { } break; case 11: #line 129 "awk.g.2001.y" { } break; case 13: #line 134 "awk.g.2001.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.2001.y" { yyval.p = stat4(FOR, yyvsp[-5].p, NIL, yyvsp[-2].p, yyvsp[0].p); } break; case 15: #line 138 "awk.g.2001.y" { yyval.p = stat3(IN, yyvsp[-4].p, makearr(yyvsp[-2].p), yyvsp[0].p); } break; case 16: #line 142 "awk.g.2001.y" { setfname(yyvsp[0].cp); } break; case 17: #line 143 "awk.g.2001.y" { setfname(yyvsp[0].cp); } break; case 18: #line 147 "awk.g.2001.y" { yyval.p = notnull(yyvsp[-1].p); } break; case 23: #line 159 "awk.g.2001.y" { yyval.i = 0; } break; case 25: #line 164 "awk.g.2001.y" { yyval.i = 0; } break; case 27: #line 170 "awk.g.2001.y" { yyval.p = 0; } break; case 29: #line 175 "awk.g.2001.y" { yyval.p = 0; } break; case 30: #line 176 "awk.g.2001.y" { yyval.p = yyvsp[-1].p; } break; case 31: #line 180 "awk.g.2001.y" { yyval.p = notnull(yyvsp[0].p); } break; case 32: #line 184 "awk.g.2001.y" { yyval.p = stat2(PASTAT, yyvsp[0].p, stat2(PRINT, rectonode(), NIL)); } break; case 33: #line 185 "awk.g.2001.y" { yyval.p = stat2(PASTAT, yyvsp[-3].p, yyvsp[-1].p); } break; case 34: #line 186 "awk.g.2001.y" { yyval.p = pa2stat(yyvsp[-2].p, yyvsp[0].p, stat2(PRINT, rectonode(), NIL)); } break; case 35: #line 187 "awk.g.2001.y" { yyval.p = pa2stat(yyvsp[-5].p, yyvsp[-3].p, yyvsp[-1].p); } break; case 36: #line 188 "awk.g.2001.y" { yyval.p = stat2(PASTAT, NIL, yyvsp[-1].p); } break; case 37: #line 190 "awk.g.2001.y" { beginloc = linkum(beginloc, yyvsp[-1].p); yyval.p = 0; } break; case 38: #line 192 "awk.g.2001.y" { endloc = linkum(endloc, yyvsp[-1].p); yyval.p = 0; } break; case 39: #line 193 "awk.g.2001.y" {infunc++;} break; case 40: #line 194 "awk.g.2001.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.2001.y" { yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); } break; case 44: #line 204 "awk.g.2001.y" { yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); } break; case 45: #line 208 "awk.g.2001.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 46: #line 210 "awk.g.2001.y" { yyval.p = op3(CONDEXPR, notnull(yyvsp[-4].p), yyvsp[-2].p, yyvsp[0].p); } break; case 47: #line 212 "awk.g.2001.y" { yyval.p = op2(BOR, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); } break; case 48: #line 214 "awk.g.2001.y" { yyval.p = op2(AND, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); } break; case 49: #line 215 "awk.g.2001.y" { yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(yyvsp[0].s, 0)); } break; case 50: #line 217 "awk.g.2001.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.2001.y" { yyval.p = op2(INTEST, yyvsp[-2].p, makearr(yyvsp[0].p)); } break; case 52: #line 222 "awk.g.2001.y" { yyval.p = op2(INTEST, yyvsp[-3].p, makearr(yyvsp[0].p)); } break; case 53: #line 223 "awk.g.2001.y" { yyval.p = op2(CAT, yyvsp[-1].p, yyvsp[0].p); } break; case 55: #line 228 "awk.g.2001.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 56: #line 230 "awk.g.2001.y" { yyval.p = op3(CONDEXPR, notnull(yyvsp[-4].p), yyvsp[-2].p, yyvsp[0].p); } break; case 57: #line 232 "awk.g.2001.y" { yyval.p = op2(BOR, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); } break; case 58: #line 234 "awk.g.2001.y" { yyval.p = op2(AND, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); } break; case 59: #line 236 "awk.g.2001.y" { yyval.p = op1(NOT, op2(NE,yyvsp[0].p,valtonode(lookup("$zero&null",symtab),CCON))); } break; case 60: #line 237 "awk.g.2001.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 61: #line 238 "awk.g.2001.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 62: #line 239 "awk.g.2001.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 63: #line 240 "awk.g.2001.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 64: #line 241 "awk.g.2001.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 65: #line 242 "awk.g.2001.y" { yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); } break; case 66: #line 243 "awk.g.2001.y" { yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(yyvsp[0].s, 0)); } break; case 67: #line 245 "awk.g.2001.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 68: #line 249 "awk.g.2001.y" { yyval.p = op2(INTEST, yyvsp[-2].p, makearr(yyvsp[0].p)); } break; case 69: #line 250 "awk.g.2001.y" { yyval.p = op2(INTEST, yyvsp[-3].p, makearr(yyvsp[0].p)); } break; case 70: #line 251 "awk.g.2001.y" { yyval.p = op3(GETLINE, yyvsp[0].p, (Node*)yyvsp[-2].i, yyvsp[-3].p); } break; case 71: #line 252 "awk.g.2001.y" { yyval.p = op3(GETLINE, (Node*)0, (Node*)yyvsp[-1].i, yyvsp[-2].p); } break; case 72: #line 253 "awk.g.2001.y" { yyval.p = op2(CAT, yyvsp[-1].p, yyvsp[0].p); } break; case 74: #line 258 "awk.g.2001.y" { yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); } break; case 75: #line 259 "awk.g.2001.y" { yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); } break; case 77: #line 264 "awk.g.2001.y" { yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); } break; case 78: #line 268 "awk.g.2001.y" { yyval.p = rectonode(); } break; case 80: #line 270 "awk.g.2001.y" { yyval.p = yyvsp[-1].p; } break; case 87: #line 282 "awk.g.2001.y" { } break; case 89: #line 287 "awk.g.2001.y" { yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yyvsp[0].s,0)); } break; case 90: #line 288 "awk.g.2001.y" {yyval.p = op1(NOT, notnull(yyvsp[0].p)); } break; case 91: #line 292 "awk.g.2001.y" {startreg();} break; case 92: #line 292 "awk.g.2001.y" { yyval.s = yyvsp[-1].s; } break; case 95: #line 300 "awk.g.2001.y" { yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, (Node *) yyvsp[-1].i, yyvsp[0].p); } break; case 96: #line 301 "awk.g.2001.y" { yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, (Node *) yyvsp[-1].i, yyvsp[0].p); } break; case 97: #line 302 "awk.g.2001.y" { yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, (Node *) yyvsp[-1].i, yyvsp[0].p); } break; case 98: #line 303 "awk.g.2001.y" { yyval.p = stat3(yyvsp[-1].i, yyvsp[0].p, NIL, NIL); } break; case 99: #line 304 "awk.g.2001.y" { yyval.p = stat2(DELETE, makearr(yyvsp[-3].p), yyvsp[-1].p); } break; case 100: #line 305 "awk.g.2001.y" { yyclearin; vyyerror(":96:You can only delete array[element]"); yyval.p = stat1(DELETE, yyvsp[0].p); } break; case 101: #line 306 "awk.g.2001.y" { yyval.p = exptostat(yyvsp[0].p); } break; case 102: #line 307 "awk.g.2001.y" { yyclearin; vyyerror(illstat); } break; case 103: #line 311 "awk.g.2001.y" { } break; case 104: #line 311 "awk.g.2001.y" { } break; case 105: #line 315 "awk.g.2001.y" { yyval.p = stat1(BREAK, NIL); } break; case 106: #line 316 "awk.g.2001.y" { yyval.p = stat1(CONTINUE, NIL); } break; case 107: #line 318 "awk.g.2001.y" { yyval.p = stat2(DO, yyvsp[-5].p, notnull(yyvsp[-2].p)); } break; case 108: #line 319 "awk.g.2001.y" { yyval.p = stat1(EXIT, yyvsp[-1].p); } break; case 109: #line 320 "awk.g.2001.y" { yyval.p = stat1(EXIT, NIL); } break; case 111: #line 322 "awk.g.2001.y" { yyval.p = stat3(IF, yyvsp[-3].p, yyvsp[-2].p, yyvsp[0].p); } break; case 112: #line 323 "awk.g.2001.y" { yyval.p = stat3(IF, yyvsp[-1].p, yyvsp[0].p, NIL); } break; case 113: #line 324 "awk.g.2001.y" { yyval.p = yyvsp[-1].p; } break; case 114: #line 325 "awk.g.2001.y" { if (infunc) vyyerror(":97:Next is illegal inside a function"); yyval.p = stat1(NEXT, NIL); } break; case 115: #line 328 "awk.g.2001.y" { yyval.p = stat1(RETURN, yyvsp[-1].p); } break; case 116: #line 329 "awk.g.2001.y" { yyval.p = stat1(RETURN, NIL); } break; case 118: #line 331 "awk.g.2001.y" { yyval.p = stat2(WHILE, yyvsp[-1].p, yyvsp[0].p); } break; case 119: #line 332 "awk.g.2001.y" { yyval.p = 0; } break; case 121: #line 337 "awk.g.2001.y" { yyval.p = linkum(yyvsp[-1].p, yyvsp[0].p); } break; case 124: #line 345 "awk.g.2001.y" { yyval.p = op2(ADD, yyvsp[-2].p, yyvsp[0].p); } break; case 125: #line 346 "awk.g.2001.y" { yyval.p = op2(MINUS, yyvsp[-2].p, yyvsp[0].p); } break; case 126: #line 347 "awk.g.2001.y" { yyval.p = op2(MULT, yyvsp[-2].p, yyvsp[0].p); } break; case 127: #line 348 "awk.g.2001.y" { yyval.p = op2(DIVIDE, yyvsp[-2].p, yyvsp[0].p); } break; case 128: #line 349 "awk.g.2001.y" { yyval.p = op2(MOD, yyvsp[-2].p, yyvsp[0].p); } break; case 129: #line 350 "awk.g.2001.y" { yyval.p = op2(POWER, yyvsp[-2].p, yyvsp[0].p); } break; case 130: #line 351 "awk.g.2001.y" { yyval.p = op1(UMINUS, yyvsp[0].p); } break; case 131: #line 352 "awk.g.2001.y" { yyval.p = yyvsp[0].p; } break; case 132: #line 353 "awk.g.2001.y" { yyval.p = op1(NOT, notnull(yyvsp[0].p)); } break; case 133: #line 354 "awk.g.2001.y" { yyval.p = op2(BLTIN, (Node *) yyvsp[-2].i, rectonode()); } break; case 134: #line 355 "awk.g.2001.y" { yyval.p = op2(BLTIN, (Node *) yyvsp[-3].i, yyvsp[-1].p); } break; case 135: #line 356 "awk.g.2001.y" { yyval.p = op2(BLTIN, (Node *) yyvsp[0].i, rectonode()); } break; case 136: #line 357 "awk.g.2001.y" { yyval.p = op2(CALL, valtonode(yyvsp[-2].cp,CVAR), NIL); } break; case 137: #line 358 "awk.g.2001.y" { yyval.p = op2(CALL, valtonode(yyvsp[-3].cp,CVAR), yyvsp[-1].p); } break; case 138: #line 359 "awk.g.2001.y" { yyval.p = op1(PREDECR, yyvsp[0].p); } break; case 139: #line 360 "awk.g.2001.y" { yyval.p = op1(PREINCR, yyvsp[0].p); } break; case 140: #line 361 "awk.g.2001.y" { yyval.p = op1(POSTDECR, yyvsp[-1].p); } break; case 141: #line 362 "awk.g.2001.y" { yyval.p = op1(POSTINCR, yyvsp[-1].p); } break; case 142: #line 363 "awk.g.2001.y" { yyval.p = op3(GETLINE, yyvsp[-2].p, (Node *)yyvsp[-1].i, yyvsp[0].p); } break; case 143: #line 364 "awk.g.2001.y" { yyval.p = op3(GETLINE, NIL, (Node *)yyvsp[-1].i, yyvsp[0].p); } break; case 144: #line 365 "awk.g.2001.y" { yyval.p = op3(GETLINE, yyvsp[0].p, NIL, NIL); } break; case 145: #line 366 "awk.g.2001.y" { yyval.p = op3(GETLINE, NIL, NIL, NIL); } break; case 146: #line 368 "awk.g.2001.y" { yyval.p = op2(INDEX, yyvsp[-3].p, yyvsp[-1].p); } break; case 147: #line 370 "awk.g.2001.y" { vyyerror(":98:Index() doesn't permit regular expressions"); yyval.p = op2(INDEX, yyvsp[-3].p, (Node*)yyvsp[-1].s); } break; case 148: #line 372 "awk.g.2001.y" { yyval.p = yyvsp[-1].p; } break; case 149: #line 374 "awk.g.2001.y" { yyval.p = op3(MATCHFCN, NIL, yyvsp[-3].p, (Node*)makedfa(yyvsp[-1].s, 1)); } break; case 150: #line 376 "awk.g.2001.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 151: #line 380 "awk.g.2001.y" { yyval.p = valtonode(yyvsp[0].cp, CCON); } break; case 152: #line 382 "awk.g.2001.y" { yyval.p = op4(SPLIT, yyvsp[-5].p, makearr(yyvsp[-3].p), yyvsp[-1].p, (Node*)STRING); } break; case 153: #line 384 "awk.g.2001.y" { yyval.p = op4(SPLIT, yyvsp[-5].p, makearr(yyvsp[-3].p), (Node*)makedfa(yyvsp[-1].s, 1), (Node *)REGEXPR); } break; case 154: #line 386 "awk.g.2001.y" { yyval.p = op4(SPLIT, yyvsp[-3].p, makearr(yyvsp[-1].p), NIL, (Node*)STRING); } break; case 155: #line 387 "awk.g.2001.y" { yyval.p = op1(yyvsp[-3].i, yyvsp[-1].p); } break; case 156: #line 388 "awk.g.2001.y" { yyval.p = valtonode(yyvsp[0].cp, CCON); } break; case 157: #line 390 "awk.g.2001.y" { yyval.p = op4(yyvsp[-5].i, NIL, (Node*)makedfa(yyvsp[-3].s, 1), yyvsp[-1].p, rectonode()); } break; case 158: #line 392 "awk.g.2001.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 159: #line 397 "awk.g.2001.y" { yyval.p = op4(yyvsp[-7].i, NIL, (Node*)makedfa(yyvsp[-5].s, 1), yyvsp[-3].p, yyvsp[-1].p); } break; case 160: #line 399 "awk.g.2001.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 161: #line 404 "awk.g.2001.y" { yyval.p = op3(SUBSTR, yyvsp[-5].p, yyvsp[-3].p, yyvsp[-1].p); } break; case 162: #line 406 "awk.g.2001.y" { yyval.p = op3(SUBSTR, yyvsp[-3].p, yyvsp[-1].p, NIL); } break; case 166: #line 413 "awk.g.2001.y" { yyval.p = op2(ARRAY, makearr(yyvsp[-3].p), yyvsp[-1].p); } break; case 167: #line 414 "awk.g.2001.y" { yyval.p = valtonode(yyvsp[0].cp, CFLD); } break; case 168: #line 415 "awk.g.2001.y" { yyval.p = op1(INDIRECT, valtonode(yyvsp[0].cp, CVAR)); } break; case 169: #line 416 "awk.g.2001.y" { yyval.p = op1(INDIRECT, yyvsp[0].p); } break; case 170: #line 420 "awk.g.2001.y" { arglist = yyval.p = 0; } break; case 171: #line 421 "awk.g.2001.y" { arglist = yyval.p = valtonode(yyvsp[0].cp,CVAR); } break; case 172: #line 422 "awk.g.2001.y" { arglist = yyval.p = linkum(yyvsp[-2].p,valtonode(yyvsp[0].cp,CVAR)); } break; case 173: #line 426 "awk.g.2001.y" { yyval.p = valtonode(yyvsp[0].cp, CVAR); } break; case 174: #line 427 "awk.g.2001.y" { yyval.p = op1(ARG, (Node *) yyvsp[0].i); } break; case 175: #line 428 "awk.g.2001.y" { yyval.p = op1(VARNF, (Node *) yyvsp[0].cp); } break; case 176: #line 433 "awk.g.2001.y" { yyval.p = notnull(yyvsp[-1].p); } break; #line 3269 "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); }