#ifndef lint static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; #endif #define YYBYACC 1 #line 2 "a2p.y" /* $RCSfile: a2p.y,v $$Revision: 4.1 $$Date: 92/08/07 18:29:12 $ * * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * $Log: a2p.y,v $ */ #include "INTERN.h" #include "a2p.h" int root; int begins = Nullop; int ends = Nullop; #line 24 "y.tab.c" #define BEGIN 257 #define END 258 #define REGEX 259 #define SEMINEW 260 #define NEWLINE 261 #define COMMENT 262 #define FUN1 263 #define FUNN 264 #define GRGR 265 #define PRINT 266 #define PRINTF 267 #define SPRINTF_OLD 268 #define SPRINTF_NEW 269 #define SPLIT 270 #define IF 271 #define ELSE 272 #define WHILE 273 #define FOR 274 #define IN 275 #define EXIT 276 #define NEXT 277 #define BREAK 278 #define CONTINUE 279 #define RET 280 #define GETLINE 281 #define DO 282 #define SUB 283 #define GSUB 284 #define MATCH 285 #define FUNCTION 286 #define USERFUN 287 #define DELETE 288 #define ASGNOP 289 #define OROR 290 #define ANDAND 291 #define NUMBER 292 #define VAR 293 #define SUBSTR 294 #define INDEX 295 #define MATCHOP 296 #define RELOP 297 #define OR 298 #define STRING 299 #define UMINUS 300 #define NOT 301 #define INCR 302 #define DECR 303 #define FIELD 304 #define VFIELD 305 #define YYERRCODE 256 short yylhs[] = { -1, 0, 3, 6, 6, 2, 2, 7, 7, 7, 7, 7, 7, 9, 8, 8, 11, 11, 11, 11, 11, 15, 15, 15, 15, 14, 14, 14, 14, 13, 13, 13, 13, 12, 12, 12, 12, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 10, 10, 10, 19, 19, 19, 1, 1, 20, 20, 20, 20, 4, 4, 21, 21, 22, 22, 22, 22, 5, 5, 23, 23, 23, 23, 26, 26, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 27, 27, 27, 25, 25, 25, 25, 25, 25, 25, 25, }; short yylen[] = { 2, 2, 6, 5, 2, 3, 0, 1, 5, 10, 4, 1, 1, 1, 1, 3, 1, 1, 1, 1, 5, 3, 4, 4, 2, 3, 3, 3, 3, 3, 3, 1, 3, 1, 2, 5, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 1, 2, 3, 4, 3, 4, 1, 3, 4, 4, 4, 4, 2, 8, 6, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, 1, 4, 1, 2, 1, 1, 0, 4, 4, 3, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 2, 2, 2, 2, 2, 0, 3, 2, 2, 1, 1, 0, 1, 4, 2, 4, 2, 1, 1, 1, 2, 1, 1, 2, 5, 1, 1, 1, 6, 9, 6, 7, 10, 9, 6, 5, }; short yydefred[] = { 96, 0, 0, 98, 99, 100, 97, 0, 95, 0, 0, 31, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 0, 0, 87, 0, 102, 0, 11, 0, 96, 0, 0, 0, 17, 18, 19, 0, 0, 0, 102, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 51, 52, 0, 0, 0, 0, 0, 0, 4, 0, 102, 0, 102, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 68, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 104, 0, 101, 55, 32, 28, 21, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 0, 0, 64, 65, 67, 0, 0, 0, 0, 0, 0, 0, 0, 13, 66, 86, 0, 0, 102, 0, 0, 0, 0, 0, 0, 123, 122, 126, 0, 102, 0, 102, 10, 102, 0, 109, 0, 114, 0, 0, 0, 22, 0, 61, 94, 0, 0, 96, 3, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 102, 102, 8, 0, 0, 0, 0, 0, 73, 0, 78, 0, 77, 0, 80, 0, 79, 0, 75, 76, 0, 70, 0, 74, 131, 130, 132, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 102, 102, 102, 0, 0, 0, 102, 72, 71, 82, 81, 84, 83, 0, 69, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 135, 139, 0, 0, 0, 9, 102, 102, 0, 136, 0, 0, 102, 134, 138, 0, 137, }; short yydgoto[] = { 1, 2, 7, 37, 73, 127, 38, 39, 40, 170, 103, 74, 192, 43, 44, 45, 46, 47, 48, 105, 8, 128, 233, 193, 194, 195, 265, 259, }; short yysindex[] = { 0, 0, -52, 0, 0, 0, 0, 2796, 0, -90, -86, 0, 17, 25, 0, 38, 44, -57, 45, 47, 48, -219, 49, 0, -1, 51, 52, 0, 7708, 7708, 6350, -238, -238, 0, 7708, 0, 6350, 0, -165, 0, -21, -12, 5968, 0, 0, 0, -32, -253, 7759, 0, 0, 7372, 7759, 7759, 7708, 7708, 46, 7419, 7473, 7708, 65, 7759, 7759, 7708, 7708, 6350, -54, -228, -54, 0, 0, 0, -5, -185, -41, 71, 76, 80, 0, -52, 0, 7708, 0, 0, 6350, 7708, 7528, 7708, 7708, 7708, -32, -171, 7708, 7708, 7708, 7708, 7708, 7708, -152, 6350, 0, 0, 6397, 0, 6481, 86, -185, -185, 0, 6528, 90, 91, 6583, 184, 7708, 89, 6630, 93, 6673, 6716, 7759, 94, 41, 6761, 6816, 0, 0, 5228, 0, 0, 0, 0, 0, -185, 6863, 6015, 6015, -49, 6906, 0, 184, 184, 184, 184, 0, -8, -8, -54, -54, -54, -54, -238, -49, 6397, 5924, 28, 0, 0, 5320, 5411, 0, 0, 0, -154, 184, 7708, 7708, 7708, 7708, 7575, 100, 0, 0, 0, 7708, 7708, 0, 7759, 7759, 104, 105, 117, 7708, 0, 0, 0, 7708, 0, -151, 0, 0, 0, 7618, 0, -43, 0, 5495, 7708, -129, 0, 7708, 0, 0, 3816, 3816, 0, 0, 29, 6062, 6119, 6203, 6248, 122, 6949, 0, 6295, 6994, -185, -45, -45, 6350, 6350, 4306, 7618, 7618, 4429, 81, -185, -185, 0, 0, 0, 0, 0, 0, 7618, 7618, 7618, 7618, -52, 0, 7665, 0, 7708, 0, 7708, 0, 7708, 0, 7708, 0, 0, -96, 0, 7708, 0, 0, 0, 0, 7708, 7708, -39, -37, 7049, 0, 108, -97, 7759, 5586, -185, -185, -185, -185, -185, 136, 7096, 7139, 7182, 7227, 7282, 0, 7329, 7618, 7618, 0, 0, 0, 3890, 138, 88, 0, 0, 0, 0, 0, 0, 0, -185, 0, 4429, 4429, 4429, 4306, -51, 6350, 0, -185, 5678, -89, 0, 0, 141, 4306, -35, 0, 0, 0, 143, 0, 4429, 4429, 0, 0, 0, 4429, 0, }; short yyrindex[] = { 0, 0, 2452, 0, 0, 0, 0, 185, 0, 0, 0, 0, 56, 0, 0, 111, 0, 2886, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2279, 0, 2328, 2048, 4023, 0, 0, 0, 2120, 1671, 3590, 0, 0, 0, 145, 145, 0, 0, 382, 0, 0, 0, 0, 145, 95, 0, 0, 0, 818, 872, 946, 0, 0, 0, 437, 5769, 0, -16, -10, 18, 0, 2511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3951, 492, 5769, 5769, 0, 0, 0, 0, 0, 2934, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5769, 0, 0, 0, 2221, 0, 0, 2982, 3222, 3267, 3312, 0, 1781, 1854, 1217, 1271, 1325, 1400, 2619, 1726, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 0, 0, 0, 171, 0, 0, 0, 174, 0, 0, 0, 0, 0, 242, 0, 0, 0, 0, 0, 763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4508, 248, 297, 0, 0, 128, 350, 358, 0, 0, 5769, 4604, 0, 0, 0, 0, 0, 0, 3657, 3705, 3760, 3866, 2561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 95, 0, 4695, 4779, 4870, 4962, 5053, 0, 0, 0, 0, 0, 0, 0, 0, 398, 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5769, 0, 0, 0, 0, 149, 0, 0, 0, 5137, 0, 5853, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; short yygindex[] = { 0, -30, 0, 0, 4250, -24, 0, 0, 0, 0, 397, 24, 4208, -17, -15, -13, 7990, 4404, 0, -82, 0, 0, 0, -173, -192, 0, -277, -28, }; #define YYTABLESIZE 8273 short yytable[] = { 129, 85, 284, 55, 285, 96, 318, 6, 312, 79, 94, 92, 81, 93, 81, 95, 232, 257, 16, 75, 155, 76, 81, 77, 81, 311, 81, 280, 81, 96, 264, 41, 84, 49, 94, 317, 99, 50, 85, 95, 97, 85, 85, 85, 85, 85, 85, 17, 85, 100, 101, 81, 266, 18, 69, 24, 62, 51, 98, 85, 85, 85, 97, 85, 85, 52, 33, 34, 60, 202, 240, 155, 157, 241, 100, 101, 125, 126, 53, 258, 98, 19, 158, 159, 54, 57, 97, 58, 59, 61, 62, 63, 64, 62, 85, 85, 78, 62, 62, 62, 62, 62, 80, 62, 98, 120, 114, 98, 137, 196, 264, 37, 130, 85, 62, 62, 62, 131, 62, 62, 264, 132, 144, 152, 85, 85, 308, 309, 310, 151, 157, 161, 162, 165, 173, 172, 75, 167, 76, 207, 77, 214, 226, 91, 220, 221, 322, 323, 37, 62, 62, 325, 37, 37, 37, 37, 37, 222, 37, 198, 199, 91, 83, 250, 91, 125, 126, 287, 62, 37, 37, 37, 267, 37, 37, 239, 288, 291, 304, 62, 62, 305, 316, 315, 321, 1, 91, 116, 91, 117, 116, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 37, 37, 0, 0, 3, 4, 5, 0, 124, 0, 0, 127, 0, 229, 230, 231, 256, 0, 0, 37, 65, 0, 91, 28, 0, 29, 124, 0, 0, 127, 37, 37, 24, 0, 0, 82, 83, 82, 83, 91, 261, 262, 0, 33, 34, 82, 83, 82, 83, 82, 83, 82, 83, 0, 85, 85, 85, 85, 85, 85, 85, 85, 85, 16, 16, 85, 85, 85, 0, 307, 17, 17, 85, 0, 82, 83, 18, 18, 85, 117, 85, 85, 85, 85, 85, 119, 85, 85, 85, 85, 85, 85, 85, 85, 85, 0, 85, 117, 85, 85, 85, 85, 85, 119, 19, 19, 0, 303, 0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0, 0, 62, 62, 62, 0, 313, 0, 0, 62, 0, 0, 0, 0, 0, 62, 121, 62, 62, 62, 62, 62, 0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0, 62, 121, 62, 62, 62, 62, 62, 91, 91, 91, 0, 0, 91, 37, 37, 37, 37, 37, 37, 37, 37, 37, 0, 0, 37, 37, 37, 57, 0, 0, 0, 37, 0, 0, 0, 0, 125, 37, 0, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37, 37, 37, 125, 37, 0, 37, 37, 37, 37, 37, 128, 0, 57, 0, 0, 57, 57, 57, 57, 57, 57, 0, 57, 0, 124, 124, 124, 127, 127, 127, 88, 0, 118, 57, 57, 0, 0, 57, 57, 0, 12, 13, 110, 111, 0, 14, 15, 16, 0, 0, 118, 121, 122, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 120, 0, 88, 57, 57, 88, 88, 88, 88, 88, 88, 27, 88, 0, 31, 32, 33, 34, 120, 0, 90, 0, 57, 88, 88, 88, 0, 88, 88, 0, 117, 117, 117, 57, 57, 0, 119, 119, 119, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 88, 88, 90, 90, 90, 90, 0, 90, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 0, 90, 90, 0, 121, 121, 121, 88, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 125, 125, 125, 0, 0, 90, 90, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57, 57, 57, 57, 57, 57, 57, 0, 0, 57, 57, 57, 0, 0, 0, 0, 57, 118, 118, 118, 0, 0, 57, 289, 57, 57, 57, 57, 57, 0, 57, 57, 57, 57, 57, 57, 57, 57, 57, 0, 57, 0, 57, 57, 57, 57, 57, 0, 0, 0, 120, 120, 120, 88, 88, 88, 88, 88, 88, 88, 88, 88, 0, 0, 88, 88, 88, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 88, 0, 88, 88, 88, 88, 88, 0, 88, 88, 88, 88, 88, 88, 88, 88, 88, 0, 88, 0, 88, 88, 88, 88, 88, 0, 0, 0, 0, 0, 0, 90, 90, 90, 90, 90, 90, 90, 90, 90, 0, 0, 90, 90, 90, 23, 0, 0, 0, 90, 0, 0, 0, 0, 0, 90, 0, 90, 90, 90, 90, 90, 0, 90, 90, 90, 90, 90, 90, 90, 90, 90, 0, 90, 0, 90, 90, 90, 90, 90, 0, 0, 23, 0, 0, 23, 23, 23, 23, 23, 23, 0, 23, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 23, 23, 23, 0, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 23, 23, 54, 54, 54, 54, 54, 54, 0, 54, 0, 0, 0, 0, 0, 0, 39, 0, 0, 23, 54, 54, 54, 0, 54, 54, 0, 0, 0, 0, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 54, 39, 39, 39, 39, 39, 39, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 39, 0, 39, 39, 0, 0, 0, 0, 0, 54, 54, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 39, 0, 53, 53, 53, 53, 53, 53, 0, 53, 0, 39, 39, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53, 0, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 23, 23, 23, 23, 23, 0, 0, 23, 23, 23, 0, 0, 0, 0, 23, 53, 0, 0, 0, 0, 23, 0, 23, 23, 23, 23, 23, 0, 23, 23, 0, 23, 23, 23, 23, 23, 23, 0, 23, 0, 23, 23, 23, 23, 23, 53, 53, 0, 0, 0, 0, 54, 54, 54, 54, 54, 54, 54, 54, 54, 0, 0, 54, 54, 54, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 54, 0, 54, 54, 54, 54, 54, 0, 54, 54, 54, 54, 54, 54, 54, 54, 54, 0, 54, 0, 54, 54, 54, 54, 54, 0, 0, 0, 0, 0, 39, 39, 39, 39, 39, 39, 39, 39, 39, 0, 0, 39, 39, 39, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 39, 0, 39, 39, 39, 39, 39, 0, 39, 39, 39, 39, 39, 39, 39, 39, 39, 0, 39, 0, 39, 0, 0, 39, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53, 53, 53, 53, 53, 53, 53, 0, 0, 53, 53, 53, 44, 0, 0, 0, 53, 0, 0, 0, 0, 0, 53, 0, 53, 53, 53, 53, 53, 0, 53, 53, 53, 53, 53, 53, 53, 53, 53, 0, 53, 0, 53, 53, 53, 53, 53, 0, 0, 44, 0, 0, 44, 44, 44, 44, 44, 44, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 44, 44, 44, 0, 44, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 44, 45, 45, 45, 45, 45, 45, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 45, 45, 45, 0, 45, 45, 0, 0, 0, 0, 0, 44, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 45, 46, 46, 46, 46, 46, 46, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46, 0, 46, 46, 0, 0, 0, 0, 0, 45, 45, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 47, 47, 47, 47, 47, 47, 0, 47, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 44, 44, 44, 44, 44, 44, 0, 0, 44, 44, 44, 0, 0, 0, 0, 44, 47, 0, 0, 0, 0, 44, 0, 44, 44, 44, 44, 44, 0, 44, 44, 44, 44, 44, 44, 44, 44, 44, 0, 44, 0, 44, 44, 44, 44, 44, 47, 47, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 0, 0, 45, 45, 45, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 45, 0, 45, 45, 45, 45, 45, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 0, 45, 0, 45, 45, 45, 45, 45, 0, 0, 0, 0, 0, 46, 46, 46, 46, 46, 46, 46, 46, 46, 0, 0, 46, 46, 46, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 46, 0, 46, 46, 46, 46, 46, 0, 46, 46, 46, 46, 46, 46, 46, 46, 46, 0, 46, 0, 46, 46, 46, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 47, 47, 47, 39, 0, 0, 0, 47, 0, 0, 0, 0, 0, 47, 0, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 0, 47, 47, 47, 47, 47, 0, 0, 39, 0, 0, 39, 39, 39, 39, 39, 39, 0, 39, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 39, 39, 39, 0, 39, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 39, 39, 36, 36, 36, 36, 36, 36, 0, 36, 0, 0, 0, 0, 0, 0, 0, 42, 0, 39, 36, 36, 36, 0, 36, 0, 0, 0, 0, 0, 39, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 42, 42, 0, 42, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 42, 42, 42, 0, 42, 42, 0, 0, 0, 0, 36, 36, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 0, 43, 43, 43, 0, 0, 0, 0, 42, 42, 0, 0, 0, 0, 0, 0, 43, 43, 43, 0, 43, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 39, 39, 39, 39, 39, 39, 39, 0, 0, 39, 39, 39, 0, 0, 0, 0, 39, 43, 0, 0, 0, 0, 39, 0, 39, 39, 39, 39, 39, 0, 0, 39, 39, 39, 39, 39, 39, 39, 39, 0, 39, 0, 39, 0, 0, 39, 39, 43, 43, 0, 0, 0, 0, 36, 36, 36, 36, 36, 36, 36, 36, 36, 0, 0, 36, 36, 36, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 36, 0, 36, 36, 36, 36, 36, 0, 36, 0, 0, 36, 36, 36, 36, 36, 36, 0, 36, 0, 36, 36, 36, 36, 36, 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 14, 42, 42, 42, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 42, 0, 42, 42, 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, 0, 42, 42, 42, 42, 42, 0, 14, 0, 0, 14, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 43, 43, 43, 43, 43, 43, 43, 43, 43, 33, 0, 43, 43, 43, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 43, 0, 43, 43, 43, 43, 43, 0, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 43, 0, 43, 43, 43, 43, 43, 33, 33, 0, 0, 33, 0, 0, 0, 0, 0, 34, 14, 0, 0, 0, 0, 0, 0, 33, 33, 33, 0, 33, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 33, 34, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 34, 34, 34, 0, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 34, 15, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 14, 14, 14, 12, 0, 0, 12, 0, 12, 0, 0, 0, 7, 14, 0, 14, 14, 14, 14, 14, 0, 0, 12, 0, 14, 14, 14, 14, 15, 0, 0, 14, 0, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 7, 0, 7, 0, 0, 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 0, 7, 33, 33, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 12, 33, 33, 33, 33, 33, 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 0, 33, 0, 33, 33, 33, 33, 33, 0, 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, 0, 34, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 6, 34, 34, 34, 34, 34, 0, 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, 34, 0, 34, 34, 34, 34, 34, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 15, 15, 15, 6, 0, 0, 6, 0, 6, 0, 0, 0, 0, 15, 0, 15, 15, 15, 15, 15, 0, 0, 5, 0, 15, 15, 15, 15, 0, 0, 0, 15, 0, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0, 12, 12, 12, 0, 0, 0, 12, 12, 12, 0, 5, 0, 0, 5, 0, 5, 0, 0, 0, 12, 2, 12, 12, 12, 12, 12, 0, 0, 0, 0, 12, 12, 12, 12, 6, 0, 0, 12, 0, 12, 12, 12, 12, 12, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 0, 0, 2, 0, 0, 2, 0, 2, 0, 0, 7, 0, 7, 7, 7, 7, 7, 0, 0, 0, 60, 7, 7, 7, 7, 0, 0, 0, 7, 0, 7, 7, 7, 7, 7, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 60, 60, 60, 60, 60, 60, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 60, 60, 0, 60, 60, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 60, 60, 0, 6, 6, 0, 0, 0, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 6, 0, 6, 6, 6, 6, 6, 0, 0, 60, 60, 6, 6, 6, 6, 0, 0, 0, 6, 0, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 5, 0, 5, 5, 5, 5, 5, 0, 2, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 36, 0, 0, 28, 0, 29, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0, 56, 60, 60, 60, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 60, 0, 60, 60, 60, 60, 60, 0, 60, 60, 60, 60, 0, 60, 60, 60, 60, 0, 60, 35, 60, 60, 60, 56, 0, 0, 56, 56, 56, 56, 56, 56, 0, 56, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 56, 0, 0, 56, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 58, 58, 0, 58, 56, 56, 58, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 0, 58, 58, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 56, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 29, 29, 0, 29, 58, 58, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 29, 0, 29, 29, 58, 0, 0, 0, 0, 0, 0, 9, 10, 11, 0, 58, 58, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 17, 0, 18, 19, 20, 21, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 29, 27, 0, 30, 31, 32, 33, 34, 0, 0, 0, 29, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 56, 56, 56, 56, 56, 56, 56, 56, 0, 0, 56, 56, 56, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 56, 0, 56, 56, 56, 56, 56, 0, 56, 56, 56, 56, 0, 56, 56, 56, 56, 0, 56, 0, 56, 56, 56, 0, 58, 58, 58, 58, 58, 58, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 25, 58, 58, 58, 58, 58, 58, 58, 58, 58, 0, 0, 0, 58, 0, 0, 0, 29, 29, 29, 29, 29, 29, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 25, 0, 0, 0, 25, 25, 0, 25, 27, 29, 25, 0, 29, 29, 29, 29, 29, 29, 29, 29, 29, 25, 25, 25, 29, 25, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 27, 27, 0, 27, 26, 0, 27, 25, 25, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 27, 0, 27, 27, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 0, 0, 26, 0, 0, 0, 26, 26, 0, 26, 0, 0, 26, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 0, 26, 26, 0, 0, 0, 27, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 59, 59, 26, 59, 0, 0, 59, 0, 0, 0, 0, 0, 0, 26, 26, 0, 0, 59, 59, 59, 0, 59, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 59, 0, 0, 0, 25, 25, 25, 25, 25, 25, 0, 0, 25, 0, 0, 0, 0, 0, 59, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 59, 59, 0, 0, 25, 0, 0, 25, 25, 25, 25, 25, 25, 25, 25, 25, 0, 0, 0, 25, 27, 27, 27, 27, 27, 27, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 27, 27, 27, 27, 27, 27, 27, 27, 27, 0, 0, 0, 27, 26, 26, 26, 26, 26, 26, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 26, 26, 26, 26, 26, 26, 26, 26, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 91, 91, 0, 91, 0, 0, 91, 59, 59, 59, 59, 59, 59, 0, 0, 59, 0, 91, 91, 91, 0, 91, 91, 0, 0, 59, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 59, 59, 59, 59, 59, 59, 59, 59, 59, 0, 0, 0, 59, 91, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 20, 20, 0, 20, 91, 0, 20, 35, 0, 0, 0, 0, 0, 0, 0, 91, 91, 20, 20, 20, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 35, 35, 0, 35, 20, 20, 35, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 35, 35, 35, 0, 35, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 35, 35, 0, 92, 92, 0, 92, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 92, 92, 92, 0, 92, 0, 0, 0, 0, 0, 35, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 91, 91, 91, 91, 92, 92, 91, 65, 0, 0, 28, 0, 29, 0, 0, 0, 91, 93, 0, 0, 0, 0, 0, 92, 0, 0, 0, 91, 0, 0, 91, 91, 91, 0, 92, 92, 0, 91, 91, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 93, 93, 0, 93, 0, 0, 93, 20, 20, 20, 20, 20, 20, 0, 0, 20, 0, 93, 93, 93, 0, 93, 0, 36, 0, 20, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 20, 20, 20, 302, 0, 89, 0, 20, 20, 0, 0, 0, 20, 93, 93, 0, 35, 35, 35, 35, 35, 35, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 93, 0, 35, 0, 0, 0, 0, 0, 0, 0, 89, 93, 93, 35, 89, 89, 35, 35, 35, 0, 89, 0, 0, 35, 35, 0, 0, 0, 35, 0, 0, 89, 89, 89, 0, 89, 0, 0, 0, 92, 92, 92, 92, 92, 92, 16, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 92, 0, 0, 92, 92, 92, 0, 0, 0, 0, 92, 92, 0, 0, 16, 92, 0, 89, 16, 16, 0, 16, 0, 0, 16, 0, 0, 0, 89, 89, 0, 125, 126, 12, 13, 16, 16, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 16, 16, 31, 32, 33, 34, 0, 93, 93, 93, 93, 93, 93, 0, 0, 93, 0, 0, 0, 16, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 16, 16, 0, 11, 0, 0, 93, 12, 13, 93, 93, 93, 14, 15, 16, 0, 93, 93, 0, 0, 0, 93, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 89, 89, 89, 89, 0, 42, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 42, 0, 89, 89, 89, 0, 42, 0, 0, 89, 89, 0, 0, 0, 89, 0, 0, 0, 104, 0, 0, 109, 104, 104, 112, 113, 0, 116, 118, 119, 0, 104, 104, 123, 124, 42, 0, 0, 0, 0, 0, 0, 16, 16, 16, 16, 16, 16, 0, 0, 16, 134, 0, 0, 42, 138, 140, 141, 142, 143, 16, 106, 107, 0, 0, 0, 0, 0, 0, 42, 0, 16, 154, 0, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 164, 0, 16, 0, 0, 0, 104, 0, 133, 0, 135, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 0, 65, 0, 0, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 209, 210, 211, 213, 0, 0, 0, 0, 215, 216, 0, 104, 104, 0, 0, 0, 223, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 203, 204, 236, 0, 0, 237, 238, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 217, 0, 42, 42, 263, 0, 67, 67, 0, 70, 71, 225, 67, 227, 0, 228, 0, 0, 0, 0, 67, 0, 0, 275, 0, 276, 0, 277, 0, 278, 0, 279, 0, 0, 0, 0, 281, 0, 252, 0, 0, 282, 283, 65, 0, 0, 28, 0, 29, 104, 0, 0, 0, 269, 270, 271, 272, 273, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 42, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 42, 67, 0, 0, 67, 67, 0, 0, 67, 0, 67, 67, 0, 0, 0, 67, 67, 0, 297, 0, 0, 0, 299, 300, 301, 0, 67, 0, 306, 0, 67, 0, 67, 67, 67, 67, 113, 0, 0, 113, 189, 113, 0, 201, 0, 0, 67, 0, 0, 0, 0, 0, 0, 319, 320, 113, 67, 12, 13, 324, 177, 178, 14, 15, 16, 0, 0, 0, 0, 0, 182, 183, 184, 185, 186, 17, 0, 18, 19, 20, 0, 22, 188, 0, 67, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 67, 67, 67, 67, 0, 67, 0, 67, 67, 0, 0, 0, 0, 0, 0, 67, 67, 0, 0, 113, 0, 113, 0, 0, 0, 0, 0, 67, 67, 67, 67, 0, 112, 0, 0, 112, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 67, 67, 67, 67, 0, 67, 67, 67, 0, 176, 125, 126, 12, 13, 0, 177, 178, 14, 15, 16, 179, 0, 180, 181, 0, 182, 183, 184, 185, 186, 17, 187, 18, 19, 20, 0, 22, 188, 0, 0, 0, 23, 24, 25, 26, 0, 0, 112, 27, 112, 0, 31, 32, 33, 34, 106, 0, 0, 106, 0, 106, 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, 113, 0, 0, 113, 113, 0, 113, 113, 113, 113, 113, 113, 113, 113, 113, 0, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 0, 113, 113, 0, 0, 0, 113, 113, 113, 113, 0, 0, 0, 113, 0, 0, 113, 113, 113, 113, 0, 0, 0, 0, 106, 107, 106, 0, 107, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 112, 112, 0, 112, 112, 112, 112, 112, 112, 112, 112, 112, 0, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 0, 112, 112, 0, 0, 0, 112, 112, 112, 112, 0, 0, 107, 112, 107, 0, 112, 112, 112, 112, 108, 0, 0, 108, 0, 108, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 106, 106, 0, 106, 106, 106, 106, 106, 106, 106, 106, 106, 0, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 0, 106, 106, 0, 0, 0, 106, 106, 106, 106, 0, 0, 108, 106, 108, 0, 106, 106, 106, 106, 0, 105, 0, 0, 105, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 107, 107, 0, 107, 107, 107, 107, 107, 107, 107, 107, 107, 0, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 0, 107, 107, 0, 0, 0, 107, 107, 107, 107, 0, 0, 0, 107, 0, 0, 107, 107, 107, 107, 105, 0, 105, 0, 0, 0, 0, 0, 111, 0, 0, 111, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 108, 108, 0, 108, 108, 108, 108, 108, 108, 108, 108, 108, 0, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 0, 108, 108, 0, 0, 0, 108, 108, 108, 108, 0, 0, 0, 108, 0, 0, 108, 108, 108, 108, 111, 140, 111, 0, 140, 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 105, 105, 0, 105, 105, 105, 105, 105, 105, 105, 105, 105, 0, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 0, 105, 105, 0, 0, 0, 105, 105, 105, 105, 0, 0, 140, 105, 140, 0, 105, 105, 105, 105, 65, 0, 0, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 111, 111, 0, 111, 111, 111, 111, 111, 111, 111, 111, 111, 0, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 0, 111, 111, 0, 0, 0, 111, 111, 111, 111, 0, 0, 189, 111, 190, 0, 111, 111, 111, 111, 0, 65, 0, 0, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 140, 140, 0, 140, 140, 140, 140, 140, 140, 140, 140, 140, 0, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 0, 140, 140, 0, 0, 0, 140, 140, 140, 140, 0, 0, 0, 140, 0, 0, 140, 140, 140, 140, 189, 0, 205, 0, 0, 0, 0, 0, 65, 0, 0, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 12, 13, 0, 177, 178, 14, 15, 16, 179, 0, 180, 181, 0, 182, 183, 184, 185, 186, 17, 187, 18, 19, 20, 0, 22, 188, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 189, 65, 206, 0, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 12, 13, 0, 177, 178, 14, 15, 16, 179, 0, 180, 181, 0, 182, 183, 184, 185, 186, 17, 187, 18, 19, 20, 0, 22, 188, 0, 0, 0, 23, 24, 25, 26, 0, 0, 189, 27, 234, 0, 31, 32, 33, 34, 65, 0, 0, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 12, 13, 0, 177, 178, 14, 15, 16, 179, 0, 180, 181, 0, 182, 183, 184, 185, 186, 17, 187, 18, 19, 20, 0, 22, 188, 0, 0, 0, 23, 24, 25, 26, 0, 0, 189, 27, 290, 0, 31, 32, 33, 34, 0, 65, 0, 0, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 12, 13, 0, 177, 178, 14, 15, 16, 179, 0, 180, 181, 0, 182, 183, 184, 185, 186, 17, 187, 18, 19, 20, 0, 22, 188, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 189, 0, 314, 0, 0, 0, 0, 0, 110, 0, 0, 110, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 12, 13, 0, 177, 178, 14, 15, 16, 179, 0, 180, 181, 0, 182, 183, 184, 185, 186, 17, 187, 18, 19, 20, 0, 22, 188, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 110, 133, 110, 0, 133, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 12, 13, 0, 177, 178, 14, 15, 16, 179, 0, 180, 181, 0, 182, 183, 184, 185, 186, 17, 187, 18, 19, 20, 65, 22, 188, 28, 156, 29, 23, 24, 25, 26, 0, 0, 133, 27, 133, 0, 31, 32, 33, 34, 88, 0, 89, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 110, 89, 85, 110, 110, 0, 110, 110, 110, 110, 110, 110, 0, 110, 110, 0, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 36, 110, 110, 28, 0, 29, 110, 110, 110, 110, 0, 0, 0, 110, 0, 0, 110, 110, 110, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 242, 0, 28, 243, 29, 0, 0, 0, 0, 0, 133, 0, 0, 133, 133, 0, 133, 133, 133, 133, 133, 133, 85, 133, 133, 0, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 0, 133, 133, 0, 0, 0, 133, 133, 133, 133, 0, 0, 0, 133, 0, 0, 133, 133, 133, 133, 65, 244, 0, 28, 245, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 86, 87, 0, 27, 0, 0, 31, 32, 33, 34, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 65, 246, 0, 28, 247, 29, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 86, 87, 85, 27, 0, 0, 31, 32, 33, 34, 11, 0, 125, 126, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 248, 0, 28, 249, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 30, 31, 32, 33, 34, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 253, 0, 28, 254, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 36, 0, 0, 28, 0, 29, 0, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 0, 0, 28, 156, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 160, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 0, 0, 28, 163, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 30, 31, 32, 33, 34, 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 0, 0, 28, 166, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 28, 168, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 65, 0, 0, 28, 169, 29, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 85, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 0, 0, 28, 174, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 0, 0, 28, 175, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 0, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 197, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 0, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 200, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 251, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 255, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 286, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 292, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 293, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 294, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 295, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 296, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 298, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 85, 0, 0, 27, 0, 0, 31, 32, 33, 34, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 65, 108, 0, 28, 0, 29, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 65, 0, 0, 28, 17, 29, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 65, 22, 0, 28, 0, 29, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 65, 22, 0, 28, 0, 29, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 65, 22, 0, 28, 0, 29, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 65, 22, 0, 28, 0, 29, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 115, 0, 0, 85, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 65, 22, 0, 28, 0, 29, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 65, 0, 0, 28, 0, 29, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 102, 0, 0, 28, 0, 29, 0, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 212, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 274, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 12, 13, 0, 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 66, 68, 0, 0, 12, 13, 72, 0, 0, 14, 15, 16, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 19, 20, 0, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 0, 0, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 146, 147, 148, 149, 150, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 90, 0, 0, 90, 90, 0, 0, 90, 0, 90, 90, 0, 0, 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 90, 0, 90, 90, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 90, 0, 90, 0, 90, 90, 0, 0, 0, 0, 0, 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 90, 90, 0, 90, 90, 90, }; short yycheck[] = { 41, 0, 41, 60, 41, 37, 41, 59, 59, 39, 42, 43, 63, 45, 63, 47, 59, 62, 41, 36, 102, 36, 63, 36, 63, 302, 63, 123, 63, 37, 222, 7, 44, 123, 42, 312, 289, 123, 37, 47, 94, 40, 41, 42, 43, 44, 45, 63, 47, 302, 303, 63, 225, 63, 30, 293, 0, 40, 112, 58, 59, 60, 94, 62, 63, 40, 304, 305, 287, 41, 41, 153, 44, 44, 302, 303, 261, 262, 40, 124, 112, 63, 106, 107, 40, 40, 94, 40, 40, 40, 91, 40, 40, 37, 93, 94, 261, 41, 42, 43, 44, 45, 123, 47, 112, 40, 60, 112, 84, 133, 302, 0, 41, 112, 58, 59, 60, 41, 62, 63, 312, 41, 293, 99, 123, 124, 299, 300, 301, 281, 44, 41, 41, 44, 93, 41, 153, 44, 153, 293, 153, 41, 293, 41, 40, 40, 319, 320, 37, 93, 94, 324, 41, 42, 43, 44, 45, 40, 47, 135, 136, 59, 291, 41, 62, 261, 262, 59, 112, 58, 59, 60, 91, 62, 63, 205, 273, 41, 40, 123, 124, 93, 41, 272, 41, 0, 41, 59, 93, 59, 41, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 93, 94, -1, -1, 260, 261, 262, -1, 41, -1, -1, 41, -1, 260, 261, 262, 265, -1, -1, 112, 40, -1, 124, 43, -1, 45, 59, -1, -1, 59, 123, 124, 293, -1, -1, 290, 291, 290, 291, 275, 220, 221, -1, 304, 305, 290, 291, 290, 291, 290, 291, 290, 291, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, 290, 291, 268, 269, 270, -1, 297, 290, 291, 275, -1, 290, 291, 290, 291, 281, 41, 283, 284, 285, 286, 287, 41, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, 59, 301, 302, 303, 304, 305, 59, 290, 291, -1, 287, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, 304, -1, -1, 275, -1, -1, -1, -1, -1, 281, 41, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, 59, 301, 302, 303, 304, 305, 260, 261, 262, -1, -1, 265, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, 0, -1, -1, -1, 275, -1, -1, -1, -1, 41, 281, -1, 283, 284, 285, 286, 287, 41, 289, 290, 291, 292, 293, 294, 295, 296, 297, 59, 299, -1, 301, 302, 303, 304, 305, 59, -1, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, -1, 260, 261, 262, 260, 261, 262, 0, -1, 41, 58, 59, -1, -1, 62, 63, -1, 263, 264, 52, 53, -1, 268, 269, 270, -1, -1, 59, 61, 62, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, 41, -1, 37, 93, 94, 40, 41, 42, 43, 44, 45, 299, 47, -1, 302, 303, 304, 305, 59, -1, 0, -1, 112, 58, 59, 60, -1, 62, 63, -1, 260, 261, 262, 123, 124, -1, 260, 261, 262, -1, -1, -1, -1, -1, -1, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 93, 94, 40, 41, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, 260, 261, 262, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 177, 178, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 112, -1, -1, -1, -1, -1, 260, 261, 262, -1, -1, 123, 124, -1, 260, 261, 262, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, 275, 260, 261, 262, -1, -1, 281, 267, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, 260, 261, 262, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, 0, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 93, 94, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, 0, -1, -1, 112, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, 93, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 112, -1, 40, 41, 42, 43, 44, 45, -1, 47, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, 275, 93, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 123, 124, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, -1, -1, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, 0, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, 93, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, 93, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, 275, 93, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 123, 124, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, 0, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 93, 94, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, 0, -1, 112, 58, 59, 60, -1, 62, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 112, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, 123, 124, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, 275, 93, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, -1, -1, 304, 305, 123, 124, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, -1, -1, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, 0, 268, 269, 270, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, 0, -1, 268, 269, 270, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 40, 41, -1, -1, 44, -1, -1, -1, -1, -1, 0, 123, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 93, 44, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, 93, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, 268, 269, 270, 40, -1, -1, 43, -1, 45, -1, -1, -1, 0, 281, -1, 283, 284, 285, 286, 287, -1, -1, 59, -1, 292, 293, 294, 295, 123, -1, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, 59, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, 123, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, 0, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, 268, 269, 270, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, -1, 0, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, -1, 262, 263, 264, -1, -1, -1, 268, 269, 270, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, 281, 0, 283, 284, 285, 286, 287, -1, -1, -1, -1, 292, 293, 294, 295, 123, -1, -1, 299, -1, 301, 302, 303, 304, 305, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, -1, -1, 0, 292, 293, 294, 295, -1, -1, -1, 299, -1, 301, 302, 303, 304, 305, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, 60, -1, 62, 63, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 93, 94, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, 112, -1, 281, -1, 283, 284, 285, 286, 287, -1, -1, 123, 124, 292, 293, 294, 295, -1, -1, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, 301, 302, 303, 304, 305, -1, 257, 258, 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, 281, -1, 283, 284, 285, 286, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, 0, 268, 269, 270, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, -1, 294, 295, 296, 297, -1, 299, 123, 301, 302, 303, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, 41, 42, -1, 44, 93, 94, 47, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, 41, 42, -1, 44, 93, 94, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, 112, -1, -1, -1, -1, -1, -1, 257, 258, 259, -1, 123, 124, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 281, -1, 283, 284, 285, 286, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, 112, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 270, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, -1, 294, 295, 296, 297, -1, 299, -1, 301, 302, 303, -1, 257, 258, 259, 260, 261, 262, -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286, -1, 0, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, -1, -1, 301, -1, -1, -1, 257, 258, 259, 260, 261, 262, -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, -1, 37, -1, -1, -1, 41, 42, -1, 44, 0, 286, 47, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, 58, 59, 60, 301, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, 41, 42, -1, 44, 0, -1, 47, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, 37, -1, -1, -1, 41, 42, -1, 44, -1, -1, 47, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, 112, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, 41, 42, 112, 44, -1, -1, 47, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, 257, 258, 259, 260, 261, 262, -1, -1, 265, -1, -1, -1, -1, -1, 112, -1, -1, -1, 275, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, 286, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, -1, -1, 301, 257, 258, 259, 260, 261, 262, -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, -1, -1, 301, 257, 258, 259, 260, 261, 262, -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 286, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, -1, -1, 301, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, 41, 42, -1, 44, -1, -1, 47, 257, 258, 259, 260, 261, 262, -1, -1, 265, -1, 58, 59, 60, -1, 62, 63, -1, -1, 275, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286, -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, -1, -1, -1, 301, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, 41, 42, -1, 44, 112, -1, 47, 0, -1, -1, -1, -1, -1, -1, -1, 123, 124, 58, 59, 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, 41, 42, -1, 44, 93, 94, 47, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 58, 59, 60, -1, 62, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 93, 94, -1, 41, 42, -1, 44, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, 112, 58, 59, 60, -1, 62, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 93, 94, 265, 40, -1, -1, 43, -1, 45, -1, -1, -1, 275, 0, -1, -1, -1, -1, -1, 112, -1, -1, -1, 286, -1, -1, 289, 290, 291, -1, 123, 124, -1, 296, 297, -1, -1, -1, 301, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, 41, 42, -1, 44, -1, -1, 47, 257, 258, 259, 260, 261, 262, -1, -1, 265, -1, 58, 59, 60, -1, 62, -1, 40, -1, 275, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, 286, -1, -1, 289, 290, 291, 59, -1, 0, -1, 296, 297, -1, -1, -1, 301, 93, 94, -1, 257, 258, 259, 260, 261, 262, -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, 112, -1, 275, -1, -1, -1, -1, -1, -1, -1, 37, 123, 124, 286, 41, 42, 289, 290, 291, -1, 47, -1, -1, 296, 297, -1, -1, -1, 301, -1, -1, 58, 59, 60, -1, 62, -1, -1, -1, 257, 258, 259, 260, 261, 262, 0, -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 286, -1, -1, 289, 290, 291, -1, -1, -1, -1, 296, 297, -1, -1, 37, 301, -1, 112, 41, 42, -1, 44, -1, -1, 47, -1, -1, -1, 123, 124, -1, 261, 262, 263, 264, 58, 59, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, 93, 94, 302, 303, 304, 305, -1, 257, 258, 259, 260, 261, 262, -1, -1, 265, -1, -1, -1, 112, -1, -1, -1, -1, -1, 275, -1, -1, -1, -1, 123, 124, -1, 259, -1, -1, 286, 263, 264, 289, 290, 291, 268, 269, 270, -1, 296, 297, -1, -1, -1, 301, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, -1, 7, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286, 30, -1, 289, 290, 291, -1, 36, -1, -1, 296, 297, -1, -1, -1, 301, -1, -1, -1, 48, -1, -1, 51, 52, 53, 54, 55, -1, 57, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, -1, -1, 265, 81, -1, -1, 84, 85, 86, 87, 88, 89, 275, 49, 50, -1, -1, -1, -1, -1, -1, 99, -1, 286, 102, -1, 289, 290, 291, -1, -1, -1, -1, -1, -1, -1, 114, -1, 301, -1, -1, -1, 120, -1, 80, -1, 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, 135, 136, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, 166, 167, 168, 169, -1, -1, -1, -1, 174, 175, -1, 177, 178, -1, -1, -1, 182, -1, -1, -1, 186, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 197, 156, 157, 200, -1, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, 17, -1, -1, -1, -1, 176, -1, 220, 221, 222, -1, 28, 29, -1, 31, 32, 187, 34, 189, -1, 191, -1, -1, -1, -1, 42, -1, -1, 241, -1, 243, -1, 245, -1, 247, -1, 249, -1, -1, -1, -1, 254, -1, 214, -1, -1, 259, 260, 40, -1, -1, 43, -1, 45, 267, -1, -1, -1, 229, 230, 231, 232, 233, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, 287, 92, 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, 104, -1, -1, -1, 304, 109, -1, -1, 112, 113, -1, -1, 116, -1, 118, 119, -1, -1, -1, 123, 124, -1, 280, -1, -1, -1, 284, 285, 286, -1, 134, -1, 290, -1, 138, -1, 140, 141, 142, 143, 40, -1, -1, 43, 123, 45, -1, 151, -1, -1, 154, -1, -1, -1, -1, -1, -1, 315, 316, 59, 164, 263, 264, 321, 266, 267, 268, 269, 270, -1, -1, -1, -1, -1, 276, 277, 278, 279, 280, 281, -1, 283, 284, 285, -1, 287, 288, -1, 192, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 208, 209, 210, 211, -1, 213, -1, 215, 216, -1, -1, -1, -1, -1, -1, 223, 224, -1, -1, 123, -1, 125, -1, -1, -1, -1, -1, 235, 236, 237, 238, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, 276, 277, 278, 279, -1, 281, 282, 283, -1, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, 123, 299, 125, -1, 302, 303, 304, 305, 40, -1, -1, 43, -1, 45, -1, -1, -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, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, 123, 40, 125, -1, 43, -1, 45, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, 123, 299, 125, -1, 302, 303, 304, 305, 40, -1, -1, 43, -1, 45, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, 123, 299, 125, -1, 302, 303, 304, 305, -1, 40, -1, -1, 43, -1, 45, -1, -1, -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, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 123, -1, 125, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -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, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 123, 40, 125, -1, 43, -1, 45, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, 123, 299, 125, -1, 302, 303, 304, 305, 40, -1, -1, 43, -1, 45, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, 123, 299, 125, -1, 302, 303, 304, 305, -1, 40, -1, -1, 43, -1, 45, -1, -1, -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, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 123, -1, 125, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -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, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 123, 40, 125, -1, 43, -1, 45, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, 123, 299, 125, -1, 302, 303, 304, 305, 40, -1, -1, 43, -1, 45, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, 123, 299, 125, -1, 302, 303, 304, 305, -1, 40, -1, -1, 43, -1, 45, -1, -1, -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, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 123, -1, 125, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -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, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 123, 40, 125, -1, 43, -1, 45, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 40, 287, 288, 43, 44, 45, 292, 293, 294, 295, -1, -1, 123, 299, 125, -1, 302, 303, 304, 305, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, 260, 62, 63, 263, 264, -1, 266, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 40, 287, 288, 43, -1, 45, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, 63, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, -1, 287, 288, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 296, 297, -1, 299, -1, -1, 302, 303, 304, 305, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 296, 297, 63, 299, -1, -1, 302, 303, 304, 305, 259, -1, 261, 262, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, 44, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, 44, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, -1, -1, 43, 44, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, -1, -1, 43, 44, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, 301, 302, 303, 304, 305, 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, -1, -1, 43, 44, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, 301, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, 40, -1, -1, 43, 44, 45, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, 63, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, -1, -1, 43, 44, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, -1, -1, 43, 44, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, 58, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, 58, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, 63, -1, -1, 299, -1, -1, 302, 303, 304, 305, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, 281, 45, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 40, 287, -1, 43, -1, 45, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 40, 287, -1, 43, -1, 45, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 40, 287, -1, 43, -1, 45, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 40, 287, -1, 43, -1, 45, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 259, -1, -1, 63, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, 40, 287, -1, 43, -1, 45, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, 263, 264, -1, -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, 28, 29, -1, -1, 263, 264, 34, -1, -1, 268, 269, 270, -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, 281, -1, 283, 284, 285, -1, 287, -1, -1, -1, -1, 292, 293, 294, 295, -1, -1, -1, 299, -1, -1, 302, 303, 304, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, 104, -1, -1, -1, -1, 109, -1, -1, 112, 113, -1, -1, 116, -1, 118, 119, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, -1, -1, -1, 138, -1, 140, 141, 142, 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 208, 209, 210, 211, -1, 213, -1, 215, 216, -1, -1, -1, -1, -1, -1, 223, 224, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, 236, 237, 238, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, 276, 277, 278, 279, -1, 281, 282, 283, }; #define YYFINAL 1 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 305 #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,"'p'",0,0,0,0,0,0,0, 0,0,0,"'{'","'|'","'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"BEGIN","END","REGEX","SEMINEW", "NEWLINE","COMMENT","FUN1","FUNN","GRGR","PRINT","PRINTF","SPRINTF_OLD", "SPRINTF_NEW","SPLIT","IF","ELSE","WHILE","FOR","IN","EXIT","NEXT","BREAK", "CONTINUE","RET","GETLINE","DO","SUB","GSUB","MATCH","FUNCTION","USERFUN", "DELETE","ASGNOP","OROR","ANDAND","NUMBER","VAR","SUBSTR","INDEX","MATCHOP", "RELOP","OR","STRING","UMINUS","NOT","INCR","DECR","FIELD","VFIELD", }; char *yyrule[] = { "$accept : program", "program : junk hunks", "begin : BEGIN '{' maybe states '}' junk", "end : END '{' maybe states '}'", "end : end NEWLINE", "hunks : hunks hunk junk", "hunks :", "hunk : patpat", "hunk : patpat '{' maybe states '}'", "hunk : FUNCTION USERFUN '(' arg_list ')' maybe '{' maybe states '}'", "hunk : '{' maybe states '}'", "hunk : begin", "hunk : end", "arg_list : expr_list", "patpat : cond", "patpat : cond ',' cond", "cond : expr", "cond : match", "cond : rel", "cond : compound_cond", "cond : cond '?' expr ':' expr", "compound_cond : '(' compound_cond ')'", "compound_cond : cond ANDAND maybe cond", "compound_cond : cond OROR maybe cond", "compound_cond : NOT cond", "rel : expr RELOP expr", "rel : expr '>' expr", "rel : expr '<' expr", "rel : '(' rel ')'", "match : expr MATCHOP expr", "match : expr MATCHOP REGEX", "match : REGEX", "match : '(' match ')'", "expr : term", "expr : expr term", "expr : expr '?' expr ':' expr", "expr : variable ASGNOP cond", "sprintf : SPRINTF_NEW", "sprintf : SPRINTF_OLD", "term : variable", "term : NUMBER", "term : STRING", "term : term '+' term", "term : term '-' term", "term : term '*' term", "term : term '/' term", "term : term '%' term", "term : term '^' term", "term : term IN VAR", "term : variable INCR", "term : variable DECR", "term : INCR variable", "term : DECR variable", "term : '-' term", "term : '+' term", "term : '(' cond ')'", "term : GETLINE", "term : GETLINE variable", "term : GETLINE '<' expr", "term : GETLINE variable '<' expr", "term : term 'p' GETLINE", "term : term 'p' GETLINE variable", "term : FUN1", "term : FUN1 '(' ')'", "term : FUN1 '(' expr ')'", "term : FUNN '(' expr_list ')'", "term : USERFUN '(' expr_list ')'", "term : SPRINTF_NEW '(' expr_list ')'", "term : sprintf expr_list", "term : SUBSTR '(' expr ',' expr ',' expr ')'", "term : SUBSTR '(' expr ',' expr ')'", "term : SPLIT '(' expr ',' VAR ',' expr ')'", "term : SPLIT '(' expr ',' VAR ',' REGEX ')'", "term : SPLIT '(' expr ',' VAR ')'", "term : INDEX '(' expr ',' expr ')'", "term : MATCH '(' expr ',' REGEX ')'", "term : MATCH '(' expr ',' expr ')'", "term : SUB '(' expr ',' expr ')'", "term : SUB '(' REGEX ',' expr ')'", "term : GSUB '(' expr ',' expr ')'", "term : GSUB '(' REGEX ',' expr ')'", "term : SUB '(' expr ',' expr ',' expr ')'", "term : SUB '(' REGEX ',' expr ',' expr ')'", "term : GSUB '(' expr ',' expr ',' expr ')'", "term : GSUB '(' REGEX ',' expr ',' expr ')'", "variable : VAR", "variable : VAR '[' expr_list ']'", "variable : FIELD", "variable : VFIELD term", "expr_list : expr", "expr_list : clist", "expr_list :", "clist : expr ',' maybe expr", "clist : clist ',' maybe expr", "clist : '(' clist ')'", "junk : junk hunksep", "junk :", "hunksep : ';'", "hunksep : SEMINEW", "hunksep : NEWLINE", "hunksep : COMMENT", "maybe : maybe nlstuff", "maybe :", "nlstuff : NEWLINE", "nlstuff : COMMENT", "separator : ';' maybe", "separator : SEMINEW maybe", "separator : NEWLINE maybe", "separator : COMMENT maybe", "states : states statement", "states :", "statement : simple separator maybe", "statement : ';' maybe", "statement : SEMINEW maybe", "statement : compound", "simpnull : simple", "simpnull :", "simple : expr", "simple : PRINT expr_list redir expr", "simple : PRINT expr_list", "simple : PRINTF expr_list redir expr", "simple : PRINTF expr_list", "simple : BREAK", "simple : NEXT", "simple : EXIT", "simple : EXIT expr", "simple : CONTINUE", "simple : RET", "simple : RET expr", "simple : DELETE VAR '[' expr_list ']'", "redir : '>'", "redir : GRGR", "redir : '|'", "compound : IF '(' cond ')' maybe statement", "compound : IF '(' cond ')' maybe statement ELSE maybe statement", "compound : WHILE '(' cond ')' maybe statement", "compound : DO maybe statement WHILE '(' cond ')'", "compound : FOR '(' simpnull ';' cond ';' simpnull ')' maybe statement", "compound : FOR '(' simpnull ';' ';' simpnull ')' maybe statement", "compound : FOR '(' expr ')' maybe statement", "compound : '{' maybe states '}' maybe", }; #endif #ifndef YYSTYPE typedef int YYSTYPE; #endif #define yyclearin (yychar=(-1)) #define yyerrok (yyerrflag=0) #ifdef YYSTACKSIZE #ifndef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #endif #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 500 #define YYMAXDEPTH 500 #endif #endif int yydebug; int yynerrs; int yyerrflag; int yychar; short *yyssp; YYSTYPE *yyvsp; YYSTYPE yyval; YYSTYPE yylval; short yyss[YYSTACKSIZE]; YYSTYPE yyvs[YYSTACKSIZE]; #define yystacksize YYSTACKSIZE #line 401 "a2p.y" int yyparse (void); #include "a2py.c" #line 2081 "y.tab.c" #define YYABORT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int yyparse() { register int yym, yyn, yystate; #if YYDEBUG register char *yys; #ifndef __cplusplus extern char *getenv(); #endif if (yys = getenv("YYDEBUG")) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif yynerrs = 0; yyerrflag = 0; yychar = (-1); yyssp = yyss; yyvsp = yyvs; *yyssp = yystate = 0; yyloop: if (yyn = yydefred[yystate]) 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("yydebug: state %d, reading %d (%s)\n", yystate, yychar, yys); } #endif } if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { #if YYDEBUG if (yydebug) printf("yydebug: state %d, shifting to state %d\n", yystate, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { 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; #ifdef lint goto yynewerror; #endif yynewerror: yyerror("syntax error"); #ifdef lint goto yyerrlab; #endif yyerrlab: ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { #if YYDEBUG if (yydebug) printf("yydebug: state %d, error recovery shifting\ to state %d\n", *yyssp, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; goto yyloop; } else { #if YYDEBUG if (yydebug) printf("yydebug: error recovery discarding state %d\n", *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("yydebug: state %d, error recovery discards token %d (%s)\n", yystate, yychar, yys); } #endif yychar = (-1); goto yyloop; } yyreduce: #if YYDEBUG if (yydebug) printf("yydebug: state %d, reducing by rule %d (%s)\n", yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; yyval = yyvsp[1-yym]; switch (yyn) { case 1: #line 51 "a2p.y" { root = oper4(OPROG,yyvsp[-1],begins,yyvsp[0],ends); } break; case 2: #line 55 "a2p.y" { begins = oper4(OJUNK,begins,yyvsp[-3],yyvsp[-2],yyvsp[0]); in_begin = FALSE; yyval = Nullop; } break; case 3: #line 60 "a2p.y" { ends = oper3(OJUNK,ends,yyvsp[-2],yyvsp[-1]); yyval = Nullop; } break; case 4: #line 62 "a2p.y" { yyval = yyvsp[-1]; } break; case 5: #line 66 "a2p.y" { yyval = oper3(OHUNKS,yyvsp[-2],yyvsp[-1],yyvsp[0]); } break; case 6: #line 68 "a2p.y" { yyval = Nullop; } break; case 7: #line 72 "a2p.y" { yyval = oper1(OHUNK,yyvsp[0]); need_entire = TRUE; } break; case 8: #line 74 "a2p.y" { yyval = oper2(OHUNK,yyvsp[-4],oper2(OJUNK,yyvsp[-2],yyvsp[-1])); } break; case 9: #line 76 "a2p.y" { fixfargs(yyvsp[-8],yyvsp[-6],0); yyval = oper5(OUSERDEF,yyvsp[-8],yyvsp[-6],yyvsp[-4],yyvsp[-2],yyvsp[-1]); } break; case 10: #line 78 "a2p.y" { yyval = oper2(OHUNK,Nullop,oper2(OJUNK,yyvsp[-2],yyvsp[-1])); } break; case 13: #line 84 "a2p.y" { yyval = rememberargs(yyval); } break; case 14: #line 88 "a2p.y" { yyval = oper1(OPAT,yyvsp[0]); } break; case 15: #line 90 "a2p.y" { yyval = oper2(ORANGE,yyvsp[-2],yyvsp[0]); } break; case 20: #line 98 "a2p.y" { yyval = oper3(OCOND,yyvsp[-4],yyvsp[-2],yyvsp[0]); } break; case 21: #line 103 "a2p.y" { yyval = oper1(OCPAREN,yyvsp[-1]); } break; case 22: #line 105 "a2p.y" { yyval = oper3(OCANDAND,yyvsp[-3],yyvsp[-1],yyvsp[0]); } break; case 23: #line 107 "a2p.y" { yyval = oper3(OCOROR,yyvsp[-3],yyvsp[-1],yyvsp[0]); } break; case 24: #line 109 "a2p.y" { yyval = oper1(OCNOT,yyvsp[0]); } break; case 25: #line 113 "a2p.y" { yyval = oper3(ORELOP,yyvsp[-1],yyvsp[-2],yyvsp[0]); } break; case 26: #line 115 "a2p.y" { yyval = oper3(ORELOP,string(">",1),yyvsp[-2],yyvsp[0]); } break; case 27: #line 117 "a2p.y" { yyval = oper3(ORELOP,string("<",1),yyvsp[-2],yyvsp[0]); } break; case 28: #line 119 "a2p.y" { yyval = oper1(ORPAREN,yyvsp[-1]); } break; case 29: #line 123 "a2p.y" { yyval = oper3(OMATCHOP,yyvsp[-1],yyvsp[-2],yyvsp[0]); } break; case 30: #line 125 "a2p.y" { yyval = oper3(OMATCHOP,yyvsp[-1],yyvsp[-2],oper1(OREGEX,yyvsp[0])); } break; case 31: #line 127 "a2p.y" { yyval = oper1(OREGEX,yyvsp[0]); } break; case 32: #line 129 "a2p.y" { yyval = oper1(OMPAREN,yyvsp[-1]); } break; case 33: #line 133 "a2p.y" { yyval = yyvsp[0]; } break; case 34: #line 135 "a2p.y" { yyval = oper2(OCONCAT,yyvsp[-1],yyvsp[0]); } break; case 35: #line 137 "a2p.y" { yyval = oper3(OCOND,yyvsp[-4],yyvsp[-2],yyvsp[0]); } break; case 36: #line 139 "a2p.y" { yyval = oper3(OASSIGN,yyvsp[-1],yyvsp[-2],yyvsp[0]); if ((ops[yyvsp[-2]].ival & 255) == OFLD) lval_field = TRUE; if ((ops[yyvsp[-2]].ival & 255) == OVFLD) lval_field = TRUE; } break; case 39: #line 151 "a2p.y" { yyval = yyvsp[0]; } break; case 40: #line 153 "a2p.y" { yyval = oper1(ONUM,yyvsp[0]); } break; case 41: #line 155 "a2p.y" { yyval = oper1(OSTR,yyvsp[0]); } break; case 42: #line 157 "a2p.y" { yyval = oper2(OADD,yyvsp[-2],yyvsp[0]); } break; case 43: #line 159 "a2p.y" { yyval = oper2(OSUBTRACT,yyvsp[-2],yyvsp[0]); } break; case 44: #line 161 "a2p.y" { yyval = oper2(OMULT,yyvsp[-2],yyvsp[0]); } break; case 45: #line 163 "a2p.y" { yyval = oper2(ODIV,yyvsp[-2],yyvsp[0]); } break; case 46: #line 165 "a2p.y" { yyval = oper2(OMOD,yyvsp[-2],yyvsp[0]); } break; case 47: #line 167 "a2p.y" { yyval = oper2(OPOW,yyvsp[-2],yyvsp[0]); } break; case 48: #line 169 "a2p.y" { yyval = oper2(ODEFINED,aryrefarg(yyvsp[0]),yyvsp[-2]); } break; case 49: #line 171 "a2p.y" { yyval = oper1(OPOSTINCR,yyvsp[-1]); } break; case 50: #line 173 "a2p.y" { yyval = oper1(OPOSTDECR,yyvsp[-1]); } break; case 51: #line 175 "a2p.y" { yyval = oper1(OPREINCR,yyvsp[0]); } break; case 52: #line 177 "a2p.y" { yyval = oper1(OPREDECR,yyvsp[0]); } break; case 53: #line 179 "a2p.y" { yyval = oper1(OUMINUS,yyvsp[0]); } break; case 54: #line 181 "a2p.y" { yyval = oper1(OUPLUS,yyvsp[0]); } break; case 55: #line 183 "a2p.y" { yyval = oper1(OPAREN,yyvsp[-1]); } break; case 56: #line 185 "a2p.y" { yyval = oper0(OGETLINE); } break; case 57: #line 187 "a2p.y" { yyval = oper1(OGETLINE,yyvsp[0]); } break; case 58: #line 189 "a2p.y" { yyval = oper3(OGETLINE,Nullop,string("<",1),yyvsp[0]); if (ops[yyvsp[0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break; case 59: #line 192 "a2p.y" { yyval = oper3(OGETLINE,yyvsp[-2],string("<",1),yyvsp[0]); if (ops[yyvsp[0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break; case 60: #line 195 "a2p.y" { yyval = oper3(OGETLINE,Nullop,string("|",1),yyvsp[-2]); if (ops[yyvsp[-2]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break; case 61: #line 198 "a2p.y" { yyval = oper3(OGETLINE,yyvsp[0],string("|",1),yyvsp[-3]); if (ops[yyvsp[-3]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break; case 62: #line 201 "a2p.y" { yyval = oper0(yyvsp[0]); need_entire = do_chop = TRUE; } break; case 63: #line 203 "a2p.y" { yyval = oper1(yyvsp[-2],Nullop); need_entire = do_chop = TRUE; } break; case 64: #line 205 "a2p.y" { yyval = oper1(yyvsp[-3],yyvsp[-1]); } break; case 65: #line 207 "a2p.y" { yyval = oper1(yyvsp[-3],yyvsp[-1]); } break; case 66: #line 209 "a2p.y" { yyval = oper2(OUSERFUN,yyvsp[-3],yyvsp[-1]); } break; case 67: #line 211 "a2p.y" { yyval = oper1(OSPRINTF,yyvsp[-1]); } break; case 68: #line 213 "a2p.y" { yyval = oper1(OSPRINTF,yyvsp[0]); } break; case 69: #line 215 "a2p.y" { yyval = oper3(OSUBSTR,yyvsp[-5],yyvsp[-3],yyvsp[-1]); } break; case 70: #line 217 "a2p.y" { yyval = oper2(OSUBSTR,yyvsp[-3],yyvsp[-1]); } break; case 71: #line 219 "a2p.y" { yyval = oper3(OSPLIT,yyvsp[-5],aryrefarg(numary(yyvsp[-3])),yyvsp[-1]); } break; case 72: #line 221 "a2p.y" { yyval = oper3(OSPLIT,yyvsp[-5],aryrefarg(numary(yyvsp[-3])),oper1(OREGEX,yyvsp[-1]));} break; case 73: #line 223 "a2p.y" { yyval = oper2(OSPLIT,yyvsp[-3],aryrefarg(numary(yyvsp[-1]))); } break; case 74: #line 225 "a2p.y" { yyval = oper2(OINDEX,yyvsp[-3],yyvsp[-1]); } break; case 75: #line 227 "a2p.y" { yyval = oper2(OMATCH,yyvsp[-3],oper1(OREGEX,yyvsp[-1])); } break; case 76: #line 229 "a2p.y" { yyval = oper2(OMATCH,yyvsp[-3],yyvsp[-1]); } break; case 77: #line 231 "a2p.y" { yyval = oper2(OSUB,yyvsp[-3],yyvsp[-1]); } break; case 78: #line 233 "a2p.y" { yyval = oper2(OSUB,oper1(OREGEX,yyvsp[-3]),yyvsp[-1]); } break; case 79: #line 235 "a2p.y" { yyval = oper2(OGSUB,yyvsp[-3],yyvsp[-1]); } break; case 80: #line 237 "a2p.y" { yyval = oper2(OGSUB,oper1(OREGEX,yyvsp[-3]),yyvsp[-1]); } break; case 81: #line 239 "a2p.y" { yyval = oper3(OSUB,yyvsp[-5],yyvsp[-3],yyvsp[-1]); } break; case 82: #line 241 "a2p.y" { yyval = oper3(OSUB,oper1(OREGEX,yyvsp[-5]),yyvsp[-3],yyvsp[-1]); } break; case 83: #line 243 "a2p.y" { yyval = oper3(OGSUB,yyvsp[-5],yyvsp[-3],yyvsp[-1]); } break; case 84: #line 245 "a2p.y" { yyval = oper3(OGSUB,oper1(OREGEX,yyvsp[-5]),yyvsp[-3],yyvsp[-1]); } break; case 85: #line 249 "a2p.y" { yyval = oper1(OVAR,yyvsp[0]); } break; case 86: #line 251 "a2p.y" { yyval = oper2(OVAR,aryrefarg(yyvsp[-3]),yyvsp[-1]); } break; case 87: #line 253 "a2p.y" { yyval = oper1(OFLD,yyvsp[0]); } break; case 88: #line 255 "a2p.y" { yyval = oper1(OVFLD,yyvsp[0]); } break; case 91: #line 262 "a2p.y" { yyval = Nullop; } break; case 92: #line 266 "a2p.y" { yyval = oper3(OCOMMA,yyvsp[-3],yyvsp[-1],yyvsp[0]); } break; case 93: #line 268 "a2p.y" { yyval = oper3(OCOMMA,yyvsp[-3],yyvsp[-1],yyvsp[0]); } break; case 94: #line 270 "a2p.y" { yyval = yyvsp[-1]; } break; case 95: #line 274 "a2p.y" { yyval = oper2(OJUNK,yyvsp[-1],yyvsp[0]); } break; case 96: #line 276 "a2p.y" { yyval = Nullop; } break; case 97: #line 280 "a2p.y" { yyval = oper2(OJUNK,oper0(OSEMICOLON),oper0(ONEWLINE)); } break; case 98: #line 282 "a2p.y" { yyval = oper2(OJUNK,oper0(OSEMICOLON),oper0(ONEWLINE)); } break; case 99: #line 284 "a2p.y" { yyval = oper0(ONEWLINE); } break; case 100: #line 286 "a2p.y" { yyval = oper1(OCOMMENT,yyvsp[0]); } break; case 101: #line 290 "a2p.y" { yyval = oper2(OJUNK,yyvsp[-1],yyvsp[0]); } break; case 102: #line 292 "a2p.y" { yyval = Nullop; } break; case 103: #line 296 "a2p.y" { yyval = oper0(ONEWLINE); } break; case 104: #line 298 "a2p.y" { yyval = oper1(OCOMMENT,yyvsp[0]); } break; case 105: #line 303 "a2p.y" { yyval = oper2(OJUNK,oper0(OSEMICOLON),yyvsp[0]); } break; case 106: #line 305 "a2p.y" { yyval = oper2(OJUNK,oper0(OSNEWLINE),yyvsp[0]); } break; case 107: #line 307 "a2p.y" { yyval = oper2(OJUNK,oper0(OSNEWLINE),yyvsp[0]); } break; case 108: #line 309 "a2p.y" { yyval = oper2(OJUNK,oper1(OSCOMMENT,yyvsp[-1]),yyvsp[0]); } break; case 109: #line 313 "a2p.y" { yyval = oper2(OSTATES,yyvsp[-1],yyvsp[0]); } break; case 110: #line 315 "a2p.y" { yyval = Nullop; } break; case 111: #line 320 "a2p.y" { yyval = oper2(OJUNK,oper2(OSTATE,yyvsp[-2],yyvsp[-1]),yyvsp[0]); } break; case 112: #line 322 "a2p.y" { yyval = oper2(OSTATE,Nullop,oper2(OJUNK,oper0(OSEMICOLON),yyvsp[0])); } break; case 113: #line 324 "a2p.y" { yyval = oper2(OSTATE,Nullop,oper2(OJUNK,oper0(OSNEWLINE),yyvsp[0])); } break; case 116: #line 330 "a2p.y" { yyval = Nullop; } break; case 118: #line 336 "a2p.y" { yyval = oper3(OPRINT,yyvsp[-2],yyvsp[-1],yyvsp[0]); do_opens = TRUE; saw_ORS = saw_OFS = TRUE; if (!yyvsp[-2]) need_entire = TRUE; if (ops[yyvsp[0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break; case 119: #line 342 "a2p.y" { yyval = oper1(OPRINT,yyvsp[0]); if (!yyvsp[0]) need_entire = TRUE; saw_ORS = saw_OFS = TRUE; } break; case 120: #line 347 "a2p.y" { yyval = oper3(OPRINTF,yyvsp[-2],yyvsp[-1],yyvsp[0]); do_opens = TRUE; if (!yyvsp[-2]) need_entire = TRUE; if (ops[yyvsp[0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break; case 121: #line 352 "a2p.y" { yyval = oper1(OPRINTF,yyvsp[0]); if (!yyvsp[0]) need_entire = TRUE; } break; case 122: #line 356 "a2p.y" { yyval = oper0(OBREAK); } break; case 123: #line 358 "a2p.y" { yyval = oper0(ONEXT); } break; case 124: #line 360 "a2p.y" { yyval = oper0(OEXIT); } break; case 125: #line 362 "a2p.y" { yyval = oper1(OEXIT,yyvsp[0]); } break; case 126: #line 364 "a2p.y" { yyval = oper0(OCONTINUE); } break; case 127: #line 366 "a2p.y" { yyval = oper0(ORETURN); } break; case 128: #line 368 "a2p.y" { yyval = oper1(ORETURN,yyvsp[0]); } break; case 129: #line 370 "a2p.y" { yyval = oper2(ODELETE,aryrefarg(yyvsp[-3]),yyvsp[-1]); } break; case 130: #line 374 "a2p.y" { yyval = oper1(OREDIR,string(">",1)); } break; case 131: #line 376 "a2p.y" { yyval = oper1(OREDIR,string(">>",2)); } break; case 132: #line 378 "a2p.y" { yyval = oper1(OREDIR,string("|",1)); } break; case 133: #line 383 "a2p.y" { yyval = oper2(OIF,yyvsp[-3],bl(yyvsp[0],yyvsp[-1])); } break; case 134: #line 385 "a2p.y" { yyval = oper3(OIF,yyvsp[-6],bl(yyvsp[-3],yyvsp[-4]),bl(yyvsp[0],yyvsp[-1])); } break; case 135: #line 387 "a2p.y" { yyval = oper2(OWHILE,yyvsp[-3],bl(yyvsp[0],yyvsp[-1])); } break; case 136: #line 389 "a2p.y" { yyval = oper2(ODO,bl(yyvsp[-4],yyvsp[-5]),yyvsp[-1]); } break; case 137: #line 391 "a2p.y" { yyval = oper4(OFOR,yyvsp[-7],yyvsp[-5],yyvsp[-3],bl(yyvsp[0],yyvsp[-1])); } break; case 138: #line 393 "a2p.y" { yyval = oper4(OFOR,yyvsp[-6],string("",0),yyvsp[-3],bl(yyvsp[0],yyvsp[-1])); } break; case 139: #line 395 "a2p.y" { yyval = oper2(OFORIN,yyvsp[-3],bl(yyvsp[0],yyvsp[-1])); } break; case 140: #line 397 "a2p.y" { yyval = oper3(OBLOCK,oper2(OJUNK,yyvsp[-3],yyvsp[-2]),Nullop,yyvsp[0]); } break; #line 2751 "y.tab.c" } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) { #if YYDEBUG if (yydebug) printf("yydebug: after reduction, shifting from state 0 to\ state %d\n", 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("yydebug: state %d, reading %d (%s)\n", 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("yydebug: after reduction, shifting from state %d \ to state %d\n", *yyssp, yystate); #endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: return (1); yyaccept: return (0); }