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