#include <sys/cdefs.h>
#ifndef lint
#if 0
static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
#else
__IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.14 1997/10/20 03:41:16 lukem Exp $");
#endif
#endif
#include <stdlib.h>
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define YYLEX yylex()
#define YYEMPTY -1
#define yyclearin (yychar=(YYEMPTY))
#define yyerrok (yyerrflag=0)
#define YYRECOVERING (yyerrflag!=0)
#define YYPREFIX "yy"
#line 26 "awkgram.y"
#include <stdio.h>
#include <string.h>
#include "awk.h"
void checkdup(Node *list, Cell *item);
int yywrap(void) { return(1); }
Node *beginloc = 0;
Node *endloc = 0;
int infunc = 0; /* = 1 if in arglist or body of func */
int inloop = 0; /* = 1 if in while, for, do */
char *curfname = 0; /* current function name */
Node *arglist = 0; /* list of args for current function */
#line 41 "awkgram.y"
typedef union {
Node *p;
Cell *cp;
int i;
char *s;
} YYSTYPE;
#line 41 "y.tab.c"
#define FIRSTTOKEN 257
#define PROGRAM 258
#define PASTAT 259
#define PASTAT2 260
#define XBEGIN 261
#define XEND 262
#define NL 263
#define ARRAY 264
#define MATCH 265
#define NOTMATCH 266
#define MATCHOP 267
#define FINAL 268
#define DOT 269
#define ALL 270
#define CCL 271
#define NCCL 272
#define CHAR 273
#define OR 274
#define STAR 275
#define QUEST 276
#define PLUS 277
#define EMPTYRE 278
#define AND 279
#define BOR 280
#define APPEND 281
#define EQ 282
#define GE 283
#define GT 284
#define LE 285
#define LT 286
#define NE 287
#define IN 288
#define ARG 289
#define BLTIN 290
#define BREAK 291
#define CLOSE 292
#define CONTINUE 293
#define DELETE 294
#define DO 295
#define EXIT 296
#define FOR 297
#define FUNC 298
#define SUB 299
#define GSUB 300
#define IF 301
#define INDEX 302
#define LSUBSTR 303
#define MATCHFCN 304
#define NEXT 305
#define NEXTFILE 306
#define ADD 307
#define MINUS 308
#define MULT 309
#define DIVIDE 310
#define MOD 311
#define ASSIGN 312
#define ASGNOP 313
#define ADDEQ 314
#define SUBEQ 315
#define MULTEQ 316
#define DIVEQ 317
#define MODEQ 318
#define POWEQ 319
#define PRINT 320
#define PRINTF 321
#define SPRINTF 322
#define ELSE 323
#define INTEST 324
#define CONDEXPR 325
#define POSTINCR 326
#define PREINCR 327
#define POSTDECR 328
#define PREDECR 329
#define VAR 330
#define IVAR 331
#define VARNF 332
#define CALL 333
#define NUMBER 334
#define STRING 335
#define REGEXPR 336
#define GETLINE 337
#define RETURN 338
#define SPLIT 339
#define SUBSTR 340
#define WHILE 341
#define CAT 342
#define NOT 343
#define UMINUS 344
#define POWER 345
#define DECR 346
#define INCR 347
#define INDIRECT 348
#define LASTTOKEN 349
#define YYERRCODE 256
short yylhs[] = { -1,
0, 0, 36, 36, 37, 37, 33, 33, 26, 26,
24, 24, 40, 22, 41, 22, 42, 22, 20, 20,
23, 30, 30, 34, 34, 35, 35, 29, 29, 15,
15, 1, 1, 10, 11, 11, 11, 11, 11, 11,
11, 43, 11, 12, 12, 6, 6, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 4, 4, 5,
5, 7, 7, 7, 39, 39, 28, 28, 28, 28,
31, 31, 9, 9, 44, 13, 32, 32, 14, 14,
14, 14, 14, 14, 14, 14, 27, 27, 16, 16,
45, 46, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 47, 16, 16, 17, 17, 38,
38, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 18, 18, 18, 18, 21, 21, 21,
19, 19, 19, 25,
};
short yylen[] = { 2,
1, 1, 1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 0, 12, 0, 10, 0, 8, 1, 1,
4, 1, 2, 1, 2, 0, 1, 0, 1, 0,
1, 1, 3, 1, 1, 4, 3, 6, 3, 4,
4, 0, 9, 1, 3, 1, 3, 3, 5, 3,
3, 3, 3, 3, 5, 2, 1, 1, 3, 5,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 5, 4, 3, 2, 1, 1, 3, 3, 1,
3, 0, 1, 3, 1, 1, 1, 1, 2, 2,
1, 2, 1, 2, 0, 4, 1, 2, 4, 4,
4, 2, 5, 2, 1, 1, 1, 2, 2, 2,
0, 0, 9, 3, 2, 1, 4, 2, 3, 2,
2, 3, 2, 2, 0, 3, 2, 1, 2, 1,
1, 4, 3, 3, 3, 3, 3, 3, 2, 2,
2, 3, 4, 1, 3, 4, 2, 2, 2, 2,
2, 4, 3, 2, 1, 6, 6, 3, 6, 6,
1, 8, 8, 6, 4, 1, 6, 6, 8, 8,
8, 6, 1, 1, 4, 1, 2, 0, 1, 3,
1, 1, 1, 4,
};
short yydefred[] = { 0,
2, 87, 88, 0, 1, 0, 0, 89, 90, 0,
0, 22, 0, 95, 182, 0, 0, 0, 130, 131,
0, 0, 0, 181, 176, 183, 0, 161, 166, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76, 0, 44, 0, 93, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
20, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 94, 148, 149, 177, 0, 0, 3,
5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 150, 151, 0, 106, 23, 0, 0, 0,
0, 9, 0, 0, 0, 0, 0, 85, 86, 0,
0, 0, 0, 128, 0, 116, 0, 125, 0, 0,
0, 0, 0, 0, 7, 158, 0, 0, 0, 0,
142, 0, 0, 0, 0, 0, 0, 0, 145, 0,
0, 0, 0, 0, 0, 0, 69, 0, 0, 0,
0, 0, 0, 71, 0, 4, 0, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 45, 0,
0, 24, 0, 127, 0, 109, 0, 110, 0, 0,
115, 0, 0, 120, 121, 0, 123, 0, 124, 39,
129, 0, 0, 10, 0, 0, 0, 0, 0, 0,
0, 57, 0, 0, 0, 40, 41, 8, 0, 0,
0, 96, 143, 0, 179, 0, 0, 0, 165, 146,
0, 0, 0, 73, 0, 0, 0, 36, 175, 25,
108, 0, 114, 31, 0, 0, 0, 122, 0, 11,
0, 126, 112, 91, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 72,
0, 97, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 12, 117, 0,
92, 0, 0, 0, 52, 54, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 98, 0, 180, 156,
157, 160, 159, 164, 0, 172, 0, 38, 103, 0,
0, 0, 0, 0, 0, 0, 168, 0, 167, 0,
0, 0, 0, 0, 0, 0, 0, 0, 55, 0,
0, 0, 0, 0, 162, 163, 171, 0, 0, 0,
0, 170, 169, 43, 0, 0, 18, 0, 0, 0,
113, 16, 0, 0, 14,
};
short yydgoto[] = { 4,
5, 122, 208, 53, 209, 143, 210, 40, 41, 42,
43, 44, 45, 123, 245, 124, 125, 46, 47, 62,
226, 126, 127, 251, 128, 129, 186, 6, 7, 130,
255, 273, 224, 187, 184, 91, 92, 49, 131, 364,
359, 350, 308, 54, 205, 290, 203,
};
short yysindex[] = { -56,
0, 0, 0, 0, 0, -48, 8245, 0, 0, -101,
-101, 0, 9019, 0, 0, 15, 9347, -249, 0, 0,
25, 27, 39, 0, 0, 0, 48, 0, 0, 109,
52, 66, 9347, 9347, 9038, 128, 128, 9347, 7871, -37,
0, -4, 0, -25, 0, -184, -67, 4704, 74, 4704,
4704, 6570, 105, -239, 8458, 9019, 9347, -37, -130, 0,
0, 120, 9019, 9019, 9019, 8510, 9347, -141, 9019, 9019,
-180, -180, -180, 0, 0, 0, 0, -168, 9019, 0,
0, 9019, 9019, 9019, 9019, 9019, 9019, -274, 9019, -37,
8570, 8622, 9099, 9347, 9347, 9347, 9347, 9347, 9019, 4704,
8245, 9019, 0, 0, 9019, 0, 0, -91, -23, -23,
-274, 0, 8382, 137, 141, -23, -23, 0, 0, 8382,
147, 7871, -23, 0, 4765, 0, 5721, 0, -58, 4704,
9151, 9019, 4827, 5094, 0, 0, 8695, -66, 8695, 174,
0, 7871, 115, 7051, -96, 7137, 7137, 117, 0, 123,
-37, 9347, 7137, 7137, 128, 2208, 0, 2208, 2208, 2208,
2208, 2208, 2208, 0, 7233, 0, 8193, 0, 1353, 9347,
-180, -35, -35, -180, -180, -180, -101, 5154, 0, 7871,
-16, 0, -13, 0, -91, 0, -13, 0, 161, 6656,
0, 6229, 9019, 0, 0, 6656, 0, 9019, 0, 0,
0, -88, 5721, 0, 5721, 5214, 9019, 8307, 221, -85,
-37, 0, -18, 7137, 221, 0, 0, 0, 7871, -274,
7871, 0, 0, 8695, 0, 130, 8695, 8695, 0, 0,
-37, 33, 8695, 0, 9019, -37, 4704, 0, 0, 0,
0, 9019, 0, 0, 212, -87, 7304, 0, 7304, 0,
5274, 0, 0, 0, 14, 132, 9216, -274, 9216, -37,
8768, 8828, 8880, 9347, 9347, 9347, 9216, 8695, 8695, 0,
7871, 0, 76, -202, 7390, 256, 7461, 261, 195, 6823,
7871, 5541, -7, -9, -274, 76, 76, 0, 0, -30,
0, 65, 9019, 2208, 0, 0, 3456, 8958, 6317, 8307,
-37, -37, -37, 8307, 6909, 6980, 0, -101, 0, 0,
0, 0, 0, 0, 8695, 0, 8695, 0, 0, -91,
9019, 304, 320, -274, 229, 9216, 0, 53, 0, 53,
4704, 7557, 321, 7643, 6229, 7714, 76, 9019, 0, 65,
8307, 325, 339, 5601, 0, 0, 0, 304, -91, 5721,
7785, 0, 0, 0, 76, 6229, 0, -23, 5721, 304,
0, 0, 76, 5721, 0,
};
short yyrindex[] = { 2901,
0, 0, 0, 0, 0, 2995, 382, 0, 0, 0,
0, 0, 0, 0, 0, 89, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 3261,
0, 0, 0, 0, 0, 0, 0, 0, 63, 2636,
0, 2782, 0, 2901, 0, 1665, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 2018, 1571, 0,
0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
495, 583, 677, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 2730,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
386, 0, 0, 0, 0, 0, 0, 4376, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -32, 0, 0, 0, 0, 0, 0, 5988, 0,
-6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 34, 0, 0, 323, 0, 0, 0, 0, 0,
2283, 0, 0, 0, 3348, 151, 0, 645, 1139, 2345,
3323, 3410, 3439, 0, 0, 0, 3855, 0, 57, 0,
989, 1836, 1930, 1077, 1171, 1483, 2834, 0, 0, 96,
0, 0, 4314, 0, 4376, 0, 4498, 0, -8, 0,
0, 331, 0, 0, 0, 0, 0, 0, 0, 0,
0, 5661, 0, 0, 0, 0, 0, -12, 134, 41,
8042, 0, 4229, 0, 7967, 0, 0, 0, 355, 0,
359, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2371, 0, 0, 0, 0, 2465, 0, 0, 0, 0,
0, 0, 0, 0, 0, 4045, 0, 0, 0, 0,
0, 0, 0, 0, 4643, 0, 0, 0, 0, 8124,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
97, 0, 269, 0, 0, 7967, 0, 7967, 0, 0,
144, 0, 0, 9277, 0, 6048, 6108, 0, 0, 0,
0, 170, 0, 449, 0, 0, 0, 535, 795, 46,
50, 54, 80, 508, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 5782,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 7967, 0, 363, 0, 6168, 0, 0, 0,
528, 0, 0, 0, 0, 0, 0, 0, 5782, 0,
0, 0, 0, 0, 6435, 363, 0, 0, 0, 0,
0, 0, 6495, 0, 0,
};
short yygindex[] = { 0,
0, 4176, -191, -182, 0, 37, 0, 3893, -14, 311,
315, 0, -49, -138, -304, 400, 23, 3676, -26, 0,
0, 0, 0, 0, 0, 0, -97, 0, 381, 7,
0, 237, 356, -28, -116, 369, 396, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
};
#define YYTABLESIZE 9695
short yytable[] = { 97,
174, 97, 3, 105, 96, 94, 96, 95, 105, 93,
9, 93, 188, 48, 15, 191, 50, 51, 194, 195,
74, 12, 197, 105, 256, 199, 105, 135, 80, 157,
348, 80, 104, 3, 82, 185, 135, 174, 264, 99,
174, 174, 174, 174, 174, 174, 80, 174, 100, 320,
104, 360, 82, 244, 55, 24, 61, 26, 174, 174,
218, 164, 34, 174, 63, 294, 64, 297, 241, 298,
299, 300, 133, 134, 46, 304, 239, 46, 65, 183,
60, 102, 215, 61, 189, 319, 81, 66, 144, 81,
99, 69, 243, 174, 100, 59, 140, 61, 248, 102,
61, 148, 150, 61, 81, 70, 34, 48, 99, 34,
325, 80, 100, 132, 61, 61, 212, 82, 12, 61,
101, 34, 178, 174, 174, 144, 46, 309, 102, 144,
144, 144, 144, 144, 341, 144, 59, 47, 101, 59,
47, 181, 59, 60, 152, 138, 144, 144, 135, 61,
70, 144, 206, 59, 59, 223, 183, 229, 135, 145,
135, 103, 104, 230, 98, 246, 135, 321, 155, 81,
272, 182, 292, 135, 83, 135, 192, 276, 278, 61,
193, 144, 154, 237, 60, 34, 198, 60, 59, 47,
60, 70, 83, 270, 70, 265, 244, 70, 266, 1,
285, 60, 60, 335, 204, 279, 2, 295, 70, 70,
84, 144, 144, 70, 8, 103, 104, 244, 59, 154,
222, 220, 154, 154, 154, 154, 154, 154, 84, 154,
105, 296, 356, 225, 250, 314, 60, 2, 135, 182,
154, 154, 212, 70, 212, 154, 212, 212, 212, 240,
80, 242, 212, 182, 104, 183, 82, 83, 322, 282,
361, 174, 174, 174, 135, 333, 60, 174, 80, 340,
284, 80, 135, 70, 82, 154, 291, 82, 283, 174,
174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
174, 183, 174, 84, 267, 218, 311, 339, 174, 174,
174, 313, 174, 102, 174, 154, 154, 98, 81, 98,
323, 212, 99, 174, 331, 218, 100, 61, 61, 61,
183, 15, 174, 34, 34, 34, 81, 103, 104, 81,
174, 174, 174, 174, 174, 174, 61, 174, 307, 174,
174, 15, 101, 174, 272, 174, 174, 174, 174, 144,
144, 144, 324, 344, 61, 144, 59, 59, 59, 338,
34, 346, 24, 178, 26, 352, 178, 144, 144, 144,
144, 144, 144, 144, 144, 144, 144, 144, 144, 353,
144, 32, 24, 25, 26, 33, 144, 144, 144, 30,
144, 42, 144, 59, 67, 78, 83, 15, 78, 79,
38, 144, 79, 30, 60, 60, 60, 137, 139, 177,
144, 70, 70, 70, 83, 179, 15, 83, 144, 144,
144, 144, 144, 144, 101, 144, 0, 144, 144, 70,
70, 144, 84, 144, 144, 144, 144, 0, 24, 25,
26, 60, 0, 154, 154, 154, 0, 0, 70, 154,
84, 0, 0, 84, 0, 0, 38, 24, 25, 26,
0, 154, 154, 154, 154, 154, 154, 154, 0, 154,
154, 154, 154, 0, 154, 38, 0, 0, 0, 0,
154, 154, 154, 286, 154, 287, 154, 70, 0, 53,
0, 0, 53, 0, 140, 154, 0, 0, 0, 0,
0, 227, 228, 0, 154, 0, 53, 53, 232, 233,
0, 53, 154, 154, 154, 154, 154, 154, 0, 154,
0, 154, 154, 0, 201, 154, 202, 154, 154, 154,
154, 140, 201, 201, 140, 140, 140, 140, 140, 140,
0, 140, 0, 0, 0, 0, 0, 0, 48, 0,
0, 48, 140, 140, 0, 0, 0, 140, 337, 0,
0, 0, 0, 0, 263, 48, 48, 0, 49, 268,
269, 49, 53, 0, 0, 51, 261, 201, 51, 0,
0, 274, 139, 0, 355, 49, 49, 140, 0, 0,
0, 0, 51, 51, 0, 0, 363, 51, 0, 0,
0, 0, 252, 262, 253, 201, 0, 0, 0, 0,
0, 139, 0, 0, 0, 0, 0, 140, 140, 139,
0, 0, 139, 139, 139, 139, 139, 139, 0, 139,
0, 48, 0, 0, 315, 317, 0, 0, 0, 0,
139, 139, 0, 0, 63, 139, 0, 0, 0, 0,
289, 49, 0, 0, 0, 0, 0, 0, 51, 0,
328, 330, 261, 0, 0, 261, 261, 261, 261, 0,
0, 0, 261, 0, 0, 139, 141, 0, 0, 0,
139, 201, 0, 0, 0, 63, 0, 0, 63, 262,
0, 63, 262, 262, 262, 262, 0, 0, 0, 262,
0, 0, 63, 63, 0, 139, 139, 63, 0, 261,
0, 53, 0, 141, 0, 0, 141, 141, 141, 141,
141, 141, 0, 141, 0, 0, 0, 53, 53, 53,
0, 0, 53, 0, 141, 141, 262, 63, 0, 141,
0, 0, 0, 201, 0, 0, 0, 0, 0, 357,
0, 0, 0, 0, 0, 140, 140, 140, 362, 0,
0, 140, 0, 365, 0, 0, 0, 63, 0, 141,
48, 0, 0, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 53, 140, 0, 48, 0,
49, 48, 140, 140, 140, 0, 140, 51, 140, 141,
141, 0, 0, 0, 0, 0, 0, 140, 49, 0,
0, 49, 0, 51, 51, 51, 140, 0, 51, 0,
0, 0, 0, 0, 140, 140, 140, 140, 140, 140,
0, 140, 0, 140, 140, 50, 0, 140, 50, 0,
140, 140, 140, 139, 139, 139, 0, 0, 0, 139,
0, 0, 50, 50, 0, 0, 0, 50, 0, 0,
0, 139, 139, 139, 139, 139, 139, 139, 139, 139,
139, 139, 139, 0, 139, 0, 0, 0, 0, 0,
139, 139, 139, 0, 139, 0, 139, 0, 0, 0,
0, 0, 0, 0, 0, 139, 0, 0, 0, 0,
0, 0, 0, 0, 139, 63, 63, 63, 0, 0,
0, 0, 139, 139, 139, 139, 139, 139, 50, 139,
0, 139, 139, 63, 63, 139, 0, 0, 139, 139,
139, 0, 0, 0, 0, 0, 0, 141, 141, 141,
0, 0, 63, 141, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 141, 141, 141, 141, 141,
141, 141, 141, 141, 141, 141, 141, 0, 141, 0,
0, 0, 0, 0, 141, 141, 141, 0, 141, 0,
141, 63, 0, 0, 0, 0, 0, 0, 136, 141,
0, 0, 0, 0, 0, 0, 0, 0, 141, 0,
0, 0, 0, 0, 0, 0, 141, 141, 141, 141,
141, 141, 0, 141, 0, 141, 141, 0, 0, 141,
0, 0, 141, 141, 141, 136, 0, 0, 136, 136,
136, 136, 136, 136, 0, 136, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 136, 136, 0, 0,
0, 136, 0, 0, 0, 0, 0, 50, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 50, 135, 0, 50, 0,
0, 136, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 136, 136, 135, 0, 0, 135, 135, 135, 135,
135, 135, 0, 135, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 135, 135, 0, 0, 64, 135,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 135,
137, 0, 0, 0, 0, 0, 0, 0, 0, 64,
0, 0, 64, 0, 0, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 64, 64, 0, 135,
135, 64, 0, 0, 0, 0, 0, 137, 0, 0,
137, 137, 137, 137, 137, 137, 0, 137, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 137, 137,
0, 64, 0, 137, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 136,
136, 136, 0, 0, 0, 136, 0, 0, 0, 0,
0, 64, 0, 137, 0, 0, 0, 136, 136, 136,
136, 136, 136, 136, 136, 136, 136, 136, 136, 0,
136, 0, 0, 0, 0, 0, 136, 136, 136, 0,
136, 0, 136, 137, 137, 0, 0, 0, 0, 0,
0, 136, 0, 0, 0, 0, 0, 0, 0, 0,
136, 0, 0, 0, 0, 0, 0, 0, 136, 136,
136, 136, 136, 136, 0, 136, 0, 136, 136, 0,
0, 136, 0, 0, 136, 136, 136, 135, 135, 135,
0, 0, 0, 135, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 135, 135, 135, 135, 135,
135, 135, 135, 135, 135, 135, 135, 0, 135, 0,
0, 0, 0, 0, 135, 135, 135, 0, 135, 0,
135, 0, 0, 0, 0, 0, 0, 0, 0, 135,
0, 0, 56, 0, 0, 33, 0, 34, 135, 64,
64, 64, 0, 0, 0, 0, 135, 135, 135, 135,
135, 135, 0, 135, 0, 135, 135, 64, 64, 135,
0, 0, 135, 135, 135, 0, 0, 0, 0, 0,
0, 137, 137, 137, 0, 0, 64, 137, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 137,
137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
137, 0, 137, 0, 0, 0, 0, 0, 137, 137,
137, 0, 137, 0, 137, 64, 78, 0, 0, 0,
0, 0, 138, 137, 0, 0, 0, 0, 0, 0,
0, 0, 137, 0, 0, 0, 0, 0, 0, 0,
137, 137, 137, 137, 137, 137, 0, 137, 0, 137,
137, 0, 0, 137, 0, 0, 137, 137, 137, 138,
0, 0, 138, 138, 138, 138, 138, 138, 0, 138,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
138, 138, 0, 0, 0, 138, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
173, 0, 0, 0, 0, 138, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 138, 138, 173, 0, 0,
173, 173, 173, 173, 173, 173, 0, 173, 0, 79,
0, 0, 0, 0, 0, 0, 0, 0, 173, 173,
0, 80, 0, 173, 82, 83, 84, 85, 86, 87,
88, 15, 16, 0, 17, 0, 0, 0, 0, 0,
0, 19, 20, 0, 21, 0, 22, 0, 0, 0,
0, 0, 0, 173, 173, 0, 0, 0, 0, 0,
0, 0, 0, 0, 23, 0, 0, 0, 0, 0,
0, 0, 24, 25, 26, 27, 28, 29, 0, 30,
0, 31, 32, 173, 173, 57, 0, 0, 36, 37,
38, 173, 0, 0, 173, 173, 173, 173, 173, 173,
0, 173, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 173, 173, 0, 0, 0, 173, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 138, 138, 138, 0, 0, 0, 138,
0, 0, 0, 0, 0, 0, 0, 173, 0, 0,
0, 138, 138, 138, 138, 138, 138, 138, 138, 138,
138, 138, 138, 0, 138, 0, 0, 0, 0, 0,
138, 138, 138, 0, 138, 0, 138, 173, 173, 0,
0, 0, 0, 0, 0, 138, 0, 0, 0, 0,
0, 0, 0, 0, 138, 0, 0, 0, 0, 0,
0, 0, 138, 138, 138, 138, 138, 138, 0, 138,
0, 138, 138, 0, 0, 138, 0, 0, 138, 138,
138, 173, 173, 173, 0, 133, 0, 173, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
173, 0, 173, 0, 0, 0, 0, 0, 173, 173,
173, 0, 173, 0, 173, 133, 133, 0, 133, 133,
133, 0, 0, 173, 0, 0, 0, 0, 0, 0,
0, 0, 173, 133, 133, 0, 0, 0, 133, 0,
173, 173, 173, 173, 173, 173, 0, 173, 0, 173,
173, 0, 0, 173, 0, 173, 0, 0, 173, 0,
0, 0, 0, 0, 0, 173, 173, 173, 133, 134,
0, 173, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 173, 173, 0, 173, 173, 173, 173,
173, 173, 173, 173, 173, 0, 173, 0, 133, 133,
0, 0, 173, 173, 173, 0, 173, 0, 173, 134,
134, 0, 134, 134, 134, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 173, 134, 134, 0,
0, 0, 134, 0, 173, 173, 173, 173, 173, 173,
0, 173, 0, 173, 173, 0, 0, 173, 0, 173,
0, 0, 173, 0, 0, 0, 0, 147, 0, 0,
0, 0, 134, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 134, 134, 0, 0, 0, 147, 147, 0,
0, 147, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 147, 147, 0, 0, 0,
147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 133, 133, 133, 0,
0, 0, 133, 0, 0, 0, 0, 0, 0, 0,
147, 0, 0, 0, 133, 133, 133, 133, 133, 133,
133, 133, 133, 133, 133, 133, 0, 133, 0, 0,
0, 0, 0, 133, 133, 133, 0, 133, 0, 133,
147, 147, 0, 0, 0, 0, 0, 0, 133, 0,
0, 0, 0, 0, 0, 0, 0, 133, 0, 0,
0, 0, 0, 0, 0, 133, 133, 133, 133, 133,
133, 0, 133, 0, 133, 133, 0, 0, 133, 0,
0, 133, 133, 133, 0, 0, 0, 0, 0, 0,
134, 134, 134, 0, 0, 0, 134, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 134, 134,
134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
0, 134, 0, 0, 0, 0, 0, 134, 134, 134,
0, 134, 0, 134, 0, 0, 0, 0, 0, 0,
0, 0, 134, 0, 0, 0, 0, 56, 0, 0,
33, 134, 34, 0, 0, 0, 0, 0, 0, 134,
134, 134, 134, 134, 134, 0, 134, 0, 134, 134,
0, 0, 134, 0, 0, 134, 134, 134, 147, 147,
147, 0, 153, 0, 147, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 147, 147, 147, 147,
147, 147, 147, 147, 147, 147, 147, 147, 0, 147,
0, 0, 0, 0, 0, 147, 147, 147, 0, 147,
0, 147, 153, 153, 0, 0, 153, 0, 0, 0,
147, 0, 0, 0, 0, 0, 0, 0, 0, 147,
153, 153, 0, 0, 65, 153, 0, 147, 147, 147,
147, 147, 147, 0, 147, 0, 147, 147, 0, 0,
147, 0, 0, 147, 147, 147, 0, 0, 0, 0,
152, 0, 0, 0, 0, 153, 0, 0, 0, 0,
0, 0, 0, 0, 0, 65, 0, 0, 65, 0,
0, 65, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 65, 65, 0, 153, 153, 65, 0, 0,
152, 152, 0, 0, 152, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 152, 152,
0, 0, 0, 152, 0, 0, 0, 65, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 152, 132, 0, 0, 65, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 152, 152, 0, 15, 16, 0, 17,
0, 0, 0, 0, 132, 132, 19, 20, 132, 21,
0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 132, 132, 0, 0, 0, 132, 0, 23,
0, 0, 0, 0, 0, 0, 0, 24, 25, 26,
27, 28, 29, 153, 153, 153, 31, 32, 0, 153,
57, 0, 0, 36, 37, 38, 0, 132, 0, 0,
0, 153, 153, 153, 153, 153, 153, 153, 153, 153,
153, 153, 153, 0, 153, 0, 0, 0, 0, 0,
153, 153, 153, 0, 153, 0, 153, 132, 132, 0,
0, 0, 0, 0, 0, 153, 0, 0, 0, 0,
0, 0, 0, 0, 153, 65, 65, 65, 0, 0,
0, 0, 153, 153, 153, 153, 153, 153, 0, 153,
0, 153, 153, 65, 65, 153, 0, 0, 153, 153,
153, 152, 152, 152, 0, 77, 0, 152, 0, 0,
0, 0, 65, 0, 0, 0, 0, 0, 0, 152,
152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
152, 0, 152, 0, 0, 0, 0, 0, 152, 152,
152, 0, 152, 0, 152, 77, 77, 0, 0, 77,
0, 65, 0, 152, 0, 0, 0, 0, 0, 0,
0, 0, 152, 77, 77, 0, 0, 0, 77, 0,
152, 152, 152, 152, 152, 152, 0, 152, 0, 152,
152, 0, 0, 152, 0, 0, 152, 152, 152, 0,
0, 0, 0, 0, 0, 132, 132, 132, 77, 75,
0, 132, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 132, 132, 132, 132, 132, 132, 132,
132, 132, 132, 132, 132, 0, 132, 0, 77, 77,
0, 0, 132, 132, 132, 0, 132, 0, 132, 75,
75, 0, 0, 75, 0, 0, 0, 132, 0, 0,
0, 35, 0, 0, 0, 0, 132, 75, 75, 0,
0, 0, 75, 0, 132, 132, 132, 132, 132, 132,
0, 132, 0, 132, 132, 0, 0, 132, 0, 0,
132, 132, 132, 0, 0, 0, 0, 0, 0, 0,
0, 35, 75, 0, 35, 0, 35, 0, 35, 0,
0, 0, 0, 37, 0, 0, 0, 0, 0, 0,
35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 75, 75, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 37, 0, 0, 37, 0, 37, 0,
37, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 37, 0, 0, 0, 77, 77, 77, 0,
28, 0, 77, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 77, 77, 0, 77, 77, 77,
77, 77, 77, 77, 77, 77, 0, 77, 0, 0,
0, 0, 0, 77, 77, 77, 0, 77, 0, 77,
28, 0, 0, 28, 0, 28, 0, 28, 0, 0,
0, 0, 0, 0, 0, 0, 0, 77, 0, 0,
0, 0, 0, 0, 0, 77, 77, 77, 77, 77,
77, 0, 77, 0, 77, 77, 0, 0, 77, 0,
0, 77, 77, 77, 0, 0, 0, 0, 0, 0,
75, 75, 75, 0, 29, 0, 75, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 75, 75,
0, 75, 75, 75, 75, 75, 75, 75, 75, 75,
0, 75, 0, 28, 0, 0, 0, 75, 75, 75,
0, 75, 0, 75, 29, 0, 0, 29, 0, 29,
0, 29, 35, 35, 35, 0, 0, 0, 0, 0,
0, 75, 0, 0, 0, 0, 0, 0, 0, 75,
75, 75, 75, 75, 75, 0, 75, 0, 75, 75,
35, 35, 75, 35, 0, 75, 75, 75, 0, 35,
35, 35, 0, 35, 0, 35, 0, 0, 0, 0,
0, 0, 0, 0, 37, 37, 37, 0, 0, 0,
0, 0, 0, 35, 0, 0, 0, 0, 0, 0,
0, 35, 35, 35, 35, 35, 35, 29, 35, 0,
35, 35, 37, 37, 35, 37, 0, 35, 35, 35,
0, 37, 37, 37, 0, 37, 0, 37, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 37, 0, 0, 0, 0,
0, 28, 28, 37, 37, 37, 37, 37, 37, 0,
37, 0, 37, 37, 0, 0, 37, 0, 0, 37,
37, 37, 0, 0, 0, 0, 0, 0, 0, 28,
28, 0, 28, 0, 0, 0, 0, 0, 28, 28,
28, 0, 28, 0, 28, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
28, 28, 28, 28, 28, 28, 0, 28, 0, 28,
28, 0, 0, 28, 0, 0, 28, 28, 28, 0,
0, 0, 0, 0, 0, 29, 29, 0, 0, 0,
155, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 29, 29, 0, 29, 0, 0, 0,
0, 0, 29, 29, 29, 0, 29, 155, 29, 0,
155, 155, 155, 155, 155, 155, 0, 155, 0, 0,
0, 0, 0, 0, 0, 0, 29, 0, 155, 155,
0, 0, 66, 155, 29, 29, 29, 29, 29, 29,
0, 29, 0, 29, 29, 0, 0, 29, 0, 0,
29, 29, 29, 0, 0, 0, 0, 74, 0, 0,
0, 0, 0, 155, 0, 0, 0, 0, 0, 0,
0, 0, 0, 66, 0, 0, 66, 0, 0, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
66, 66, 0, 155, 155, 66, 0, 74, 74, 0,
74, 74, 74, 0, 74, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 74, 74, 0, 0, 67,
74, 0, 0, 0, 0, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 68, 0,
74, 0, 0, 0, 0, 66, 0, 0, 0, 0,
67, 0, 0, 67, 0, 0, 67, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 67, 67, 0,
74, 74, 67, 0, 0, 0, 0, 0, 0, 68,
0, 0, 68, 0, 0, 68, 0, 0, 0, 0,
0, 0, 0, 0, 0, 56, 68, 68, 33, 0,
34, 68, 67, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 326, 0, 0, 0, 0, 259, 0,
0, 155, 155, 155, 0, 0, 0, 155, 0, 0,
0, 68, 67, 0, 0, 0, 0, 0, 0, 155,
155, 155, 155, 155, 155, 155, 0, 155, 155, 0,
155, 0, 155, 0, 0, 0, 0, 0, 155, 155,
155, 68, 155, 0, 155, 0, 0, 0, 0, 0,
0, 0, 0, 155, 0, 0, 0, 0, 0, 0,
0, 0, 155, 66, 66, 66, 0, 0, 0, 0,
0, 0, 0, 155, 155, 155, 0, 155, 0, 155,
155, 66, 66, 155, 0, 155, 155, 155, 74, 74,
74, 0, 0, 0, 74, 0, 0, 0, 0, 0,
66, 0, 0, 0, 0, 0, 74, 74, 0, 74,
74, 74, 74, 74, 74, 74, 0, 74, 0, 74,
0, 0, 0, 0, 0, 74, 74, 74, 0, 74,
0, 74, 0, 0, 0, 0, 0, 0, 0, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 74,
67, 67, 67, 0, 0, 0, 0, 0, 0, 0,
74, 74, 74, 0, 74, 0, 74, 74, 67, 67,
74, 0, 59, 74, 74, 0, 0, 0, 0, 68,
68, 68, 0, 0, 0, 68, 0, 67, 59, 59,
59, 75, 76, 59, 59, 0, 0, 68, 68, 0,
0, 0, 257, 0, 0, 0, 0, 59, 0, 0,
0, 0, 59, 0, 80, 81, 68, 0, 0, 0,
0, 0, 59, 258, 15, 16, 67, 17, 0, 0,
0, 0, 0, 0, 19, 20, 0, 21, 0, 22,
0, 0, 0, 0, 0, 0, 0, 0, 59, 59,
59, 59, 59, 59, 0, 68, 0, 23, 0, 0,
0, 0, 0, 0, 0, 24, 25, 26, 27, 28,
29, 0, 30, 0, 31, 32, 0, 59, 57, 0,
0, 36, 37, 38, 0, 0, 213, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 59, 0, 59,
0, 59, 59, 0, 0, 0, 0, 59, 59, 59,
234, 59, 0, 59, 59, 59, 59, 59, 59, 0,
59, 0, 59, 0, 59, 59, 0, 0, 0, 0,
0, 0, 0, 0, 62, 59, 0, 0, 0, 0,
0, 0, 0, 0, 0, 59, 0, 0, 0, 0,
0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 59, 0, 0, 0, 0, 0, 59,
0, 0, 0, 0, 59, 62, 59, 0, 62, 0,
0, 62, 0, 0, 0, 0, 0, 0, 0, 58,
0, 0, 62, 62, 0, 0, 0, 62, 0, 0,
0, 0, 59, 0, 59, 71, 72, 73, 0, 0,
77, 90, 213, 0, 213, 0, 213, 213, 213, 59,
59, 59, 213, 0, 90, 0, 59, 62, 0, 73,
59, 0, 59, 0, 0, 59, 59, 0, 0, 151,
0, 0, 0, 0, 0, 0, 0, 0, 0, 59,
0, 0, 59, 59, 59, 59, 0, 62, 0, 59,
59, 59, 0, 0, 0, 171, 172, 173, 174, 175,
176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 213, 0, 342, 0, 343, 0, 59, 0, 59,
0, 59, 0, 0, 90, 0, 59, 0, 0, 0,
0, 0, 0, 211, 0, 0, 59, 0, 0, 0,
0, 0, 0, 0, 90, 0, 90, 0, 90, 90,
0, 0, 0, 0, 231, 90, 90, 0, 90, 0,
90, 90, 90, 90, 90, 90, 0, 90, 0, 90,
0, 90, 236, 0, 0, 0, 0, 0, 0, 0,
0, 0, 90, 0, 0, 0, 0, 0, 0, 0,
0, 174, 90, 0, 174, 0, 174, 174, 90, 174,
0, 174, 0, 0, 0, 0, 0, 0, 0, 0,
260, 0, 0, 174, 0, 0, 90, 174, 0, 0,
0, 90, 0, 90, 0, 62, 62, 62, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 62, 62, 0, 0, 0, 0, 90,
0, 90, 0, 0, 0, 0, 0, 0, 0, 211,
0, 211, 62, 211, 211, 211, 301, 302, 303, 211,
0, 0, 0, 90, 0, 0, 0, 90, 174, 90,
0, 0, 90, 90, 0, 0, 0, 0, 0, 0,
0, 0, 39, 0, 0, 0, 260, 0, 52, 260,
260, 260, 260, 0, 0, 0, 260, 90, 90, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 211, 0,
0, 0, 0, 0, 90, 0, 90, 0, 90, 0,
142, 144, 0, 260, 0, 0, 0, 0, 146, 147,
142, 142, 0, 90, 153, 154, 0, 0, 0, 0,
0, 0, 0, 0, 156, 0, 0, 158, 159, 160,
161, 162, 163, 0, 165, 173, 167, 169, 173, 173,
173, 173, 173, 173, 39, 173, 39, 180, 0, 0,
142, 0, 0, 0, 0, 0, 173, 173, 190, 0,
0, 173, 0, 0, 0, 196, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 214, 0, 0,
0, 174, 219, 0, 221, 0, 0, 0, 0, 0,
0, 0, 0, 174, 174, 0, 174, 174, 174, 174,
174, 174, 0, 174, 174, 0, 174, 0, 0, 0,
0, 0, 0, 174, 174, 0, 174, 0, 174, 0,
0, 0, 173, 27, 27, 0, 27, 174, 27, 0,
27, 0, 0, 0, 0, 0, 174, 0, 247, 0,
0, 0, 27, 249, 174, 174, 174, 174, 174, 174,
0, 174, 52, 174, 174, 0, 0, 174, 0, 174,
174, 174, 174, 0, 0, 0, 0, 0, 0, 271,
0, 0, 275, 277, 0, 0, 0, 0, 280, 0,
281, 0, 0, 0, 0, 26, 0, 142, 26, 0,
26, 0, 26, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 26, 0, 27, 0, 27, 0,
0, 0, 0, 305, 306, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 52, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
332, 173, 334, 0, 0, 173, 336, 0, 26, 0,
26, 0, 0, 0, 0, 0, 0, 173, 173, 173,
0, 0, 173, 351, 0, 0, 173, 173, 173, 0,
173, 0, 0, 0, 0, 0, 0, 173, 173, 0,
173, 0, 173, 0, 0, 0, 0, 107, 0, 0,
107, 0, 107, 0, 107, 0, 0, 0, 0, 0,
173, 0, 0, 0, 0, 0, 107, 0, 173, 173,
173, 173, 173, 173, 0, 173, 0, 173, 173, 27,
0, 173, 0, 173, 0, 0, 173, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 27, 27, 27, 27, 27, 27, 27, 27,
27, 0, 27, 27, 27, 27, 0, 27, 27, 27,
107, 0, 107, 0, 0, 0, 0, 0, 0, 0,
0, 26, 0, 27, 27, 27, 27, 0, 0, 0,
0, 0, 0, 27, 27, 27, 27, 27, 27, 0,
27, 27, 27, 27, 27, 0, 27, 0, 0, 27,
27, 27, 0, 0, 26, 26, 26, 26, 26, 26,
26, 26, 26, 0, 26, 26, 26, 26, 0, 26,
26, 26, 119, 0, 0, 119, 0, 119, 0, 119,
0, 0, 0, 0, 0, 26, 26, 26, 26, 0,
0, 119, 0, 0, 0, 26, 26, 26, 26, 26,
26, 0, 26, 26, 26, 26, 26, 0, 26, 0,
0, 26, 26, 26, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 13, 0, 0, 33, 0, 34, 0,
14, 0, 0, 107, 0, 0, 0, 0, 0, 0,
0, 0, 108, 0, 0, 119, 0, 119, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 107, 107, 107, 107,
107, 107, 107, 107, 107, 0, 107, 107, 107, 107,
0, 107, 107, 107, 13, 0, 0, 33, 0, 34,
0, 14, 0, 0, 0, 0, 0, 107, 107, 107,
107, 0, 0, 108, 0, 0, 12, 107, 107, 107,
107, 107, 107, 0, 107, 107, 107, 107, 107, 0,
107, 0, 0, 107, 107, 107, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 13, 0, 0, 33,
0, 34, 0, 14, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 108, 0, 12, 0, 200,
0, 0, 0, 0, 0, 0, 0, 0, 119, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 119, 119, 119, 119, 119, 119, 119, 119, 119,
0, 119, 119, 119, 119, 0, 119, 119, 119, 12,
0, 216, 0, 0, 0, 0, 0, 0, 0, 106,
0, 0, 119, 119, 119, 119, 107, 0, 0, 0,
0, 0, 119, 119, 119, 119, 119, 119, 0, 119,
119, 119, 119, 119, 0, 119, 0, 0, 119, 119,
119, 0, 15, 16, 109, 17, 110, 111, 112, 113,
114, 0, 19, 20, 115, 21, 0, 22, 116, 117,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
106, 0, 0, 118, 119, 23, 0, 0, 0, 0,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 120, 31, 32, 121, 0, 35, 0, 0, 36,
37, 38, 0, 15, 16, 109, 17, 110, 111, 112,
113, 114, 0, 19, 20, 115, 21, 0, 22, 116,
117, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 106, 0, 118, 119, 23, 0, 0, 0,
0, 0, 0, 0, 24, 25, 26, 27, 28, 29,
0, 30, 120, 31, 32, 121, 0, 35, 0, 0,
36, 37, 38, 0, 0, 15, 16, 109, 17, 110,
111, 112, 113, 114, 0, 19, 20, 115, 21, 0,
22, 116, 117, 13, 0, 0, 33, 0, 34, 0,
14, 0, 0, 0, 0, 0, 118, 119, 23, 0,
0, 0, 108, 0, 0, 0, 24, 25, 26, 27,
28, 29, 0, 30, 120, 31, 32, 121, 0, 35,
0, 0, 36, 37, 38, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 13, 0, 0, 33, 0, 34, 0,
14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 108, 0, 0, 0, 12, 0, 217, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 13, 0, 0, 33, 0, 34, 0,
14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 108, 0, 0, 0, 12, 0, 238, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 13, 0, 0, 33, 0, 34, 0,
14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 108, 0, 0, 0, 12, 0, 254, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 106,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 15, 16, 109, 17, 110, 111, 112, 113,
114, 0, 19, 20, 115, 21, 12, 22, 116, 117,
0, 0, 0, 0, 0, 0, 0, 0, 0, 106,
0, 0, 0, 118, 119, 23, 0, 0, 0, 0,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 120, 31, 32, 121, 0, 35, 0, 0, 36,
37, 38, 15, 16, 109, 17, 110, 111, 112, 113,
114, 0, 19, 20, 115, 21, 0, 22, 116, 117,
0, 0, 0, 0, 0, 0, 0, 0, 0, 106,
0, 0, 0, 118, 119, 23, 0, 0, 0, 0,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 120, 31, 32, 121, 0, 35, 0, 0, 36,
37, 38, 15, 16, 109, 17, 110, 111, 112, 113,
114, 0, 19, 20, 115, 21, 0, 22, 116, 117,
0, 0, 0, 0, 0, 0, 0, 0, 0, 106,
0, 0, 0, 118, 119, 23, 288, 0, 0, 0,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 120, 31, 32, 121, 0, 35, 0, 0, 36,
37, 38, 15, 16, 109, 17, 110, 111, 112, 113,
114, 0, 19, 20, 115, 21, 0, 22, 116, 117,
13, 0, 0, 33, 0, 34, 0, 14, 0, 0,
0, 0, 0, 118, 119, 23, 0, 0, 0, 108,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 120, 31, 32, 121, 0, 35, 0, 0, 36,
37, 38, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13, 0, 0, 33, 0, 34, 0, 14, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 108,
0, 0, 0, 12, 0, 318, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
118, 0, 0, 118, 0, 118, 0, 118, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
0, 0, 0, 12, 0, 354, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13, 0, 0, 33, 0, 34, 0, 14, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 108,
0, 0, 0, 118, 0, 118, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 26, 26, 0, 26, 0, 26, 0, 26, 15,
16, 109, 17, 110, 111, 112, 113, 114, 0, 19,
20, 115, 21, 12, 22, 116, 117, 0, 0, 0,
0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
118, 119, 23, 0, 0, 0, 0, 0, 0, 0,
24, 25, 26, 27, 28, 29, 0, 30, 120, 31,
32, 121, 0, 35, 0, 0, 36, 37, 38, 15,
16, 109, 17, 110, 111, 112, 113, 114, 0, 19,
20, 115, 21, 0, 22, 116, 117, 0, 0, 0,
0, 0, 0, 0, 0, 0, 118, 0, 0, 0,
118, 119, 23, 0, 0, 0, 0, 0, 0, 0,
24, 25, 26, 27, 28, 29, 0, 30, 120, 31,
32, 121, 0, 35, 0, 0, 36, 37, 38, 118,
118, 118, 118, 118, 118, 118, 118, 118, 0, 118,
118, 118, 118, 0, 118, 118, 118, 0, 0, 0,
0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
118, 118, 118, 0, 0, 0, 0, 0, 0, 0,
118, 118, 118, 118, 118, 118, 0, 118, 118, 118,
118, 118, 0, 118, 0, 0, 118, 118, 118, 15,
16, 109, 17, 110, 111, 112, 113, 114, 0, 19,
20, 115, 21, 0, 22, 116, 117, 111, 0, 0,
111, 0, 111, 0, 111, 0, 0, 26, 0, 0,
118, 119, 23, 0, 0, 0, 111, 0, 0, 0,
24, 25, 26, 27, 28, 29, 0, 30, 120, 31,
32, 121, 0, 35, 0, 0, 36, 37, 38, 0,
26, 26, 0, 26, 0, 26, 0, 0, 0, 0,
26, 26, 0, 26, 0, 26, 0, 21, 0, 0,
21, 0, 21, 0, 21, 0, 0, 0, 0, 0,
0, 26, 26, 26, 0, 0, 21, 0, 0, 0,
111, 26, 26, 26, 26, 26, 26, 0, 26, 0,
26, 26, 0, 0, 26, 0, 0, 26, 26, 26,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 184, 0, 0,
184, 0, 184, 0, 184, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
21, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 17, 0, 0,
17, 0, 17, 0, 17, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
184, 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, 0, 0, 0, 0, 0, 0, 0, 13, 0,
0, 33, 0, 34, 0, 14, 111, 111, 111, 111,
111, 111, 111, 111, 111, 0, 111, 111, 111, 111,
17, 111, 111, 111, 0, 0, 0, 0, 0, 0,
0, 0, 0, 21, 0, 0, 0, 111, 111, 111,
0, 0, 0, 0, 0, 0, 0, 111, 111, 111,
111, 111, 111, 0, 111, 111, 111, 111, 111, 0,
111, 0, 0, 111, 111, 111, 21, 21, 21, 21,
21, 21, 21, 21, 21, 0, 21, 21, 21, 21,
0, 21, 21, 21, 0, 0, 56, 0, 0, 33,
0, 34, 0, 184, 0, 0, 0, 21, 21, 21,
0, 0, 0, 0, 0, 0, 0, 21, 21, 21,
21, 21, 21, 0, 21, 21, 21, 21, 21, 0,
21, 0, 0, 21, 21, 21, 184, 184, 184, 184,
184, 184, 184, 184, 184, 0, 184, 184, 184, 184,
0, 184, 184, 184, 0, 0, 0, 0, 0, 0,
0, 0, 0, 17, 0, 0, 0, 184, 184, 184,
0, 0, 0, 0, 0, 0, 0, 184, 184, 184,
184, 184, 184, 0, 184, 184, 184, 184, 184, 0,
184, 0, 0, 184, 184, 184, 17, 17, 17, 17,
17, 17, 17, 17, 17, 0, 17, 17, 17, 17,
0, 17, 17, 17, 15, 0, 0, 15, 0, 15,
0, 15, 0, 0, 106, 0, 0, 17, 17, 17,
0, 0, 0, 15, 0, 0, 0, 17, 17, 17,
17, 17, 17, 0, 17, 17, 17, 17, 17, 0,
17, 0, 0, 17, 17, 17, 0, 15, 16, 0,
17, 0, 111, 0, 0, 0, 0, 19, 20, 0,
21, 0, 22, 0, 13, 0, 0, 13, 0, 13,
0, 13, 0, 0, 0, 0, 0, 0, 118, 119,
23, 0, 0, 13, 0, 0, 0, 15, 24, 25,
26, 27, 28, 29, 0, 30, 0, 31, 32, 0,
0, 35, 0, 0, 36, 37, 38, 0, 0, 0,
0, 0, 0, 257, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 80, 0, 0, 0, 0,
0, 0, 0, 0, 258, 15, 16, 0, 17, 56,
136, 0, 33, 135, 34, 19, 20, 13, 21, 0,
22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 89, 0, 0, 0, 0, 0, 23, 0,
0, 0, 0, 0, 0, 0, 24, 25, 26, 27,
28, 29, 0, 30, 0, 31, 32, 0, 0, 57,
0, 0, 36, 37, 38, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
15, 0, 0, 78, 0, 56, 0, 0, 33, 0,
34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 185, 0, 0, 0, 89, 0,
0, 0, 0, 15, 15, 15, 15, 15, 15, 15,
15, 15, 0, 15, 15, 15, 15, 0, 15, 15,
15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13, 0, 0, 0, 15, 15, 15, 0, 0, 0,
0, 0, 0, 0, 15, 15, 15, 15, 15, 15,
0, 15, 15, 15, 15, 15, 0, 15, 0, 78,
15, 15, 15, 13, 13, 13, 13, 13, 13, 13,
13, 13, 0, 13, 13, 13, 13, 0, 13, 13,
13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 13, 13, 13, 0, 0, 0,
0, 0, 0, 0, 13, 13, 13, 13, 13, 13,
0, 13, 13, 13, 13, 13, 79, 13, 0, 0,
13, 13, 13, 0, 0, 0, 0, 0, 80, 81,
0, 82, 83, 84, 85, 86, 87, 88, 15, 16,
0, 17, 56, 316, 0, 33, 135, 34, 19, 20,
0, 21, 0, 22, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 89, 0, 0, 0, 0,
0, 23, 0, 0, 0, 0, 0, 0, 0, 24,
25, 26, 27, 28, 29, 0, 30, 0, 31, 32,
0, 0, 57, 0, 0, 36, 37, 38, 182, 0,
0, 0, 79, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 80, 81, 0, 82, 83, 84,
85, 86, 87, 88, 15, 16, 78, 17, 56, 327,
0, 33, 135, 34, 19, 20, 0, 21, 0, 22,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 89, 0, 0, 0, 0, 0, 23, 0, 0,
0, 0, 0, 0, 0, 24, 25, 26, 27, 28,
29, 0, 30, 0, 31, 32, 0, 0, 57, 0,
0, 36, 37, 38, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 56,
329, 0, 33, 135, 34, 0, 0, 0, 0, 0,
0, 0, 78, 0, 0, 0, 0, 0, 0, 0,
0, 0, 89, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 79,
56, 136, 0, 33, 0, 34, 0, 0, 0, 0,
0, 80, 81, 78, 82, 83, 84, 85, 86, 87,
88, 15, 16, 89, 17, 0, 0, 0, 0, 0,
0, 19, 20, 0, 21, 0, 22, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 23, 0, 0, 0, 0, 0,
0, 0, 24, 25, 26, 27, 28, 29, 0, 30,
0, 31, 32, 0, 0, 57, 0, 0, 36, 37,
38, 0, 0, 0, 78, 79, 56, 0, 0, 33,
135, 34, 0, 0, 0, 0, 0, 80, 81, 0,
82, 83, 84, 85, 86, 87, 88, 15, 16, 89,
17, 0, 0, 0, 0, 0, 0, 19, 20, 0,
21, 0, 22, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
23, 0, 0, 0, 0, 0, 0, 0, 24, 25,
26, 27, 28, 29, 0, 30, 79, 31, 32, 0,
0, 57, 0, 0, 36, 37, 38, 0, 80, 81,
78, 82, 83, 84, 85, 86, 87, 88, 15, 16,
0, 17, 56, 0, 0, 33, 0, 34, 19, 20,
0, 21, 0, 22, 0, 0, 0, 0, 0, 0,
235, 0, 0, 0, 0, 89, 0, 0, 0, 0,
0, 23, 0, 0, 0, 0, 0, 0, 0, 24,
25, 26, 27, 28, 29, 0, 30, 79, 31, 32,
0, 0, 57, 0, 0, 36, 37, 38, 0, 80,
81, 0, 82, 83, 84, 85, 86, 87, 88, 15,
16, 0, 17, 56, 272, 0, 33, 0, 34, 19,
20, 0, 21, 0, 22, 0, 78, 0, 0, 0,
0, 0, 0, 0, 0, 0, 89, 0, 0, 0,
0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
24, 25, 26, 27, 28, 29, 0, 30, 0, 31,
32, 0, 0, 57, 0, 0, 36, 37, 38, 0,
0, 0, 0, 79, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 80, 81, 0, 82, 83,
84, 85, 86, 87, 88, 15, 16, 78, 17, 56,
310, 0, 33, 0, 34, 19, 20, 0, 21, 0,
22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 89, 0, 0, 0, 0, 0, 23, 0,
0, 0, 0, 0, 0, 0, 24, 25, 26, 27,
28, 29, 0, 30, 0, 31, 32, 0, 0, 57,
0, 0, 36, 37, 38, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 79,
56, 312, 0, 33, 0, 34, 0, 0, 0, 0,
0, 80, 81, 78, 82, 83, 84, 85, 86, 87,
88, 15, 16, 89, 17, 0, 0, 0, 0, 0,
0, 19, 20, 0, 21, 0, 22, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 23, 0, 0, 0, 0, 0,
0, 0, 24, 25, 26, 27, 28, 29, 0, 30,
79, 31, 32, 0, 0, 57, 0, 0, 36, 37,
38, 0, 80, 81, 78, 82, 83, 84, 85, 86,
87, 88, 15, 16, 0, 17, 56, 345, 0, 33,
0, 34, 19, 20, 0, 21, 0, 22, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 89,
0, 0, 0, 0, 0, 23, 0, 0, 0, 0,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 0, 31, 32, 0, 0, 57, 0, 0, 36,
37, 38, 0, 0, 0, 0, 79, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 80, 81,
0, 82, 83, 84, 85, 86, 87, 88, 15, 16,
78, 17, 56, 347, 0, 33, 0, 34, 19, 20,
0, 21, 0, 22, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 89, 0, 0, 0, 0,
0, 23, 0, 0, 0, 0, 0, 0, 0, 24,
25, 26, 27, 28, 29, 0, 30, 79, 31, 32,
0, 0, 57, 0, 0, 36, 37, 38, 0, 80,
81, 0, 82, 83, 84, 85, 86, 87, 88, 15,
16, 0, 17, 56, 0, 0, 33, 0, 34, 19,
20, 0, 21, 0, 22, 0, 78, 0, 0, 0,
0, 0, 349, 0, 0, 0, 89, 0, 0, 0,
0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
24, 25, 26, 27, 28, 29, 0, 30, 0, 31,
32, 0, 0, 57, 0, 0, 36, 37, 38, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 79, 56, 358, 0, 33, 0, 34,
0, 0, 0, 0, 0, 80, 81, 78, 82, 83,
84, 85, 86, 87, 88, 15, 16, 89, 17, 0,
0, 0, 0, 0, 0, 19, 20, 0, 21, 0,
22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
0, 0, 0, 0, 0, 0, 24, 25, 26, 27,
28, 29, 0, 30, 0, 31, 32, 0, 0, 57,
0, 0, 36, 37, 38, 0, 0, 0, 78, 79,
56, 0, 0, 33, 0, 34, 0, 0, 0, 0,
0, 80, 81, 0, 82, 83, 84, 85, 86, 87,
88, 15, 16, 89, 17, 0, 0, 0, 0, 0,
0, 19, 20, 0, 21, 0, 22, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 23, 0, 0, 0, 0, 0,
0, 0, 24, 25, 26, 27, 28, 29, 0, 30,
79, 31, 32, 0, 0, 57, 0, 0, 36, 37,
38, 0, 80, 81, 78, 82, 83, 84, 85, 86,
87, 88, 15, 16, 0, 17, 93, 0, 0, 93,
0, 93, 19, 20, 0, 21, 0, 22, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 93,
0, 0, 0, 0, 0, 23, 0, 0, 0, 0,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 79, 31, 32, 0, 0, 57, 0, 0, 36,
37, 38, 0, 80, 81, 0, 82, 83, 84, 85,
86, 87, 88, 15, 16, 0, 17, 0, 0, 0,
0, 58, 58, 19, 20, 58, 21, 0, 22, 0,
93, 0, 0, 0, 0, 0, 0, 0, 0, 58,
58, 0, 0, 0, 58, 0, 23, 0, 0, 0,
0, 0, 0, 0, 24, 25, 26, 27, 28, 29,
0, 30, 0, 31, 32, 0, 0, 57, 0, 0,
36, 37, 38, 0, 0, 0, 0, 79, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
81, 0, 82, 83, 84, 85, 86, 87, 88, 15,
16, 0, 17, 56, 56, 58, 0, 56, 0, 19,
20, 0, 21, 0, 22, 0, 0, 0, 0, 0,
0, 56, 56, 0, 0, 0, 56, 0, 0, 0,
0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
24, 25, 26, 27, 28, 29, 0, 30, 0, 31,
32, 0, 0, 57, 0, 0, 36, 37, 38, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 56, 93, 0, 33, 0, 34, 0, 0,
0, 0, 0, 0, 0, 93, 93, 56, 93, 93,
93, 93, 93, 93, 93, 93, 93, 0, 93, 0,
0, 0, 0, 0, 0, 93, 93, 0, 93, 0,
93, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 13, 0, 0, 33, 93, 34,
0, 14, 0, 0, 0, 0, 93, 93, 93, 93,
93, 93, 0, 93, 58, 93, 93, 0, 58, 93,
0, 0, 93, 93, 93, 0, 78, 0, 0, 0,
58, 58, 58, 0, 0, 58, 0, 0, 0, 58,
58, 58, 0, 58, 0, 0, 0, 0, 0, 0,
58, 58, 0, 58, 0, 58, 56, 0, 0, 33,
0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 58, 0, 0, 0, 12, 0, 259,
0, 58, 58, 58, 58, 58, 58, 0, 58, 0,
58, 58, 0, 0, 58, 0, 56, 58, 58, 58,
56, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 56, 56, 56, 0, 0, 56, 0, 0,
0, 56, 56, 56, 0, 56, 0, 0, 0, 0,
0, 13, 56, 56, 33, 56, 34, 56, 14, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
185, 0, 0, 0, 0, 56, 0, 0, 0, 0,
0, 0, 0, 56, 56, 56, 56, 56, 56, 79,
56, 0, 56, 56, 0, 0, 56, 0, 0, 56,
56, 56, 0, 0, 82, 83, 84, 85, 86, 87,
88, 15, 16, 0, 17, 0, 0, 0, 0, 0,
0, 19, 20, 0, 21, 0, 22, 13, 141, 0,
33, 0, 34, 0, 14, 10, 11, 0, 0, 0,
0, 0, 0, 0, 23, 0, 0, 0, 0, 0,
0, 0, 24, 25, 26, 27, 28, 29, 0, 30,
0, 31, 32, 15, 16, 57, 17, 0, 36, 37,
38, 0, 18, 19, 20, 0, 21, 0, 22, 13,
149, 0, 33, 0, 34, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 23, 0, 0, 0,
0, 0, 0, 257, 24, 25, 26, 27, 28, 29,
0, 30, 0, 31, 32, 80, 81, 35, 0, 0,
36, 37, 38, 0, 258, 15, 16, 0, 17, 0,
0, 0, 0, 0, 0, 19, 20, 0, 21, 13,
22, 0, 33, 0, 34, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
0, 0, 0, 0, 0, 0, 24, 25, 26, 27,
28, 29, 0, 30, 182, 31, 32, 0, 0, 57,
0, 0, 36, 37, 38, 0, 0, 0, 0, 0,
0, 13, 0, 0, 33, 0, 34, 0, 14, 0,
15, 16, 0, 17, 0, 0, 0, 0, 0, 0,
19, 20, 0, 21, 0, 22, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 23, 0, 0, 0, 0, 0, 0,
0, 24, 25, 26, 27, 28, 29, 0, 30, 0,
31, 32, 0, 0, 35, 0, 0, 36, 37, 38,
0, 0, 0, 0, 13, 0, 0, 33, 0, 34,
0, 14, 0, 0, 0, 0, 15, 16, 0, 17,
0, 0, 0, 0, 0, 0, 19, 20, 0, 21,
0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 23,
0, 0, 0, 0, 0, 0, 0, 24, 25, 26,
27, 28, 29, 0, 30, 0, 31, 32, 15, 16,
35, 17, 0, 36, 37, 38, 0, 293, 19, 20,
33, 21, 34, 22, 14, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 23, 166, 0, 0, 0, 0, 0, 0, 24,
25, 26, 27, 28, 29, 0, 30, 0, 31, 32,
0, 0, 35, 0, 0, 36, 37, 38, 15, 16,
0, 17, 0, 0, 0, 0, 0, 293, 19, 20,
33, 21, 34, 22, 14, 0, 0, 0, 0, 0,
0, 0, 0, 0, 168, 0, 0, 0, 0, 0,
0, 23, 0, 0, 0, 0, 0, 0, 0, 24,
25, 26, 27, 28, 29, 0, 30, 0, 31, 32,
15, 16, 35, 17, 0, 36, 37, 38, 0, 293,
19, 20, 33, 21, 34, 22, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 23, 0, 0, 0, 0, 0, 0,
0, 24, 25, 26, 27, 28, 29, 218, 30, 0,
31, 32, 0, 0, 35, 0, 0, 36, 37, 38,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 15, 16, 0, 17, 0, 0, 0,
0, 0, 0, 19, 20, 0, 21, 56, 22, 0,
33, 0, 34, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 23, 0, 0, 0,
0, 0, 0, 0, 24, 25, 26, 27, 28, 29,
166, 30, 0, 31, 32, 0, 0, 35, 0, 0,
36, 37, 38, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 15, 16, 13, 17,
0, 33, 0, 34, 0, 14, 19, 20, 0, 21,
0, 22, 0, 0, 0, 0, 0, 56, 0, 0,
33, 0, 34, 0, 14, 0, 0, 0, 0, 23,
168, 0, 0, 0, 0, 0, 0, 24, 25, 26,
27, 28, 29, 0, 30, 0, 31, 32, 0, 0,
35, 0, 0, 36, 37, 38, 15, 16, 0, 17,
0, 0, 0, 0, 0, 0, 19, 20, 0, 21,
0, 22, 0, 0, 0, 0, 0, 0, 56, 0,
0, 33, 218, 34, 0, 0, 0, 0, 0, 23,
0, 0, 0, 0, 0, 0, 0, 24, 25, 26,
27, 28, 29, 0, 30, 0, 31, 32, 15, 16,
35, 17, 0, 36, 37, 38, 0, 0, 19, 20,
0, 21, 0, 22, 0, 0, 0, 0, 0, 0,
207, 0, 0, 33, 0, 34, 0, 14, 0, 0,
0, 23, 0, 0, 0, 0, 0, 0, 0, 24,
25, 26, 27, 28, 29, 0, 30, 0, 31, 32,
0, 0, 35, 0, 257, 36, 37, 38, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 258, 15, 16, 0, 17,
0, 0, 0, 0, 0, 293, 19, 20, 33, 21,
34, 22, 14, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 23,
0, 0, 0, 0, 0, 0, 0, 24, 25, 26,
27, 28, 29, 0, 30, 0, 31, 32, 0, 0,
57, 0, 0, 36, 37, 38, 0, 15, 16, 0,
17, 0, 0, 0, 0, 0, 26, 19, 20, 26,
21, 26, 22, 26, 0, 0, 15, 16, 0, 17,
0, 0, 0, 0, 0, 0, 19, 20, 0, 21,
23, 22, 0, 0, 0, 0, 0, 0, 24, 25,
26, 27, 28, 29, 0, 30, 0, 31, 32, 23,
0, 35, 0, 0, 36, 37, 38, 24, 25, 26,
27, 28, 29, 0, 30, 0, 31, 32, 0, 0,
35, 0, 0, 36, 37, 38, 56, 15, 16, 33,
17, 34, 0, 0, 0, 0, 0, 19, 20, 0,
21, 0, 22, 0, 0, 0, 0, 0, 0, 0,
0, 170, 0, 0, 0, 0, 0, 0, 0, 0,
23, 0, 0, 0, 0, 0, 0, 0, 24, 25,
26, 27, 28, 29, 0, 30, 0, 31, 32, 15,
16, 57, 17, 0, 36, 37, 38, 0, 0, 19,
20, 0, 21, 0, 22, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
24, 25, 26, 27, 28, 29, 0, 30, 0, 31,
32, 0, 0, 35, 0, 0, 36, 37, 38, 0,
0, 0, 0, 0, 15, 16, 0, 17, 0, 0,
0, 0, 0, 0, 19, 20, 0, 21, 0, 22,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 23, 0, 0,
0, 0, 0, 0, 0, 24, 25, 26, 27, 28,
29, 0, 30, 0, 31, 32, 0, 0, 35, 0,
0, 36, 37, 38, 0, 26, 26, 0, 26, 0,
0, 0, 0, 0, 0, 26, 26, 0, 26, 0,
26, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 26, 0,
0, 0, 0, 0, 0, 0, 26, 26, 26, 26,
26, 26, 0, 26, 0, 26, 26, 0, 0, 26,
0, 0, 26, 26, 26, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 15, 16, 0, 17, 0,
0, 0, 0, 0, 0, 19, 20, 0, 21, 0,
22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
0, 0, 0, 0, 0, 0, 24, 25, 26, 27,
28, 29, 0, 30, 0, 31, 32, 0, 0, 57,
0, 0, 36, 37, 38,
};
short yycheck[] = { 37,
0, 37, 59, 91, 42, 43, 42, 45, 41, 47,
59, 47, 110, 7, 289, 113, 10, 11, 116, 117,
35, 123, 120, 91, 207, 123, 59, 44, 41, 79,
335, 44, 41, 59, 41, 59, 44, 37, 124, 44,
40, 41, 42, 43, 44, 45, 59, 47, 42, 59,
59, 356, 59, 192, 40, 330, 0, 332, 58, 59,
263, 88, 0, 63, 40, 257, 40, 259, 185, 261,
262, 263, 50, 51, 41, 267, 93, 44, 40, 108,
330, 41, 132, 333, 111, 93, 41, 40, 0, 44,
41, 40, 190, 93, 41, 0, 336, 41, 196, 59,
44, 65, 66, 47, 59, 40, 44, 101, 59, 47,
293, 124, 59, 40, 58, 59, 131, 124, 123, 63,
41, 59, 100, 123, 124, 37, 93, 330, 313, 41,
42, 43, 44, 45, 326, 47, 41, 41, 59, 44,
44, 105, 47, 0, 286, 41, 58, 59, 44, 93,
0, 63, 130, 58, 59, 41, 185, 41, 44, 40,
44, 346, 347, 41, 345, 192, 44, 284, 337, 124,
41, 263, 41, 44, 41, 44, 40, 227, 228, 123,
40, 93, 0, 177, 41, 123, 40, 44, 93, 93,
47, 41, 59, 220, 44, 281, 335, 47, 284, 256,
288, 58, 59, 320, 263, 232, 263, 257, 58, 59,
41, 123, 124, 63, 263, 346, 347, 356, 123, 37,
47, 288, 40, 41, 42, 43, 44, 45, 59, 47,
263, 258, 349, 330, 323, 41, 93, 263, 44, 263,
58, 59, 257, 93, 259, 63, 261, 262, 263, 263,
263, 91, 267, 263, 263, 284, 263, 124, 285, 237,
358, 261, 262, 263, 44, 315, 123, 267, 281, 41,
59, 284, 44, 123, 281, 93, 263, 284, 242, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, 320, 292, 124, 313, 263, 41, 324, 298, 299,
300, 41, 302, 263, 304, 123, 124, 345, 263, 345,
341, 326, 263, 313, 308, 263, 263, 261, 262, 263,
349, 289, 322, 261, 262, 263, 281, 346, 347, 284,
330, 331, 332, 333, 334, 335, 280, 337, 263, 339,
340, 289, 263, 343, 41, 345, 346, 347, 348, 261,
262, 263, 288, 331, 298, 267, 261, 262, 263, 40,
298, 41, 330, 41, 332, 41, 44, 279, 280, 281,
282, 283, 284, 285, 286, 287, 288, 289, 290, 41,
292, 0, 330, 331, 332, 0, 298, 299, 300, 59,
302, 123, 304, 298, 286, 41, 263, 289, 44, 41,
348, 313, 44, 41, 261, 262, 263, 52, 53, 99,
322, 261, 262, 263, 281, 101, 289, 284, 330, 331,
332, 333, 334, 335, 44, 337, -1, 339, 340, 279,
280, 343, 263, 345, 346, 347, 348, -1, 330, 331,
332, 298, -1, 261, 262, 263, -1, -1, 298, 267,
281, -1, -1, 284, -1, -1, 348, 330, 331, 332,
-1, 279, 280, 281, 282, 283, 284, 285, -1, 287,
288, 289, 290, -1, 292, 348, -1, -1, -1, -1,
298, 299, 300, 247, 302, 249, 304, 337, -1, 41,
-1, -1, 44, -1, 0, 313, -1, -1, -1, -1,
-1, 146, 147, -1, 322, -1, 58, 59, 153, 154,
-1, 63, 330, 331, 332, 333, 334, 335, -1, 337,
-1, 339, 340, -1, 125, 343, 127, 345, 346, 347,
348, 37, 133, 134, 40, 41, 42, 43, 44, 45,
-1, 47, -1, -1, -1, -1, -1, -1, 41, -1,
-1, 44, 58, 59, -1, -1, -1, 63, 322, -1,
-1, -1, -1, -1, 209, 58, 59, -1, 41, 214,
215, 44, 124, -1, -1, 41, 208, 178, 44, -1,
-1, 226, 0, -1, 348, 58, 59, 93, -1, -1,
-1, -1, 58, 59, -1, -1, 360, 63, -1, -1,
-1, -1, 203, 208, 205, 206, -1, -1, -1, -1,
-1, 256, -1, -1, -1, -1, -1, 123, 124, 37,
-1, -1, 40, 41, 42, 43, 44, 45, -1, 47,
-1, 124, -1, -1, 279, 280, -1, -1, -1, -1,
58, 59, -1, -1, 0, 63, -1, -1, -1, -1,
251, 124, -1, -1, -1, -1, -1, -1, 124, -1,
305, 306, 294, -1, -1, 297, 298, 299, 300, -1,
-1, -1, 304, -1, -1, 93, 0, -1, -1, -1,
325, 282, -1, -1, -1, 41, -1, -1, 44, 294,
-1, 47, 297, 298, 299, 300, -1, -1, -1, 304,
-1, -1, 58, 59, -1, 123, 124, 63, -1, 341,
-1, 263, -1, 37, -1, -1, 40, 41, 42, 43,
44, 45, -1, 47, -1, -1, -1, 279, 280, 281,
-1, -1, 284, -1, 58, 59, 341, 93, -1, 63,
-1, -1, -1, 344, -1, -1, -1, -1, -1, 350,
-1, -1, -1, -1, -1, 261, 262, 263, 359, -1,
-1, 267, -1, 364, -1, -1, -1, 123, -1, 93,
263, -1, -1, 279, 280, 281, 282, 283, 284, 285,
286, 287, 288, 289, 290, 337, 292, -1, 281, -1,
263, 284, 298, 299, 300, -1, 302, 263, 304, 123,
124, -1, -1, -1, -1, -1, -1, 313, 281, -1,
-1, 284, -1, 279, 280, 281, 322, -1, 284, -1,
-1, -1, -1, -1, 330, 331, 332, 333, 334, 335,
-1, 337, -1, 339, 340, 41, -1, 343, 44, -1,
346, 347, 348, 261, 262, 263, -1, -1, -1, 267,
-1, -1, 58, 59, -1, -1, -1, 63, -1, -1,
-1, 279, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, -1, 292, -1, -1, -1, -1, -1,
298, 299, 300, -1, 302, -1, 304, -1, -1, -1,
-1, -1, -1, -1, -1, 313, -1, -1, -1, -1,
-1, -1, -1, -1, 322, 261, 262, 263, -1, -1,
-1, -1, 330, 331, 332, 333, 334, 335, 124, 337,
-1, 339, 340, 279, 280, 343, -1, -1, 346, 347,
348, -1, -1, -1, -1, -1, -1, 261, 262, 263,
-1, -1, 298, 267, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 279, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, 290, -1, 292, -1,
-1, -1, -1, -1, 298, 299, 300, -1, 302, -1,
304, 337, -1, -1, -1, -1, -1, -1, 0, 313,
-1, -1, -1, -1, -1, -1, -1, -1, 322, -1,
-1, -1, -1, -1, -1, -1, 330, 331, 332, 333,
334, 335, -1, 337, -1, 339, 340, -1, -1, 343,
-1, -1, 346, 347, 348, 37, -1, -1, 40, 41,
42, 43, 44, 45, -1, 47, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 58, 59, -1, -1,
-1, 63, -1, -1, -1, -1, -1, 263, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 280, 281, 0, -1, 284, -1,
-1, 93, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 123, 124, 37, -1, -1, 40, 41, 42, 43,
44, 45, -1, 47, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 58, 59, -1, -1, 0, 63,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 93,
0, -1, -1, -1, -1, -1, -1, -1, -1, 41,
-1, -1, 44, -1, -1, 47, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 58, 59, -1, 123,
124, 63, -1, -1, -1, -1, -1, 37, -1, -1,
40, 41, 42, 43, 44, 45, -1, 47, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 58, 59,
-1, 93, -1, 63, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 261,
262, 263, -1, -1, -1, 267, -1, -1, -1, -1,
-1, 123, -1, 93, -1, -1, -1, 279, 280, 281,
282, 283, 284, 285, 286, 287, 288, 289, 290, -1,
292, -1, -1, -1, -1, -1, 298, 299, 300, -1,
302, -1, 304, 123, 124, -1, -1, -1, -1, -1,
-1, 313, -1, -1, -1, -1, -1, -1, -1, -1,
322, -1, -1, -1, -1, -1, -1, -1, 330, 331,
332, 333, 334, 335, -1, 337, -1, 339, 340, -1,
-1, 343, -1, -1, 346, 347, 348, 261, 262, 263,
-1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 279, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, 290, -1, 292, -1,
-1, -1, -1, -1, 298, 299, 300, -1, 302, -1,
304, -1, -1, -1, -1, -1, -1, -1, -1, 313,
-1, -1, 40, -1, -1, 43, -1, 45, 322, 261,
262, 263, -1, -1, -1, -1, 330, 331, 332, 333,
334, 335, -1, 337, -1, 339, 340, 279, 280, 343,
-1, -1, 346, 347, 348, -1, -1, -1, -1, -1,
-1, 261, 262, 263, -1, -1, 298, 267, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, -1, 292, -1, -1, -1, -1, -1, 298, 299,
300, -1, 302, -1, 304, 337, 124, -1, -1, -1,
-1, -1, 0, 313, -1, -1, -1, -1, -1, -1,
-1, -1, 322, -1, -1, -1, -1, -1, -1, -1,
330, 331, 332, 333, 334, 335, -1, 337, -1, 339,
340, -1, -1, 343, -1, -1, 346, 347, 348, 37,
-1, -1, 40, 41, 42, 43, 44, 45, -1, 47,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, -1, -1, -1, -1, 93, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 123, 124, 37, -1, -1,
40, 41, 42, 43, 44, 45, -1, 47, -1, 267,
-1, -1, -1, -1, -1, -1, -1, -1, 58, 59,
-1, 279, -1, 63, 282, 283, 284, 285, 286, 287,
288, 289, 290, -1, 292, -1, -1, -1, -1, -1,
-1, 299, 300, -1, 302, -1, 304, -1, -1, -1,
-1, -1, -1, 93, 0, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
-1, -1, 330, 331, 332, 333, 334, 335, -1, 337,
-1, 339, 340, 123, 124, 343, -1, -1, 346, 347,
348, 37, -1, -1, 40, 41, 42, 43, 44, 45,
-1, 47, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 58, 59, -1, -1, -1, 63, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 261, 262, 263, -1, -1, -1, 267,
-1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
-1, 279, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, -1, 292, -1, -1, -1, -1, -1,
298, 299, 300, -1, 302, -1, 304, 123, 124, -1,
-1, -1, -1, -1, -1, 313, -1, -1, -1, -1,
-1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
-1, -1, 330, 331, 332, 333, 334, 335, -1, 337,
-1, 339, 340, -1, -1, 343, -1, -1, 346, 347,
348, 261, 262, 263, -1, 0, -1, 267, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, -1, 292, -1, -1, -1, -1, -1, 298, 299,
300, -1, 302, -1, 304, 40, 41, -1, 43, 44,
45, -1, -1, 313, -1, -1, -1, -1, -1, -1,
-1, -1, 322, 58, 59, -1, -1, -1, 63, -1,
330, 331, 332, 333, 334, 335, -1, 337, -1, 339,
340, -1, -1, 343, -1, 345, -1, -1, 348, -1,
-1, -1, -1, -1, -1, 261, 262, 263, 93, 0,
-1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 279, 280, -1, 282, 283, 284, 285,
286, 287, 288, 289, 290, -1, 292, -1, 123, 124,
-1, -1, 298, 299, 300, -1, 302, -1, 304, 40,
41, -1, 43, 44, 45, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 322, 58, 59, -1,
-1, -1, 63, -1, 330, 331, 332, 333, 334, 335,
-1, 337, -1, 339, 340, -1, -1, 343, -1, 345,
-1, -1, 348, -1, -1, -1, -1, 0, -1, -1,
-1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 123, 124, -1, -1, -1, 40, 41, -1,
-1, 44, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 58, 59, -1, -1, -1,
63, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 261, 262, 263, -1,
-1, -1, 267, -1, -1, -1, -1, -1, -1, -1,
93, -1, -1, -1, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, -1, 292, -1, -1,
-1, -1, -1, 298, 299, 300, -1, 302, -1, 304,
123, 124, -1, -1, -1, -1, -1, -1, 313, -1,
-1, -1, -1, -1, -1, -1, -1, 322, -1, -1,
-1, -1, -1, -1, -1, 330, 331, 332, 333, 334,
335, -1, 337, -1, 339, 340, -1, -1, 343, -1,
-1, 346, 347, 348, -1, -1, -1, -1, -1, -1,
261, 262, 263, -1, -1, -1, 267, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 279, 280,
281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
-1, 292, -1, -1, -1, -1, -1, 298, 299, 300,
-1, 302, -1, 304, -1, -1, -1, -1, -1, -1,
-1, -1, 313, -1, -1, -1, -1, 40, -1, -1,
43, 322, 45, -1, -1, -1, -1, -1, -1, 330,
331, 332, 333, 334, 335, -1, 337, -1, 339, 340,
-1, -1, 343, -1, -1, 346, 347, 348, 261, 262,
263, -1, 0, -1, 267, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 279, 280, 281, 282,
283, 284, 285, 286, 287, 288, 289, 290, -1, 292,
-1, -1, -1, -1, -1, 298, 299, 300, -1, 302,
-1, 304, 40, 41, -1, -1, 44, -1, -1, -1,
313, -1, -1, -1, -1, -1, -1, -1, -1, 322,
58, 59, -1, -1, 0, 63, -1, 330, 331, 332,
333, 334, 335, -1, 337, -1, 339, 340, -1, -1,
343, -1, -1, 346, 347, 348, -1, -1, -1, -1,
0, -1, -1, -1, -1, 93, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 41, -1, -1, 44, -1,
-1, 47, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 58, 59, -1, 123, 124, 63, -1, -1,
40, 41, -1, -1, 44, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 58, 59,
-1, -1, -1, 63, -1, -1, -1, 93, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 93, 0, -1, -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, -1, 123, 124, -1, 289, 290, -1, 292,
-1, -1, -1, -1, 40, 41, 299, 300, 44, 302,
-1, 304, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 58, 59, -1, -1, -1, 63, -1, 322,
-1, -1, -1, -1, -1, -1, -1, 330, 331, 332,
333, 334, 335, 261, 262, 263, 339, 340, -1, 267,
343, -1, -1, 346, 347, 348, -1, 93, -1, -1,
-1, 279, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, -1, 292, -1, -1, -1, -1, -1,
298, 299, 300, -1, 302, -1, 304, 123, 124, -1,
-1, -1, -1, -1, -1, 313, -1, -1, -1, -1,
-1, -1, -1, -1, 322, 261, 262, 263, -1, -1,
-1, -1, 330, 331, 332, 333, 334, 335, -1, 337,
-1, 339, 340, 279, 280, 343, -1, -1, 346, 347,
348, 261, 262, 263, -1, 0, -1, 267, -1, -1,
-1, -1, 298, -1, -1, -1, -1, -1, -1, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, -1, 292, -1, -1, -1, -1, -1, 298, 299,
300, -1, 302, -1, 304, 40, 41, -1, -1, 44,
-1, 337, -1, 313, -1, -1, -1, -1, -1, -1,
-1, -1, 322, 58, 59, -1, -1, -1, 63, -1,
330, 331, 332, 333, 334, 335, -1, 337, -1, 339,
340, -1, -1, 343, -1, -1, 346, 347, 348, -1,
-1, -1, -1, -1, -1, 261, 262, 263, 93, 0,
-1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 279, 280, 281, 282, 283, 284, 285,
286, 287, 288, 289, 290, -1, 292, -1, 123, 124,
-1, -1, 298, 299, 300, -1, 302, -1, 304, 40,
41, -1, -1, 44, -1, -1, -1, 313, -1, -1,
-1, 0, -1, -1, -1, -1, 322, 58, 59, -1,
-1, -1, 63, -1, 330, 331, 332, 333, 334, 335,
-1, 337, -1, 339, 340, -1, -1, 343, -1, -1,
346, 347, 348, -1, -1, -1, -1, -1, -1, -1,
-1, 40, 93, -1, 43, -1, 45, -1, 47, -1,
-1, -1, -1, 0, -1, -1, -1, -1, -1, -1,
59, -1, -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, -1,
-1, -1, -1, 40, -1, -1, 43, -1, 45, -1,
47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 59, -1, -1, -1, 261, 262, 263, -1,
0, -1, 267, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 279, 280, -1, 282, 283, 284,
285, 286, 287, 288, 289, 290, -1, 292, -1, -1,
-1, -1, -1, 298, 299, 300, -1, 302, -1, 304,
40, -1, -1, 43, -1, 45, -1, 47, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 322, -1, -1,
-1, -1, -1, -1, -1, 330, 331, 332, 333, 334,
335, -1, 337, -1, 339, 340, -1, -1, 343, -1,
-1, 346, 347, 348, -1, -1, -1, -1, -1, -1,
261, 262, 263, -1, 0, -1, 267, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 279, 280,
-1, 282, 283, 284, 285, 286, 287, 288, 289, 290,
-1, 292, -1, 123, -1, -1, -1, 298, 299, 300,
-1, 302, -1, 304, 40, -1, -1, 43, -1, 45,
-1, 47, 261, 262, 263, -1, -1, -1, -1, -1,
-1, 322, -1, -1, -1, -1, -1, -1, -1, 330,
331, 332, 333, 334, 335, -1, 337, -1, 339, 340,
289, 290, 343, 292, -1, 346, 347, 348, -1, 298,
299, 300, -1, 302, -1, 304, -1, -1, -1, -1,
-1, -1, -1, -1, 261, 262, 263, -1, -1, -1,
-1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
-1, 330, 331, 332, 333, 334, 335, 123, 337, -1,
339, 340, 289, 290, 343, 292, -1, 346, 347, 348,
-1, 298, 299, 300, -1, 302, -1, 304, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
-1, 261, 262, 330, 331, 332, 333, 334, 335, -1,
337, -1, 339, 340, -1, -1, 343, -1, -1, 346,
347, 348, -1, -1, -1, -1, -1, -1, -1, 289,
290, -1, 292, -1, -1, -1, -1, -1, 298, 299,
300, -1, 302, -1, 304, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 322, -1, -1, -1, -1, -1, -1, -1,
330, 331, 332, 333, 334, 335, -1, 337, -1, 339,
340, -1, -1, 343, -1, -1, 346, 347, 348, -1,
-1, -1, -1, -1, -1, 261, 262, -1, -1, -1,
0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 289, 290, -1, 292, -1, -1, -1,
-1, -1, 298, 299, 300, -1, 302, 37, 304, -1,
40, 41, 42, 43, 44, 45, -1, 47, -1, -1,
-1, -1, -1, -1, -1, -1, 322, -1, 58, 59,
-1, -1, 0, 63, 330, 331, 332, 333, 334, 335,
-1, 337, -1, 339, 340, -1, -1, 343, -1, -1,
346, 347, 348, -1, -1, -1, -1, 0, -1, -1,
-1, -1, -1, 93, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 41, -1, -1, 44, -1, -1, 47,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
58, 59, -1, 123, 124, 63, -1, 40, 41, -1,
43, 44, 45, -1, 47, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 58, 59, -1, -1, 0,
63, -1, -1, -1, -1, 93, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 0, -1,
93, -1, -1, -1, -1, 123, -1, -1, -1, -1,
41, -1, -1, 44, -1, -1, 47, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 58, 59, -1,
123, 124, 63, -1, -1, -1, -1, -1, -1, 41,
-1, -1, 44, -1, -1, 47, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 40, 58, 59, 43, -1,
45, 63, 93, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 58, -1, -1, -1, -1, 63, -1,
-1, 261, 262, 263, -1, -1, -1, 267, -1, -1,
-1, 93, 123, -1, -1, -1, -1, -1, -1, 279,
280, 281, 282, 283, 284, 285, -1, 287, 288, -1,
290, -1, 292, -1, -1, -1, -1, -1, 298, 299,
300, 123, 302, -1, 304, -1, -1, -1, -1, -1,
-1, -1, -1, 313, -1, -1, -1, -1, -1, -1,
-1, -1, 322, 261, 262, 263, -1, -1, -1, -1,
-1, -1, -1, 333, 334, 335, -1, 337, -1, 339,
340, 279, 280, 343, -1, 345, 346, 347, 261, 262,
263, -1, -1, -1, 267, -1, -1, -1, -1, -1,
298, -1, -1, -1, -1, -1, 279, 280, -1, 282,
283, 284, 285, 286, 287, 288, -1, 290, -1, 292,
-1, -1, -1, -1, -1, 298, 299, 300, -1, 302,
-1, 304, -1, -1, -1, -1, -1, -1, -1, 337,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
261, 262, 263, -1, -1, -1, -1, -1, -1, -1,
333, 334, 335, -1, 337, -1, 339, 340, 279, 280,
343, -1, 17, 346, 347, -1, -1, -1, -1, 261,
262, 263, -1, -1, -1, 30, -1, 298, 33, 34,
35, 36, 37, 38, 39, -1, -1, 279, 280, -1,
-1, -1, 267, -1, -1, -1, -1, 52, -1, -1,
-1, -1, 57, -1, 279, 280, 298, -1, -1, -1,
-1, -1, 67, 288, 289, 290, 337, 292, -1, -1,
-1, -1, -1, -1, 299, 300, -1, 302, -1, 304,
-1, -1, -1, -1, -1, -1, -1, -1, 93, 94,
95, 96, 97, 98, -1, 337, -1, 322, -1, -1,
-1, -1, -1, -1, -1, 330, 331, 332, 333, 334,
335, -1, 337, -1, 339, 340, -1, 122, 343, -1,
-1, 346, 347, 348, -1, -1, 131, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 142, -1, 144,
-1, 146, 147, -1, -1, -1, -1, 152, 153, 154,
155, 156, -1, 158, 159, 160, 161, 162, 163, -1,
165, -1, 167, -1, 169, 170, -1, -1, -1, -1,
-1, -1, -1, -1, 0, 180, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 190, -1, -1, -1, -1,
-1, 196, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 208, -1, -1, -1, -1, -1, 214,
-1, -1, -1, -1, 219, 41, 221, -1, 44, -1,
-1, 47, -1, -1, -1, -1, -1, -1, -1, 17,
-1, -1, 58, 59, -1, -1, -1, 63, -1, -1,
-1, -1, 247, -1, 249, 33, 34, 35, -1, -1,
38, 39, 257, -1, 259, -1, 261, 262, 263, 264,
265, 266, 267, -1, 52, -1, 271, 93, -1, 57,
275, -1, 277, -1, -1, 280, 281, -1, -1, 67,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 294,
-1, -1, 297, 298, 299, 300, -1, 123, -1, 304,
305, 306, -1, -1, -1, 93, 94, 95, 96, 97,
98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 326, -1, 328, -1, 330, -1, 332, -1, 334,
-1, 336, -1, -1, 122, -1, 341, -1, -1, -1,
-1, -1, -1, 131, -1, -1, 351, -1, -1, -1,
-1, -1, -1, -1, 142, -1, 144, -1, 146, 147,
-1, -1, -1, -1, 152, 153, 154, -1, 156, -1,
158, 159, 160, 161, 162, 163, -1, 165, -1, 167,
-1, 169, 170, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 180, -1, -1, -1, -1, -1, -1, -1,
-1, 37, 190, -1, 40, -1, 42, 43, 196, 45,
-1, 47, -1, -1, -1, -1, -1, -1, -1, -1,
208, -1, -1, 59, -1, -1, 214, 63, -1, -1,
-1, 219, -1, 221, -1, 261, 262, 263, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 279, 280, -1, -1, -1, -1, 247,
-1, 249, -1, -1, -1, -1, -1, -1, -1, 257,
-1, 259, 298, 261, 262, 263, 264, 265, 266, 267,
-1, -1, -1, 271, -1, -1, -1, 275, 124, 277,
-1, -1, 280, 281, -1, -1, -1, -1, -1, -1,
-1, -1, 7, -1, -1, -1, 294, -1, 13, 297,
298, 299, 300, -1, -1, -1, 304, 305, 306, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 326, -1,
-1, -1, -1, -1, 332, -1, 334, -1, 336, -1,
55, 56, -1, 341, -1, -1, -1, -1, 63, 64,
65, 66, -1, 351, 69, 70, -1, -1, -1, -1,
-1, -1, -1, -1, 79, -1, -1, 82, 83, 84,
85, 86, 87, -1, 89, 37, 91, 92, 40, 41,
42, 43, 44, 45, 99, 47, 101, 102, -1, -1,
105, -1, -1, -1, -1, -1, 58, 59, 113, -1,
-1, 63, -1, -1, -1, 120, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 132, -1, -1,
-1, 267, 137, -1, 139, -1, -1, -1, -1, -1,
-1, -1, -1, 279, 280, -1, 282, 283, 284, 285,
286, 287, -1, 289, 290, -1, 292, -1, -1, -1,
-1, -1, -1, 299, 300, -1, 302, -1, 304, -1,
-1, -1, 124, 40, 41, -1, 43, 313, 45, -1,
47, -1, -1, -1, -1, -1, 322, -1, 193, -1,
-1, -1, 59, 198, 330, 331, 332, 333, 334, 335,
-1, 337, 207, 339, 340, -1, -1, 343, -1, 345,
346, 347, 348, -1, -1, -1, -1, -1, -1, 224,
-1, -1, 227, 228, -1, -1, -1, -1, 233, -1,
235, -1, -1, -1, -1, 40, -1, 242, 43, -1,
45, -1, 47, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 59, -1, 123, -1, 125, -1,
-1, -1, -1, 268, 269, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 293, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
315, 263, 317, -1, -1, 267, 321, -1, 123, -1,
125, -1, -1, -1, -1, -1, -1, 279, 280, 281,
-1, -1, 284, 338, -1, -1, 288, 289, 290, -1,
292, -1, -1, -1, -1, -1, -1, 299, 300, -1,
302, -1, 304, -1, -1, -1, -1, 40, -1, -1,
43, -1, 45, -1, 47, -1, -1, -1, -1, -1,
322, -1, -1, -1, -1, -1, 59, -1, 330, 331,
332, 333, 334, 335, -1, 337, -1, 339, 340, 256,
-1, 343, -1, 345, -1, -1, 348, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
297, -1, 299, 300, 301, 302, -1, 304, 305, 306,
123, -1, 125, -1, -1, -1, -1, -1, -1, -1,
-1, 256, -1, 320, 321, 322, 323, -1, -1, -1,
-1, -1, -1, 330, 331, 332, 333, 334, 335, -1,
337, 338, 339, 340, 341, -1, 343, -1, -1, 346,
347, 348, -1, -1, 289, 290, 291, 292, 293, 294,
295, 296, 297, -1, 299, 300, 301, 302, -1, 304,
305, 306, 40, -1, -1, 43, -1, 45, -1, 47,
-1, -1, -1, -1, -1, 320, 321, 322, 323, -1,
-1, 59, -1, -1, -1, 330, 331, 332, 333, 334,
335, -1, 337, 338, 339, 340, 341, -1, 343, -1,
-1, 346, 347, 348, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 40, -1, -1, 43, -1, 45, -1,
47, -1, -1, 256, -1, -1, -1, -1, -1, -1,
-1, -1, 59, -1, -1, 123, -1, 125, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 289, 290, 291, 292,
293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
-1, 304, 305, 306, 40, -1, -1, 43, -1, 45,
-1, 47, -1, -1, -1, -1, -1, 320, 321, 322,
323, -1, -1, 59, -1, -1, 123, 330, 331, 332,
333, 334, 335, -1, 337, 338, 339, 340, 341, -1,
343, -1, -1, 346, 347, 348, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 40, -1, -1, 43,
-1, 45, -1, 47, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 59, -1, 123, -1, 125,
-1, -1, -1, -1, -1, -1, -1, -1, 256, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 289, 290, 291, 292, 293, 294, 295, 296, 297,
-1, 299, 300, 301, 302, -1, 304, 305, 306, 123,
-1, 125, -1, -1, -1, -1, -1, -1, -1, 256,
-1, -1, 320, 321, 322, 323, 263, -1, -1, -1,
-1, -1, 330, 331, 332, 333, 334, 335, -1, 337,
338, 339, 340, 341, -1, 343, -1, -1, 346, 347,
348, -1, 289, 290, 291, 292, 293, 294, 295, 296,
297, -1, 299, 300, 301, 302, -1, 304, 305, 306,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
256, -1, -1, 320, 321, 322, -1, -1, -1, -1,
-1, -1, -1, 330, 331, 332, 333, 334, 335, -1,
337, 338, 339, 340, 341, -1, 343, -1, -1, 346,
347, 348, -1, 289, 290, 291, 292, 293, 294, 295,
296, 297, -1, 299, 300, 301, 302, -1, 304, 305,
306, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 256, -1, 320, 321, 322, -1, -1, -1,
-1, -1, -1, -1, 330, 331, 332, 333, 334, 335,
-1, 337, 338, 339, 340, 341, -1, 343, -1, -1,
346, 347, 348, -1, -1, 289, 290, 291, 292, 293,
294, 295, 296, 297, -1, 299, 300, 301, 302, -1,
304, 305, 306, 40, -1, -1, 43, -1, 45, -1,
47, -1, -1, -1, -1, -1, 320, 321, 322, -1,
-1, -1, 59, -1, -1, -1, 330, 331, 332, 333,
334, 335, -1, 337, 338, 339, 340, 341, -1, 343,
-1, -1, 346, 347, 348, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 40, -1, -1, 43, -1, 45, -1,
47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 59, -1, -1, -1, 123, -1, 125, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 40, -1, -1, 43, -1, 45, -1,
47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 59, -1, -1, -1, 123, -1, 125, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 40, -1, -1, 43, -1, 45, -1,
47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 59, -1, -1, -1, 123, -1, 125, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 256,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
297, -1, 299, 300, 301, 302, 123, 304, 305, 306,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 256,
-1, -1, -1, 320, 321, 322, -1, -1, -1, -1,
-1, -1, -1, 330, 331, 332, 333, 334, 335, -1,
337, 338, 339, 340, 341, -1, 343, -1, -1, 346,
347, 348, 289, 290, 291, 292, 293, 294, 295, 296,
297, -1, 299, 300, 301, 302, -1, 304, 305, 306,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 256,
-1, -1, -1, 320, 321, 322, -1, -1, -1, -1,
-1, -1, -1, 330, 331, 332, 333, 334, 335, -1,
337, 338, 339, 340, 341, -1, 343, -1, -1, 346,
347, 348, 289, 290, 291, 292, 293, 294, 295, 296,
297, -1, 299, 300, 301, 302, -1, 304, 305, 306,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 256,
-1, -1, -1, 320, 321, 322, 263, -1, -1, -1,
-1, -1, -1, 330, 331, 332, 333, 334, 335, -1,
337, 338, 339, 340, 341, -1, 343, -1, -1, 346,
347, 348, 289, 290, 291, 292, 293, 294, 295, 296,
297, -1, 299, 300, 301, 302, -1, 304, 305, 306,
40, -1, -1, 43, -1, 45, -1, 47, -1, -1,
-1, -1, -1, 320, 321, 322, -1, -1, -1, 59,
-1, -1, -1, 330, 331, 332, 333, 334, 335, -1,
337, 338, 339, 340, 341, -1, 343, -1, -1, 346,
347, 348, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
40, -1, -1, 43, -1, 45, -1, 47, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
-1, -1, -1, 123, -1, 125, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
40, -1, -1, 43, -1, 45, -1, 47, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
-1, -1, -1, 123, -1, 125, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
40, -1, -1, 43, -1, 45, -1, 47, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
-1, -1, -1, 123, -1, 125, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 256, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 40, 41, -1, 43, -1, 45, -1, 47, 289,
290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
300, 301, 302, 123, 304, 305, 306, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 256, -1, -1, -1,
320, 321, 322, -1, -1, -1, -1, -1, -1, -1,
330, 331, 332, 333, 334, 335, -1, 337, 338, 339,
340, 341, -1, 343, -1, -1, 346, 347, 348, 289,
290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
300, 301, 302, -1, 304, 305, 306, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 256, -1, -1, -1,
320, 321, 322, -1, -1, -1, -1, -1, -1, -1,
330, 331, 332, 333, 334, 335, -1, 337, 338, 339,
340, 341, -1, 343, -1, -1, 346, 347, 348, 289,
290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
300, 301, 302, -1, 304, 305, 306, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 256, -1, -1, -1,
320, 321, 322, -1, -1, -1, -1, -1, -1, -1,
330, 331, 332, 333, 334, 335, -1, 337, 338, 339,
340, 341, -1, 343, -1, -1, 346, 347, 348, 289,
290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
300, 301, 302, -1, 304, 305, 306, 40, -1, -1,
43, -1, 45, -1, 47, -1, -1, 256, -1, -1,
320, 321, 322, -1, -1, -1, 59, -1, -1, -1,
330, 331, 332, 333, 334, 335, -1, 337, 338, 339,
340, 341, -1, 343, -1, -1, 346, 347, 348, -1,
289, 290, -1, 292, -1, 294, -1, -1, -1, -1,
299, 300, -1, 302, -1, 304, -1, 40, -1, -1,
43, -1, 45, -1, 47, -1, -1, -1, -1, -1,
-1, 320, 321, 322, -1, -1, 59, -1, -1, -1,
123, 330, 331, 332, 333, 334, 335, -1, 337, -1,
339, 340, -1, -1, 343, -1, -1, 346, 347, 348,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
43, -1, 45, -1, 47, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 59, -1, -1, -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, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
43, -1, 45, -1, 47, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 59, -1, -1, -1,
123, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 256, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 40, -1,
-1, 43, -1, 45, -1, 47, 289, 290, 291, 292,
293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
123, 304, 305, 306, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 256, -1, -1, -1, 320, 321, 322,
-1, -1, -1, -1, -1, -1, -1, 330, 331, 332,
333, 334, 335, -1, 337, 338, 339, 340, 341, -1,
343, -1, -1, 346, 347, 348, 289, 290, 291, 292,
293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
-1, 304, 305, 306, -1, -1, 40, -1, -1, 43,
-1, 45, -1, 256, -1, -1, -1, 320, 321, 322,
-1, -1, -1, -1, -1, -1, -1, 330, 331, 332,
333, 334, 335, -1, 337, 338, 339, 340, 341, -1,
343, -1, -1, 346, 347, 348, 289, 290, 291, 292,
293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
-1, 304, 305, 306, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 256, -1, -1, -1, 320, 321, 322,
-1, -1, -1, -1, -1, -1, -1, 330, 331, 332,
333, 334, 335, -1, 337, 338, 339, 340, 341, -1,
343, -1, -1, 346, 347, 348, 289, 290, 291, 292,
293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
-1, 304, 305, 306, 40, -1, -1, 43, -1, 45,
-1, 47, -1, -1, 256, -1, -1, 320, 321, 322,
-1, -1, -1, 59, -1, -1, -1, 330, 331, 332,
333, 334, 335, -1, 337, 338, 339, 340, 341, -1,
343, -1, -1, 346, 347, 348, -1, 289, 290, -1,
292, -1, 294, -1, -1, -1, -1, 299, 300, -1,
302, -1, 304, -1, 40, -1, -1, 43, -1, 45,
-1, 47, -1, -1, -1, -1, -1, -1, 320, 321,
322, -1, -1, 59, -1, -1, -1, 123, 330, 331,
332, 333, 334, 335, -1, 337, -1, 339, 340, -1,
-1, 343, -1, -1, 346, 347, 348, -1, -1, -1,
-1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
-1, -1, -1, -1, 288, 289, 290, -1, 292, 40,
41, -1, 43, 44, 45, 299, 300, 123, 302, -1,
304, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 63, -1, -1, -1, -1, -1, 322, -1,
-1, -1, -1, -1, -1, -1, 330, 331, 332, 333,
334, 335, -1, 337, -1, 339, 340, -1, -1, 343,
-1, -1, 346, 347, 348, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
256, -1, -1, 124, -1, 40, -1, -1, 43, -1,
45, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 59, -1, -1, -1, 63, -1,
-1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
296, 297, -1, 299, 300, 301, 302, -1, 304, 305,
306, -1, -1, -1, -1, -1, -1, -1, -1, -1,
256, -1, -1, -1, 320, 321, 322, -1, -1, -1,
-1, -1, -1, -1, 330, 331, 332, 333, 334, 335,
-1, 337, 338, 339, 340, 341, -1, 343, -1, 124,
346, 347, 348, 289, 290, 291, 292, 293, 294, 295,
296, 297, -1, 299, 300, 301, 302, -1, 304, 305,
306, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 320, 321, 322, -1, -1, -1,
-1, -1, -1, -1, 330, 331, 332, 333, 334, 335,
-1, 337, 338, 339, 340, 341, 267, 343, -1, -1,
346, 347, 348, -1, -1, -1, -1, -1, 279, 280,
-1, 282, 283, 284, 285, 286, 287, 288, 289, 290,
-1, 292, 40, 41, -1, 43, 44, 45, 299, 300,
-1, 302, -1, 304, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 63, -1, -1, -1, -1,
-1, 322, -1, -1, -1, -1, -1, -1, -1, 330,
331, 332, 333, 334, 335, -1, 337, -1, 339, 340,
-1, -1, 343, -1, -1, 346, 347, 348, 263, -1,
-1, -1, 267, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 279, 280, -1, 282, 283, 284,
285, 286, 287, 288, 289, 290, 124, 292, 40, 41,
-1, 43, 44, 45, 299, 300, -1, 302, -1, 304,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 63, -1, -1, -1, -1, -1, 322, -1, -1,
-1, -1, -1, -1, -1, 330, 331, 332, 333, 334,
335, -1, 337, -1, 339, 340, -1, -1, 343, -1,
-1, 346, 347, 348, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 40,
41, -1, 43, 44, 45, -1, -1, -1, -1, -1,
-1, -1, 124, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 63, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 267,
40, 41, -1, 43, -1, 45, -1, -1, -1, -1,
-1, 279, 280, 124, 282, 283, 284, 285, 286, 287,
288, 289, 290, 63, 292, -1, -1, -1, -1, -1,
-1, 299, 300, -1, 302, -1, 304, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
-1, -1, 330, 331, 332, 333, 334, 335, -1, 337,
-1, 339, 340, -1, -1, 343, -1, -1, 346, 347,
348, -1, -1, -1, 124, 267, 40, -1, -1, 43,
44, 45, -1, -1, -1, -1, -1, 279, 280, -1,
282, 283, 284, 285, 286, 287, 288, 289, 290, 63,
292, -1, -1, -1, -1, -1, -1, 299, 300, -1,
302, -1, 304, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
322, -1, -1, -1, -1, -1, -1, -1, 330, 331,
332, 333, 334, 335, -1, 337, 267, 339, 340, -1,
-1, 343, -1, -1, 346, 347, 348, -1, 279, 280,
124, 282, 283, 284, 285, 286, 287, 288, 289, 290,
-1, 292, 40, -1, -1, 43, -1, 45, 299, 300,
-1, 302, -1, 304, -1, -1, -1, -1, -1, -1,
58, -1, -1, -1, -1, 63, -1, -1, -1, -1,
-1, 322, -1, -1, -1, -1, -1, -1, -1, 330,
331, 332, 333, 334, 335, -1, 337, 267, 339, 340,
-1, -1, 343, -1, -1, 346, 347, 348, -1, 279,
280, -1, 282, 283, 284, 285, 286, 287, 288, 289,
290, -1, 292, 40, 41, -1, 43, -1, 45, 299,
300, -1, 302, -1, 304, -1, 124, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 63, -1, -1, -1,
-1, -1, 322, -1, -1, -1, -1, -1, -1, -1,
330, 331, 332, 333, 334, 335, -1, 337, -1, 339,
340, -1, -1, 343, -1, -1, 346, 347, 348, -1,
-1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 279, 280, -1, 282, 283,
284, 285, 286, 287, 288, 289, 290, 124, 292, 40,
41, -1, 43, -1, 45, 299, 300, -1, 302, -1,
304, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 63, -1, -1, -1, -1, -1, 322, -1,
-1, -1, -1, -1, -1, -1, 330, 331, 332, 333,
334, 335, -1, 337, -1, 339, 340, -1, -1, 343,
-1, -1, 346, 347, 348, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 267,
40, 41, -1, 43, -1, 45, -1, -1, -1, -1,
-1, 279, 280, 124, 282, 283, 284, 285, 286, 287,
288, 289, 290, 63, 292, -1, -1, -1, -1, -1,
-1, 299, 300, -1, 302, -1, 304, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
-1, -1, 330, 331, 332, 333, 334, 335, -1, 337,
267, 339, 340, -1, -1, 343, -1, -1, 346, 347,
348, -1, 279, 280, 124, 282, 283, 284, 285, 286,
287, 288, 289, 290, -1, 292, 40, 41, -1, 43,
-1, 45, 299, 300, -1, 302, -1, 304, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 63,
-1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
-1, -1, -1, 330, 331, 332, 333, 334, 335, -1,
337, -1, 339, 340, -1, -1, 343, -1, -1, 346,
347, 348, -1, -1, -1, -1, 267, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 279, 280,
-1, 282, 283, 284, 285, 286, 287, 288, 289, 290,
124, 292, 40, 41, -1, 43, -1, 45, 299, 300,
-1, 302, -1, 304, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 63, -1, -1, -1, -1,
-1, 322, -1, -1, -1, -1, -1, -1, -1, 330,
331, 332, 333, 334, 335, -1, 337, 267, 339, 340,
-1, -1, 343, -1, -1, 346, 347, 348, -1, 279,
280, -1, 282, 283, 284, 285, 286, 287, 288, 289,
290, -1, 292, 40, -1, -1, 43, -1, 45, 299,
300, -1, 302, -1, 304, -1, 124, -1, -1, -1,
-1, -1, 59, -1, -1, -1, 63, -1, -1, -1,
-1, -1, 322, -1, -1, -1, -1, -1, -1, -1,
330, 331, 332, 333, 334, 335, -1, 337, -1, 339,
340, -1, -1, 343, -1, -1, 346, 347, 348, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 267, 40, 41, -1, 43, -1, 45,
-1, -1, -1, -1, -1, 279, 280, 124, 282, 283,
284, 285, 286, 287, 288, 289, 290, 63, 292, -1,
-1, -1, -1, -1, -1, 299, 300, -1, 302, -1,
304, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 322, -1,
-1, -1, -1, -1, -1, -1, 330, 331, 332, 333,
334, 335, -1, 337, -1, 339, 340, -1, -1, 343,
-1, -1, 346, 347, 348, -1, -1, -1, 124, 267,
40, -1, -1, 43, -1, 45, -1, -1, -1, -1,
-1, 279, 280, -1, 282, 283, 284, 285, 286, 287,
288, 289, 290, 63, 292, -1, -1, -1, -1, -1,
-1, 299, 300, -1, 302, -1, 304, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
-1, -1, 330, 331, 332, 333, 334, 335, -1, 337,
267, 339, 340, -1, -1, 343, -1, -1, 346, 347,
348, -1, 279, 280, 124, 282, 283, 284, 285, 286,
287, 288, 289, 290, -1, 292, 40, -1, -1, 43,
-1, 45, 299, 300, -1, 302, -1, 304, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 63,
-1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
-1, -1, -1, 330, 331, 332, 333, 334, 335, -1,
337, 267, 339, 340, -1, -1, 343, -1, -1, 346,
347, 348, -1, 279, 280, -1, 282, 283, 284, 285,
286, 287, 288, 289, 290, -1, 292, -1, -1, -1,
-1, 40, 41, 299, 300, 44, 302, -1, 304, -1,
124, -1, -1, -1, -1, -1, -1, -1, -1, 58,
59, -1, -1, -1, 63, -1, 322, -1, -1, -1,
-1, -1, -1, -1, 330, 331, 332, 333, 334, 335,
-1, 337, -1, 339, 340, -1, -1, 343, -1, -1,
346, 347, 348, -1, -1, -1, -1, 267, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
280, -1, 282, 283, 284, 285, 286, 287, 288, 289,
290, -1, 292, 40, 41, 124, -1, 44, -1, 299,
300, -1, 302, -1, 304, -1, -1, -1, -1, -1,
-1, 58, 59, -1, -1, -1, 63, -1, -1, -1,
-1, -1, 322, -1, -1, -1, -1, -1, -1, -1,
330, 331, 332, 333, 334, 335, -1, 337, -1, 339,
340, -1, -1, 343, -1, -1, 346, 347, 348, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 40, 267, -1, 43, -1, 45, -1, -1,
-1, -1, -1, -1, -1, 279, 280, 124, 282, 283,
284, 285, 286, 287, 288, 289, 290, -1, 292, -1,
-1, -1, -1, -1, -1, 299, 300, -1, 302, -1,
304, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 40, -1, -1, 43, 322, 45,
-1, 47, -1, -1, -1, -1, 330, 331, 332, 333,
334, 335, -1, 337, 263, 339, 340, -1, 267, 343,
-1, -1, 346, 347, 348, -1, 124, -1, -1, -1,
279, 280, 281, -1, -1, 284, -1, -1, -1, 288,
289, 290, -1, 292, -1, -1, -1, -1, -1, -1,
299, 300, -1, 302, -1, 304, 40, -1, -1, 43,
-1, 45, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 322, -1, -1, -1, 123, -1, 63,
-1, 330, 331, 332, 333, 334, 335, -1, 337, -1,
339, 340, -1, -1, 343, -1, 263, 346, 347, 348,
267, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 279, 280, 281, -1, -1, 284, -1, -1,
-1, 288, 289, 290, -1, 292, -1, -1, -1, -1,
-1, 40, 299, 300, 43, 302, 45, 304, 47, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
59, -1, -1, -1, -1, 322, -1, -1, -1, -1,
-1, -1, -1, 330, 331, 332, 333, 334, 335, 267,
337, -1, 339, 340, -1, -1, 343, -1, -1, 346,
347, 348, -1, -1, 282, 283, 284, 285, 286, 287,
288, 289, 290, -1, 292, -1, -1, -1, -1, -1,
-1, 299, 300, -1, 302, -1, 304, 40, 41, -1,
43, -1, 45, -1, 47, 261, 262, -1, -1, -1,
-1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
-1, -1, 330, 331, 332, 333, 334, 335, -1, 337,
-1, 339, 340, 289, 290, 343, 292, -1, 346, 347,
348, -1, 298, 299, 300, -1, 302, -1, 304, 40,
41, -1, 43, -1, 45, -1, 47, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
-1, -1, -1, 267, 330, 331, 332, 333, 334, 335,
-1, 337, -1, 339, 340, 279, 280, 343, -1, -1,
346, 347, 348, -1, 288, 289, 290, -1, 292, -1,
-1, -1, -1, -1, -1, 299, 300, -1, 302, 40,
304, -1, 43, -1, 45, -1, 47, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 322, -1,
-1, -1, -1, -1, -1, -1, 330, 331, 332, 333,
334, 335, -1, 337, 263, 339, 340, -1, -1, 343,
-1, -1, 346, 347, 348, -1, -1, -1, -1, -1,
-1, 40, -1, -1, 43, -1, 45, -1, 47, -1,
289, 290, -1, 292, -1, -1, -1, -1, -1, -1,
299, 300, -1, 302, -1, 304, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
-1, 330, 331, 332, 333, 334, 335, -1, 337, -1,
339, 340, -1, -1, 343, -1, -1, 346, 347, 348,
-1, -1, -1, -1, 40, -1, -1, 43, -1, 45,
-1, 47, -1, -1, -1, -1, 289, 290, -1, 292,
-1, -1, -1, -1, -1, -1, 299, 300, -1, 302,
-1, 304, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
-1, -1, -1, -1, -1, -1, -1, 330, 331, 332,
333, 334, 335, -1, 337, -1, 339, 340, 289, 290,
343, 292, -1, 346, 347, 348, -1, 40, 299, 300,
43, 302, 45, 304, 47, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 322, 263, -1, -1, -1, -1, -1, -1, 330,
331, 332, 333, 334, 335, -1, 337, -1, 339, 340,
-1, -1, 343, -1, -1, 346, 347, 348, 289, 290,
-1, 292, -1, -1, -1, -1, -1, 40, 299, 300,
43, 302, 45, 304, 47, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 263, -1, -1, -1, -1, -1,
-1, 322, -1, -1, -1, -1, -1, -1, -1, 330,
331, 332, 333, 334, 335, -1, 337, -1, 339, 340,
289, 290, 343, 292, -1, 346, 347, 348, -1, 40,
299, 300, 43, 302, 45, 304, 47, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
-1, 330, 331, 332, 333, 334, 335, 263, 337, -1,
339, 340, -1, -1, 343, -1, -1, 346, 347, 348,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 289, 290, -1, 292, -1, -1, -1,
-1, -1, -1, 299, 300, -1, 302, 40, 304, -1,
43, -1, 45, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
-1, -1, -1, -1, 330, 331, 332, 333, 334, 335,
263, 337, -1, 339, 340, -1, -1, 343, -1, -1,
346, 347, 348, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 289, 290, 40, 292,
-1, 43, -1, 45, -1, 47, 299, 300, -1, 302,
-1, 304, -1, -1, -1, -1, -1, 40, -1, -1,
43, -1, 45, -1, 47, -1, -1, -1, -1, 322,
263, -1, -1, -1, -1, -1, -1, 330, 331, 332,
333, 334, 335, -1, 337, -1, 339, 340, -1, -1,
343, -1, -1, 346, 347, 348, 289, 290, -1, 292,
-1, -1, -1, -1, -1, -1, 299, 300, -1, 302,
-1, 304, -1, -1, -1, -1, -1, -1, 40, -1,
-1, 43, 263, 45, -1, -1, -1, -1, -1, 322,
-1, -1, -1, -1, -1, -1, -1, 330, 331, 332,
333, 334, 335, -1, 337, -1, 339, 340, 289, 290,
343, 292, -1, 346, 347, 348, -1, -1, 299, 300,
-1, 302, -1, 304, -1, -1, -1, -1, -1, -1,
40, -1, -1, 43, -1, 45, -1, 47, -1, -1,
-1, 322, -1, -1, -1, -1, -1, -1, -1, 330,
331, 332, 333, 334, 335, -1, 337, -1, 339, 340,
-1, -1, 343, -1, 267, 346, 347, 348, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 288, 289, 290, -1, 292,
-1, -1, -1, -1, -1, 40, 299, 300, 43, 302,
45, 304, 47, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
-1, -1, -1, -1, -1, -1, -1, 330, 331, 332,
333, 334, 335, -1, 337, -1, 339, 340, -1, -1,
343, -1, -1, 346, 347, 348, -1, 289, 290, -1,
292, -1, -1, -1, -1, -1, 40, 299, 300, 43,
302, 45, 304, 47, -1, -1, 289, 290, -1, 292,
-1, -1, -1, -1, -1, -1, 299, 300, -1, 302,
322, 304, -1, -1, -1, -1, -1, -1, 330, 331,
332, 333, 334, 335, -1, 337, -1, 339, 340, 322,
-1, 343, -1, -1, 346, 347, 348, 330, 331, 332,
333, 334, 335, -1, 337, -1, 339, 340, -1, -1,
343, -1, -1, 346, 347, 348, 40, 289, 290, 43,
292, 45, -1, -1, -1, -1, -1, 299, 300, -1,
302, -1, 304, -1, -1, -1, -1, -1, -1, -1,
-1, 313, -1, -1, -1, -1, -1, -1, -1, -1,
322, -1, -1, -1, -1, -1, -1, -1, 330, 331,
332, 333, 334, 335, -1, 337, -1, 339, 340, 289,
290, 343, 292, -1, 346, 347, 348, -1, -1, 299,
300, -1, 302, -1, 304, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 322, -1, -1, -1, -1, -1, -1, -1,
330, 331, 332, 333, 334, 335, -1, 337, -1, 339,
340, -1, -1, 343, -1, -1, 346, 347, 348, -1,
-1, -1, -1, -1, 289, 290, -1, 292, -1, -1,
-1, -1, -1, -1, 299, 300, -1, 302, -1, 304,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 322, -1, -1,
-1, -1, -1, -1, -1, 330, 331, 332, 333, 334,
335, -1, 337, -1, 339, 340, -1, -1, 343, -1,
-1, 346, 347, 348, -1, 289, 290, -1, 292, -1,
-1, -1, -1, -1, -1, 299, 300, -1, 302, -1,
304, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 322, -1,
-1, -1, -1, -1, -1, -1, 330, 331, 332, 333,
334, 335, -1, 337, -1, 339, 340, -1, -1, 343,
-1, -1, 346, 347, 348, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 289, 290, -1, 292, -1,
-1, -1, -1, -1, -1, 299, 300, -1, 302, -1,
304, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 322, -1,
-1, -1, -1, -1, -1, -1, 330, 331, 332, 333,
334, 335, -1, 337, -1, 339, 340, -1, -1, 343,
-1, -1, 346, 347, 348,
};
#define YYFINAL 4
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 349
#if YYDEBUG
char *yyname[] = {
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,"'%'",0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,
"':'","';'",0,0,0,"'?'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",
"'|'","'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"FIRSTTOKEN","PROGRAM","PASTAT","PASTAT2",
"XBEGIN","XEND","NL","ARRAY","MATCH","NOTMATCH","MATCHOP","FINAL","DOT","ALL",
"CCL","NCCL","CHAR","OR","STAR","QUEST","PLUS","EMPTYRE","AND","BOR","APPEND",
"EQ","GE","GT","LE","LT","NE","IN","ARG","BLTIN","BREAK","CLOSE","CONTINUE",
"DELETE","DO","EXIT","FOR","FUNC","SUB","GSUB","IF","INDEX","LSUBSTR",
"MATCHFCN","NEXT","NEXTFILE","ADD","MINUS","MULT","DIVIDE","MOD","ASSIGN",
"ASGNOP","ADDEQ","SUBEQ","MULTEQ","DIVEQ","MODEQ","POWEQ","PRINT","PRINTF",
"SPRINTF","ELSE","INTEST","CONDEXPR","POSTINCR","PREINCR","POSTDECR","PREDECR",
"VAR","IVAR","VARNF","CALL","NUMBER","STRING","REGEXPR","GETLINE","RETURN",
"SPLIT","SUBSTR","WHILE","CAT","NOT","UMINUS","POWER","DECR","INCR","INDIRECT",
"LASTTOKEN",
};
char *yyrule[] = {
"$accept : program",
"program : pas",
"program : error",
"and : AND",
"and : and NL",
"bor : BOR",
"bor : bor NL",
"comma : ','",
"comma : comma NL",
"do : DO",
"do : do NL",
"else : ELSE",
"else : else NL",
"$$1 :",
"for : FOR '(' opt_simple_stmt ';' opt_nl pattern ';' opt_nl opt_simple_stmt rparen $$1 stmt",
"$$2 :",
"for : FOR '(' opt_simple_stmt ';' ';' opt_nl opt_simple_stmt rparen $$2 stmt",
"$$3 :",
"for : FOR '(' varname IN varname rparen $$3 stmt",
"funcname : VAR",
"funcname : CALL",
"if : IF '(' pattern rparen",
"lbrace : '{'",
"lbrace : lbrace NL",
"nl : NL",
"nl : nl NL",
"opt_nl :",
"opt_nl : nl",
"opt_pst :",
"opt_pst : pst",
"opt_simple_stmt :",
"opt_simple_stmt : simple_stmt",
"pas : opt_pst",
"pas : opt_pst pa_stats opt_pst",
"pa_pat : pattern",
"pa_stat : pa_pat",
"pa_stat : pa_pat lbrace stmtlist '}'",
"pa_stat : pa_pat ',' pa_pat",
"pa_stat : pa_pat ',' pa_pat lbrace stmtlist '}'",
"pa_stat : lbrace stmtlist '}'",
"pa_stat : XBEGIN lbrace stmtlist '}'",
"pa_stat : XEND lbrace stmtlist '}'",
"$$4 :",
"pa_stat : FUNC funcname '(' varlist rparen $$4 lbrace stmtlist '}'",
"pa_stats : pa_stat",
"pa_stats : pa_stats opt_pst pa_stat",
"patlist : pattern",
"patlist : patlist comma pattern",
"ppattern : var ASGNOP ppattern",
"ppattern : ppattern '?' ppattern ':' ppattern",
"ppattern : ppattern bor ppattern",
"ppattern : ppattern and ppattern",
"ppattern : ppattern MATCHOP reg_expr",
"ppattern : ppattern MATCHOP ppattern",
"ppattern : ppattern IN varname",
"ppattern : '(' plist ')' IN varname",
"ppattern : ppattern term",
"ppattern : re",
"ppattern : term",
"pattern : var ASGNOP pattern",
"pattern : pattern '?' pattern ':' pattern",
"pattern : pattern bor pattern",
"pattern : pattern and pattern",
"pattern : pattern EQ pattern",
"pattern : pattern GE pattern",
"pattern : pattern GT pattern",
"pattern : pattern LE pattern",
"pattern : pattern LT pattern",
"pattern : pattern NE pattern",
"pattern : pattern MATCHOP reg_expr",
"pattern : pattern MATCHOP pattern",
"pattern : pattern IN varname",
"pattern : '(' plist ')' IN varname",
"pattern : pattern '|' GETLINE var",
"pattern : pattern '|' GETLINE",
"pattern : pattern term",
"pattern : re",
"pattern : term",
"plist : pattern comma pattern",
"plist : plist comma pattern",
"pplist : ppattern",
"pplist : pplist comma ppattern",
"prarg :",
"prarg : pplist",
"prarg : '(' plist ')'",
"print : PRINT",
"print : PRINTF",
"pst : NL",
"pst : ';'",
"pst : pst NL",
"pst : pst ';'",
"rbrace : '}'",
"rbrace : rbrace NL",
"re : reg_expr",
"re : NOT re",
"$$5 :",
"reg_expr : '/' $$5 REGEXPR '/'",
"rparen : ')'",
"rparen : rparen NL",
"simple_stmt : print prarg '|' term",
"simple_stmt : print prarg APPEND term",
"simple_stmt : print prarg GT term",
"simple_stmt : print prarg",
"simple_stmt : DELETE varname '[' patlist ']'",
"simple_stmt : DELETE varname",
"simple_stmt : pattern",
"simple_stmt : error",
"st : nl",
"st : ';' opt_nl",
"stmt : BREAK st",
"stmt : CONTINUE st",
"$$6 :",
"$$7 :",
"stmt : do $$6 stmt $$7 WHILE '(' pattern ')' st",
"stmt : EXIT pattern st",
"stmt : EXIT st",
"stmt : for",
"stmt : if stmt else stmt",
"stmt : if stmt",
"stmt : lbrace stmtlist rbrace",
"stmt : NEXT st",
"stmt : NEXTFILE st",
"stmt : RETURN pattern st",
"stmt : RETURN st",
"stmt : simple_stmt st",
"$$8 :",
"stmt : while $$8 stmt",
"stmt : ';' opt_nl",
"stmtlist : stmt",
"stmtlist : stmtlist stmt",
"subop : SUB",
"subop : GSUB",
"term : term '/' ASGNOP term",
"term : term '+' term",
"term : term '-' term",
"term : term '*' term",
"term : term '/' term",
"term : term '%' term",
"term : term POWER term",
"term : '-' term",
"term : '+' term",
"term : NOT term",
"term : BLTIN '(' ')'",
"term : BLTIN '(' patlist ')'",
"term : BLTIN",
"term : CALL '(' ')'",
"term : CALL '(' patlist ')'",
"term : CLOSE term",
"term : DECR var",
"term : INCR var",
"term : var DECR",
"term : var INCR",
"term : GETLINE var LT term",
"term : GETLINE LT term",
"term : GETLINE var",
"term : GETLINE",
"term : INDEX '(' pattern comma pattern ')'",
"term : INDEX '(' pattern comma reg_expr ')'",
"term : '(' pattern ')'",
"term : MATCHFCN '(' pattern comma reg_expr ')'",
"term : MATCHFCN '(' pattern comma pattern ')'",
"term : NUMBER",
"term : SPLIT '(' pattern comma varname comma pattern ')'",
"term : SPLIT '(' pattern comma varname comma reg_expr ')'",
"term : SPLIT '(' pattern comma varname ')'",
"term : SPRINTF '(' patlist ')'",
"term : STRING",
"term : subop '(' reg_expr comma pattern ')'",
"term : subop '(' pattern comma pattern ')'",
"term : subop '(' reg_expr comma pattern comma var ')'",
"term : subop '(' pattern comma pattern comma var ')'",
"term : SUBSTR '(' pattern comma pattern comma pattern ')'",
"term : SUBSTR '(' pattern comma pattern ')'",
"term : var",
"var : varname",
"var : varname '[' patlist ']'",
"var : IVAR",
"var : INDIRECT term",
"varlist :",
"varlist : VAR",
"varlist : varlist comma VAR",
"varname : VAR",
"varname : ARG",
"varname : VARNF",
"while : WHILE '(' pattern rparen",
};
#endif
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH 10000
#endif
#endif
#define YYINITSTACKSIZE 200
int yydebug;
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
YYSTYPE yylval;
short *yyss;
short *yysslim;
YYSTYPE *yyvs;
int yystacksize;
#line 446 "awkgram.y"
void setfname(Cell *p)
{
if (isarr(p))
SYNTAX("%s is an array, not a function", p->nval);
else if (isfcn(p))
SYNTAX("you can't define function %s more than once", p->nval);
curfname = p->nval;
}
int constnode(Node *p)
{
return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
}
char *strnode(Node *p)
{
return ((Cell *)(p->narg[0]))->sval;
}
Node *notnull(Node *n)
{
switch (n->nobj) {
case LE: case LT: case EQ: case NE: case GT: case GE:
case BOR: case AND: case NOT:
return n;
default:
return op2(NE, n, nullnode);
}
}
void checkdup(Node *vl, Cell *cp) /* check if name already in list */
{
char *s = cp->nval;
for ( ; vl; vl = vl->nnext) {
if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
SYNTAX("duplicate argument %s", s);
break;
}
}
}
#line 2534 "y.tab.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
int yyparse __P((void));
static int yygrowstack __P((void));
static int yygrowstack()
{
int newsize, i;
short *newss;
YYSTYPE *newvs;
if ((newsize = yystacksize) == 0)
newsize = YYINITSTACKSIZE;
else if (newsize >= YYMAXDEPTH)
return -1;
else if ((newsize *= 2) > YYMAXDEPTH)
newsize = YYMAXDEPTH;
i = yyssp - yyss;
if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
return -1;
yyss = newss;
yyssp = newss + i;
if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
return -1;
yyvs = newvs;
yyvsp = newvs + i;
yystacksize = newsize;
yysslim = yyss + newsize - 1;
return 0;
}
#define YYABORT goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse()
{
int yym, yyn, yystate;
#if YYDEBUG
char *yys;
if ((yys = getenv("YYDEBUG")) != NULL)
{
yyn = *yys;
if (yyn >= '0' && yyn <= '9')
yydebug = yyn - '0';
}
#endif
yynerrs = 0;
yyerrflag = 0;
yychar = (-1);
if (yyss == NULL && yygrowstack()) goto yyoverflow;
yyssp = yyss;
yyvsp = yyvs;
*yyssp = yystate = 0;
yyloop:
if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
}
if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, shifting to state %d\n",
YYPREFIX, yystate, yytable[yyn]);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
yychar = (-1);
if (yyerrflag > 0) --yyerrflag;
goto yyloop;
}
if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
yyn = yytable[yyn];
goto yyreduce;
}
if (yyerrflag) goto yyinrecovery;
goto yynewerror;
yynewerror:
yyerror("syntax error");
goto yyerrlab;
yyerrlab:
++yynerrs;
yyinrecovery:
if (yyerrflag < 3)
{
yyerrflag = 3;
for (;;)
{
if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, error recovery shifting\
to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
goto yyloop;
}
else
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: error recovery discarding state %d\n",
YYPREFIX, *yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
--yyssp;
--yyvsp;
}
}
}
else
{
if (yychar == 0) goto yyabort;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
yychar = (-1);
goto yyloop;
}
yyreduce:
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, reducing by rule %d (%s)\n",
YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
yym = yylen[yyn];
yyval = yyvsp[1-yym];
switch (yyn)
{
case 1:
#line 98 "awkgram.y"
{ if (errorflag==0)
winner = (Node *)stat3(PROGRAM, beginloc, yyvsp[0].p, endloc); }
break;
case 2:
#line 100 "awkgram.y"
{ yyclearin; bracecheck(); SYNTAX("bailing out"); }
break;
case 13:
#line 124 "awkgram.y"
{inloop++;}
break;
case 14:
#line 125 "awkgram.y"
{ --inloop; yyval.p = stat4(FOR, yyvsp[-9].p, notnull(yyvsp[-6].p), yyvsp[-3].p, yyvsp[0].p); }
break;
case 15:
#line 126 "awkgram.y"
{inloop++;}
break;
case 16:
#line 127 "awkgram.y"
{ --inloop; yyval.p = stat4(FOR, yyvsp[-7].p, NIL, yyvsp[-3].p, yyvsp[0].p); }
break;
case 17:
#line 128 "awkgram.y"
{inloop++;}
break;
case 18:
#line 129 "awkgram.y"
{ --inloop; yyval.p = stat3(IN, yyvsp[-5].p, makearr(yyvsp[-3].p), yyvsp[0].p); }
break;
case 19:
#line 133 "awkgram.y"
{ setfname(yyvsp[0].cp); }
break;
case 20:
#line 134 "awkgram.y"
{ setfname(yyvsp[0].cp); }
break;
case 21:
#line 138 "awkgram.y"
{ yyval.p = notnull(yyvsp[-1].p); }
break;
case 26:
#line 150 "awkgram.y"
{ yyval.i = 0; }
break;
case 28:
#line 155 "awkgram.y"
{ yyval.i = 0; }
break;
case 30:
#line 161 "awkgram.y"
{ yyval.p = 0; }
break;
case 32:
#line 166 "awkgram.y"
{ yyval.p = 0; }
break;
case 33:
#line 167 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 34:
#line 171 "awkgram.y"
{ yyval.p = notnull(yyvsp[0].p); }
break;
case 35:
#line 175 "awkgram.y"
{ yyval.p = stat2(PASTAT, yyvsp[0].p, stat2(PRINT, rectonode(), NIL)); }
break;
case 36:
#line 176 "awkgram.y"
{ yyval.p = stat2(PASTAT, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 37:
#line 177 "awkgram.y"
{ yyval.p = pa2stat(yyvsp[-2].p, yyvsp[0].p, stat2(PRINT, rectonode(), NIL)); }
break;
case 38:
#line 178 "awkgram.y"
{ yyval.p = pa2stat(yyvsp[-5].p, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 39:
#line 179 "awkgram.y"
{ yyval.p = stat2(PASTAT, NIL, yyvsp[-1].p); }
break;
case 40:
#line 181 "awkgram.y"
{ beginloc = linkum(beginloc, yyvsp[-1].p); yyval.p = 0; }
break;
case 41:
#line 183 "awkgram.y"
{ endloc = linkum(endloc, yyvsp[-1].p); yyval.p = 0; }
break;
case 42:
#line 184 "awkgram.y"
{infunc++;}
break;
case 43:
#line 185 "awkgram.y"
{ infunc--; curfname=0; defn((Cell *)yyvsp[-7].p, yyvsp[-5].p, yyvsp[-1].p); yyval.p = 0; }
break;
case 45:
#line 190 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 47:
#line 195 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 48:
#line 199 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 49:
#line 201 "awkgram.y"
{ yyval.p = op3(CONDEXPR, notnull(yyvsp[-4].p), yyvsp[-2].p, yyvsp[0].p); }
break;
case 50:
#line 203 "awkgram.y"
{ yyval.p = op2(BOR, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 51:
#line 205 "awkgram.y"
{ yyval.p = op2(AND, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 52:
#line 206 "awkgram.y"
{ yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(yyvsp[0].s, 0)); }
break;
case 53:
#line 208 "awkgram.y"
{ if (constnode(yyvsp[0].p))
yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(strnode(yyvsp[0].p), 0));
else
yyval.p = op3(yyvsp[-1].i, (Node *)1, yyvsp[-2].p, yyvsp[0].p); }
break;
case 54:
#line 212 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-2].p, makearr(yyvsp[0].p)); }
break;
case 55:
#line 213 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-3].p, makearr(yyvsp[0].p)); }
break;
case 56:
#line 214 "awkgram.y"
{ yyval.p = op2(CAT, yyvsp[-1].p, yyvsp[0].p); }
break;
case 59:
#line 220 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 60:
#line 222 "awkgram.y"
{ yyval.p = op3(CONDEXPR, notnull(yyvsp[-4].p), yyvsp[-2].p, yyvsp[0].p); }
break;
case 61:
#line 224 "awkgram.y"
{ yyval.p = op2(BOR, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 62:
#line 226 "awkgram.y"
{ yyval.p = op2(AND, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 63:
#line 227 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 64:
#line 228 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 65:
#line 229 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 66:
#line 230 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 67:
#line 231 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 68:
#line 232 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 69:
#line 233 "awkgram.y"
{ yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(yyvsp[0].s, 0)); }
break;
case 70:
#line 235 "awkgram.y"
{ if (constnode(yyvsp[0].p))
yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(strnode(yyvsp[0].p), 0));
else
yyval.p = op3(yyvsp[-1].i, (Node *)1, yyvsp[-2].p, yyvsp[0].p); }
break;
case 71:
#line 239 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-2].p, makearr(yyvsp[0].p)); }
break;
case 72:
#line 240 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-3].p, makearr(yyvsp[0].p)); }
break;
case 73:
#line 241 "awkgram.y"
{
if (safe) SYNTAX("cmd | getline is unsafe");
else yyval.p = op3(GETLINE, yyvsp[0].p, itonp(yyvsp[-2].i), yyvsp[-3].p); }
break;
case 74:
#line 244 "awkgram.y"
{
if (safe) SYNTAX("cmd | getline is unsafe");
else yyval.p = op3(GETLINE, (Node*)0, itonp(yyvsp[-1].i), yyvsp[-2].p); }
break;
case 75:
#line 247 "awkgram.y"
{ yyval.p = op2(CAT, yyvsp[-1].p, yyvsp[0].p); }
break;
case 78:
#line 253 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 79:
#line 254 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 81:
#line 259 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 82:
#line 263 "awkgram.y"
{ yyval.p = rectonode(); }
break;
case 84:
#line 265 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 93:
#line 282 "awkgram.y"
{ yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yyvsp[0].s, 0)); }
break;
case 94:
#line 283 "awkgram.y"
{ yyval.p = op1(NOT, notnull(yyvsp[0].p)); }
break;
case 95:
#line 287 "awkgram.y"
{startreg();}
break;
case 96:
#line 287 "awkgram.y"
{ yyval.s = yyvsp[-1].s; }
break;
case 99:
#line 295 "awkgram.y"
{
if (safe) SYNTAX("print | is unsafe");
else yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 100:
#line 298 "awkgram.y"
{
if (safe) SYNTAX("print >> is unsafe");
else yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 101:
#line 301 "awkgram.y"
{
if (safe) SYNTAX("print > is unsafe");
else yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 102:
#line 304 "awkgram.y"
{ yyval.p = stat3(yyvsp[-1].i, yyvsp[0].p, NIL, NIL); }
break;
case 103:
#line 305 "awkgram.y"
{ yyval.p = stat2(DELETE, makearr(yyvsp[-3].p), yyvsp[-1].p); }
break;
case 104:
#line 306 "awkgram.y"
{ yyval.p = stat2(DELETE, makearr(yyvsp[0].p), 0); }
break;
case 105:
#line 307 "awkgram.y"
{ yyval.p = exptostat(yyvsp[0].p); }
break;
case 106:
#line 308 "awkgram.y"
{ yyclearin; SYNTAX("illegal statement"); }
break;
case 109:
#line 317 "awkgram.y"
{ if (!inloop) SYNTAX("break illegal outside of loops");
yyval.p = stat1(BREAK, NIL); }
break;
case 110:
#line 319 "awkgram.y"
{ if (!inloop) SYNTAX("continue illegal outside of loops");
yyval.p = stat1(CONTINUE, NIL); }
break;
case 111:
#line 321 "awkgram.y"
{inloop++;}
break;
case 112:
#line 321 "awkgram.y"
{--inloop;}
break;
case 113:
#line 322 "awkgram.y"
{ yyval.p = stat2(DO, yyvsp[-6].p, notnull(yyvsp[-2].p)); }
break;
case 114:
#line 323 "awkgram.y"
{ yyval.p = stat1(EXIT, yyvsp[-1].p); }
break;
case 115:
#line 324 "awkgram.y"
{ yyval.p = stat1(EXIT, NIL); }
break;
case 117:
#line 326 "awkgram.y"
{ yyval.p = stat3(IF, yyvsp[-3].p, yyvsp[-2].p, yyvsp[0].p); }
break;
case 118:
#line 327 "awkgram.y"
{ yyval.p = stat3(IF, yyvsp[-1].p, yyvsp[0].p, NIL); }
break;
case 119:
#line 328 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 120:
#line 329 "awkgram.y"
{ if (infunc)
SYNTAX("next is illegal inside a function");
yyval.p = stat1(NEXT, NIL); }
break;
case 121:
#line 332 "awkgram.y"
{ if (infunc)
SYNTAX("nextfile is illegal inside a function");
yyval.p = stat1(NEXTFILE, NIL); }
break;
case 122:
#line 335 "awkgram.y"
{ yyval.p = stat1(RETURN, yyvsp[-1].p); }
break;
case 123:
#line 336 "awkgram.y"
{ yyval.p = stat1(RETURN, NIL); }
break;
case 125:
#line 338 "awkgram.y"
{inloop++;}
break;
case 126:
#line 338 "awkgram.y"
{ --inloop; yyval.p = stat2(WHILE, yyvsp[-2].p, yyvsp[0].p); }
break;
case 127:
#line 339 "awkgram.y"
{ yyval.p = 0; }
break;
case 129:
#line 344 "awkgram.y"
{ yyval.p = linkum(yyvsp[-1].p, yyvsp[0].p); }
break;
case 132:
#line 352 "awkgram.y"
{ yyval.p = op2(DIVEQ, yyvsp[-3].p, yyvsp[0].p); }
break;
case 133:
#line 353 "awkgram.y"
{ yyval.p = op2(ADD, yyvsp[-2].p, yyvsp[0].p); }
break;
case 134:
#line 354 "awkgram.y"
{ yyval.p = op2(MINUS, yyvsp[-2].p, yyvsp[0].p); }
break;
case 135:
#line 355 "awkgram.y"
{ yyval.p = op2(MULT, yyvsp[-2].p, yyvsp[0].p); }
break;
case 136:
#line 356 "awkgram.y"
{ yyval.p = op2(DIVIDE, yyvsp[-2].p, yyvsp[0].p); }
break;
case 137:
#line 357 "awkgram.y"
{ yyval.p = op2(MOD, yyvsp[-2].p, yyvsp[0].p); }
break;
case 138:
#line 358 "awkgram.y"
{ yyval.p = op2(POWER, yyvsp[-2].p, yyvsp[0].p); }
break;
case 139:
#line 359 "awkgram.y"
{ yyval.p = op1(UMINUS, yyvsp[0].p); }
break;
case 140:
#line 360 "awkgram.y"
{ yyval.p = yyvsp[0].p; }
break;
case 141:
#line 361 "awkgram.y"
{ yyval.p = op1(NOT, notnull(yyvsp[0].p)); }
break;
case 142:
#line 362 "awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yyvsp[-2].i), rectonode()); }
break;
case 143:
#line 363 "awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yyvsp[-3].i), yyvsp[-1].p); }
break;
case 144:
#line 364 "awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yyvsp[0].i), rectonode()); }
break;
case 145:
#line 365 "awkgram.y"
{ yyval.p = op2(CALL, celltonode(yyvsp[-2].cp,CVAR), NIL); }
break;
case 146:
#line 366 "awkgram.y"
{ yyval.p = op2(CALL, celltonode(yyvsp[-3].cp,CVAR), yyvsp[-1].p); }
break;
case 147:
#line 367 "awkgram.y"
{ yyval.p = op1(CLOSE, yyvsp[0].p); }
break;
case 148:
#line 368 "awkgram.y"
{ yyval.p = op1(PREDECR, yyvsp[0].p); }
break;
case 149:
#line 369 "awkgram.y"
{ yyval.p = op1(PREINCR, yyvsp[0].p); }
break;
case 150:
#line 370 "awkgram.y"
{ yyval.p = op1(POSTDECR, yyvsp[-1].p); }
break;
case 151:
#line 371 "awkgram.y"
{ yyval.p = op1(POSTINCR, yyvsp[-1].p); }
break;
case 152:
#line 372 "awkgram.y"
{ yyval.p = op3(GETLINE, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 153:
#line 373 "awkgram.y"
{ yyval.p = op3(GETLINE, NIL, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 154:
#line 374 "awkgram.y"
{ yyval.p = op3(GETLINE, yyvsp[0].p, NIL, NIL); }
break;
case 155:
#line 375 "awkgram.y"
{ yyval.p = op3(GETLINE, NIL, NIL, NIL); }
break;
case 156:
#line 377 "awkgram.y"
{ yyval.p = op2(INDEX, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 157:
#line 379 "awkgram.y"
{ SYNTAX("index() doesn't permit regular expressions");
yyval.p = op2(INDEX, yyvsp[-3].p, (Node*)yyvsp[-1].s); }
break;
case 158:
#line 381 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 159:
#line 383 "awkgram.y"
{ yyval.p = op3(MATCHFCN, NIL, yyvsp[-3].p, (Node*)makedfa(yyvsp[-1].s, 1)); }
break;
case 160:
#line 385 "awkgram.y"
{ if (constnode(yyvsp[-1].p))
yyval.p = op3(MATCHFCN, NIL, yyvsp[-3].p, (Node*)makedfa(strnode(yyvsp[-1].p), 1));
else
yyval.p = op3(MATCHFCN, (Node *)1, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 161:
#line 389 "awkgram.y"
{ yyval.p = celltonode(yyvsp[0].cp, CCON); }
break;
case 162:
#line 391 "awkgram.y"
{ yyval.p = op4(SPLIT, yyvsp[-5].p, makearr(yyvsp[-3].p), yyvsp[-1].p, (Node*)STRING); }
break;
case 163:
#line 393 "awkgram.y"
{ yyval.p = op4(SPLIT, yyvsp[-5].p, makearr(yyvsp[-3].p), (Node*)makedfa(yyvsp[-1].s, 1), (Node *)REGEXPR); }
break;
case 164:
#line 395 "awkgram.y"
{ yyval.p = op4(SPLIT, yyvsp[-3].p, makearr(yyvsp[-1].p), NIL, (Node*)STRING); }
break;
case 165:
#line 396 "awkgram.y"
{ yyval.p = op1(yyvsp[-3].i, yyvsp[-1].p); }
break;
case 166:
#line 397 "awkgram.y"
{ yyval.p = celltonode(yyvsp[0].cp, CCON); }
break;
case 167:
#line 399 "awkgram.y"
{ yyval.p = op4(yyvsp[-5].i, NIL, (Node*)makedfa(yyvsp[-3].s, 1), yyvsp[-1].p, rectonode()); }
break;
case 168:
#line 401 "awkgram.y"
{ if (constnode(yyvsp[-3].p))
yyval.p = op4(yyvsp[-5].i, NIL, (Node*)makedfa(strnode(yyvsp[-3].p), 1), yyvsp[-1].p, rectonode());
else
yyval.p = op4(yyvsp[-5].i, (Node *)1, yyvsp[-3].p, yyvsp[-1].p, rectonode()); }
break;
case 169:
#line 406 "awkgram.y"
{ yyval.p = op4(yyvsp[-7].i, NIL, (Node*)makedfa(yyvsp[-5].s, 1), yyvsp[-3].p, yyvsp[-1].p); }
break;
case 170:
#line 408 "awkgram.y"
{ if (constnode(yyvsp[-5].p))
yyval.p = op4(yyvsp[-7].i, NIL, (Node*)makedfa(strnode(yyvsp[-5].p), 1), yyvsp[-3].p, yyvsp[-1].p);
else
yyval.p = op4(yyvsp[-7].i, (Node *)1, yyvsp[-5].p, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 171:
#line 413 "awkgram.y"
{ yyval.p = op3(SUBSTR, yyvsp[-5].p, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 172:
#line 415 "awkgram.y"
{ yyval.p = op3(SUBSTR, yyvsp[-3].p, yyvsp[-1].p, NIL); }
break;
case 175:
#line 421 "awkgram.y"
{ yyval.p = op2(ARRAY, makearr(yyvsp[-3].p), yyvsp[-1].p); }
break;
case 176:
#line 422 "awkgram.y"
{ yyval.p = op1(INDIRECT, celltonode(yyvsp[0].cp, CVAR)); }
break;
case 177:
#line 423 "awkgram.y"
{ yyval.p = op1(INDIRECT, yyvsp[0].p); }
break;
case 178:
#line 427 "awkgram.y"
{ arglist = yyval.p = 0; }
break;
case 179:
#line 428 "awkgram.y"
{ arglist = yyval.p = celltonode(yyvsp[0].cp,CVAR); }
break;
case 180:
#line 429 "awkgram.y"
{
checkdup(yyvsp[-2].p, yyvsp[0].cp);
arglist = yyval.p = linkum(yyvsp[-2].p,celltonode(yyvsp[0].cp,CVAR)); }
break;
case 181:
#line 435 "awkgram.y"
{ yyval.p = celltonode(yyvsp[0].cp, CVAR); }
break;
case 182:
#line 436 "awkgram.y"
{ yyval.p = op1(ARG, itonp(yyvsp[0].i)); }
break;
case 183:
#line 437 "awkgram.y"
{ yyval.p = op1(VARNF, (Node *) yyvsp[0].cp); }
break;
case 184:
#line 442 "awkgram.y"
{ yyval.p = notnull(yyvsp[-1].p); }
break;
#line 3295 "y.tab.c"
}
yyssp -= yym;
yystate = *yyssp;
yyvsp -= yym;
yym = yylhs[yyn];
if (yystate == 0 && yym == 0)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state 0 to\
state %d\n", YYPREFIX, YYFINAL);
#endif
yystate = YYFINAL;
*++yyssp = YYFINAL;
*++yyvsp = yyval;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, YYFINAL, yychar, yys);
}
#endif
}
if (yychar == 0) goto yyaccept;
goto yyloop;
}
if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
yystate = yytable[yyn];
else
yystate = yydgoto[yym];
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yyssp, yystate);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate;
*++yyvsp = yyval;
goto yyloop;
yyoverflow:
yyerror("yacc stack overflow");
yyabort:
return (1);
yyaccept:
return (0);
}
syntax highlighted by Code2HTML, v. 0.9.1