/* original parser id follows */
/* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */

#define YYBYACC 1
#define YYMAJOR 2
#define YYMINOR 0

#define YYEMPTY        (-1)
#define yyclearin      (yychar = YYEMPTY)
#define yyerrok        (yyerrflag = 0)
#define YYRECOVERING() (yyerrflag != 0)
#define YYENOMEM       (-2)
#define YYEOF          0
#undef YYBTYACC
#define YYBTYACC 0
#define YYDEBUGSTR YYPREFIX "debug"
#define YYPREFIX "yy"

#define YYPURE 0

#line 26 "awkgram.y"
#include <stdio.h>
#include <string.h>
#include "awk.h"

void checkdup(Node *list, Cell *item);
int yywrap(void) { return(1); }

Node	*beginloc = 0;
Node	*endloc = 0;
bool	infunc	= false;	/* = true if in arglist or body of func */
int	inloop	= 0;	/* >= 1 if in while, for, do; can't be bool, since loops can next */
char	*curfname = 0;	/* current function name */
Node	*arglist = 0;	/* list of args for current function */
#ifdef YYSTYPE
#undef  YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#line 41 "awkgram.y"
typedef union {
	Node	*p;
	Cell	*cp;
	int	i;
	char	*s;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
#line 51 "awkgram.tab.c"

/* compatibility with bison */
#ifdef YYPARSE_PARAM
/* compatibility with FreeBSD */
# ifdef YYPARSE_PARAM_TYPE
#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
# else
#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
# endif
#else
# define YYPARSE_DECL() yyparse(void)
#endif

/* Parameters sent to lex. */
#ifdef YYLEX_PARAM
# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
# define YYLEX yylex(YYLEX_PARAM)
#else
# define YYLEX_DECL() yylex(void)
# define YYLEX yylex()
#endif

#if !(defined(yylex) || defined(YYSTATE))
int YYLEX_DECL();
#endif

/* Parameters sent to yyerror. */
#ifndef YYERROR_DECL
#define YYERROR_DECL() yyerror(const char *s)
#endif
#ifndef YYERROR_CALL
#define YYERROR_CALL(msg) yyerror(msg)
#endif

extern int YYPARSE_DECL();

#define FIRSTTOKEN 257
#define PROGRAM 258
#define PASTAT 259
#define PASTAT2 260
#define XBEGIN 261
#define XEND 262
#define NL 263
#define ARRAY 264
#define MATCH 265
#define NOTMATCH 266
#define MATCHOP 267
#define FINAL 268
#define DOT 269
#define ALL 270
#define CCL 271
#define NCCL 272
#define CHAR 273
#define OR 274
#define STAR 275
#define QUEST 276
#define PLUS 277
#define EMPTYRE 278
#define ZERO 279
#define AND 280
#define BOR 281
#define APPEND 282
#define EQ 283
#define GE 284
#define GT 285
#define LE 286
#define LT 287
#define NE 288
#define IN 289
#define ARG 290
#define BLTIN 291
#define BREAK 292
#define CLOSE 293
#define CONTINUE 294
#define DELETE 295
#define DO 296
#define EXIT 297
#define FOR 298
#define FUNC 299
#define SUB 300
#define GSUB 301
#define IF 302
#define INDEX 303
#define LSUBSTR 304
#define MATCHFCN 305
#define NEXT 306
#define NEXTFILE 307
#define ADD 308
#define MINUS 309
#define MULT 310
#define DIVIDE 311
#define MOD 312
#define ASSIGN 313
#define ASGNOP 314
#define ADDEQ 315
#define SUBEQ 316
#define MULTEQ 317
#define DIVEQ 318
#define MODEQ 319
#define POWEQ 320
#define PRINT 321
#define PRINTF 322
#define SPRINTF 323
#define ELSE 324
#define INTEST 325
#define CONDEXPR 326
#define POSTINCR 327
#define PREINCR 328
#define POSTDECR 329
#define PREDECR 330
#define VAR 331
#define IVAR 332
#define VARNF 333
#define CALL 334
#define NUMBER 335
#define STRING 336
#define REGEXPR 337
#define GETLINE 338
#define RETURN 339
#define SPLIT 340
#define SUBSTR 341
#define WHILE 342
#define CAT 343
#define NOT 344
#define UMINUS 345
#define UPLUS 346
#define POWER 347
#define DECR 348
#define INCR 349
#define INDIRECT 350
#define LASTTOKEN 351
#define YYERRCODE 256
typedef int YYINT;
static const YYINT yylhs[] = {                           -1,
    0,    0,   36,   36,   37,   37,   33,   33,   26,   26,
   24,   24,   41,   22,   42,   22,   43,   22,   20,   20,
   23,   30,   30,   34,   34,   35,   35,   29,   29,   15,
   15,    1,    1,   10,   11,   11,   11,   11,   11,   11,
   11,   44,   11,   12,   12,    6,    6,    3,    3,    3,
    3,    3,    3,    3,    3,    3,    3,    3,    2,    2,
    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
    2,    2,    2,    2,    2,    2,    2,    4,    4,    5,
    5,    7,    7,    7,   39,   39,   28,   28,   28,   28,
   31,   31,    9,    9,   45,   13,   32,   32,   14,   14,
   14,   14,   14,   14,   14,   14,   27,   27,   16,   16,
   46,   47,   16,   16,   16,   16,   16,   16,   16,   16,
   16,   16,   16,   16,   48,   16,   16,   17,   17,   38,
   38,   40,   40,    8,    8,    8,    8,    8,    8,    8,
    8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
    8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
    8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
    8,    8,    8,    8,    8,   18,   18,   18,   18,   21,
   21,   21,   19,   19,   19,   25,
};
static const YYINT yylen[] = {                            2,
    1,    1,    1,    2,    1,    2,    1,    2,    1,    2,
    1,    2,    0,   12,    0,   10,    0,    8,    1,    1,
    4,    1,    2,    1,    2,    0,    1,    0,    1,    0,
    1,    1,    3,    1,    1,    4,    4,    7,    3,    4,
    4,    0,    9,    1,    3,    1,    3,    3,    5,    3,
    3,    3,    3,    3,    5,    2,    1,    1,    3,    5,
    3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    5,    4,    3,    2,    1,    1,    3,    3,    1,
    3,    0,    1,    3,    1,    1,    1,    1,    2,    2,
    1,    2,    1,    2,    0,    4,    1,    2,    4,    4,
    4,    2,    5,    2,    1,    1,    1,    2,    2,    2,
    0,    0,    9,    3,    2,    1,    4,    2,    3,    2,
    2,    3,    2,    2,    0,    3,    2,    1,    2,    1,
    1,    1,    2,    4,    3,    3,    3,    3,    3,    3,
    2,    2,    2,    3,    4,    1,    3,    4,    2,    2,
    2,    2,    2,    4,    3,    2,    1,    6,    6,    3,
    6,    6,    1,    8,    8,    6,    4,    1,    6,    6,
    8,    8,    8,    6,    1,    1,    4,    1,    2,    0,
    1,    3,    1,    1,    1,    4,
};
static const YYINT yydefred[] = {                         0,
    2,   87,   88,    0,    1,    0,    0,   89,   90,    0,
    0,   22,    0,   95,  184,    0,    0,    0,  130,  131,
    0,    0,    0,  183,  178,  185,    0,  163,  132,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   76,    0,   44,    0,   93,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   19,   20,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   94,  150,  151,  179,    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,  152,  153,    0,  106,   23,    0,    0,
    0,    0,    9,    0,    0,    0,    0,    0,   85,   86,
    0,    0,    0,    0,  128,    0,  116,    0,  125,    0,
    0,    0,    0,  133,    0,    0,    7,  160,    0,    0,
    0,    0,  144,    0,    0,    0,    0,    0,    0,    0,
  147,    0,    0,    0,    0,    0,    0,    0,   69,    0,
    0,    0,    0,    0,    0,   71,    0,    4,    0,    6,
    0,    0,    0,    0,    0,    0,    0,    0,   24,    0,
    0,    0,   45,    0,    0,  127,    0,  109,    0,  110,
    0,    0,  115,    0,    0,  120,  121,    0,  123,    0,
  124,   39,  129,    0,    0,   10,    0,    0,    0,    0,
    0,    0,    0,   57,    0,    0,    0,   40,   41,    8,
    0,    0,    0,   96,  145,    0,  181,    0,    0,    0,
  167,  148,    0,    0,    0,   73,    0,    0,   25,    0,
   36,  177,  108,    0,  114,   31,    0,    0,    0,  122,
    0,   11,    0,  126,  112,   91,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   72,    0,   97,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   12,
  117,    0,   92,    0,    0,    0,   52,   54,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   98,    0,
  182,  158,  159,  162,  161,  166,    0,  174,    0,    0,
  103,    0,    0,    0,    0,    0,    0,    0,  170,    0,
  169,    0,    0,    0,    0,    0,   38,    0,    0,    0,
    0,   55,    0,    0,    0,    0,    0,  164,  165,  173,
    0,    0,    0,    0,  172,  171,   43,    0,    0,   18,
    0,    0,    0,  113,   16,    0,    0,   14,
};
#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
static const YYINT yystos[] = {                           0,
  256,  263,   59,  353,  354,  381,  382,  263,   59,  261,
  262,  123,   40,   47,  290,  291,  293,  299,  300,  301,
  303,  305,  323,  331,  332,  333,  334,  335,  336,  338,
  340,  341,   43,   45,  344,  348,  349,  350,  355,  361,
  362,  363,  364,  365,  366,  371,  372,  383,  391,  393,
  383,  383,  355,  357,  398,   40,   40,  344,  361,  371,
  331,  334,  373,   40,   40,   40,   40,  287,  371,   40,
   40,  361,  361,  361,  362,  371,  371,  361,  124,  267,
  280,  281,  283,  284,  285,  286,  287,  288,  289,   63,
  361,  389,  390,   47,   43,   45,   42,   37,  347,   44,
  383,  382,  314,  348,  349,   91,  256,  263,   59,  292,
  294,  295,  296,  297,  298,  302,  306,  307,  321,  322,
  339,  342,  355,  367,  369,  370,  375,  376,  378,  379,
  383,  392,   40,  336,  370,  370,   44,   41,  386,   41,
  386,  337,   41,  355,  359,  355,   40,  355,  355,  359,
   41,  359,  361,  287,  355,  355,  338,  355,  366,  355,
  355,  355,  355,  355,  355,  372,  355,  263,  355,  263,
  355,  314,  361,  361,  361,  361,  361,  361,  263,  387,
  388,  370,  364,  355,  359,  388,   59,  380,  387,  380,
  372,  355,  380,   40,   40,  380,  380,  355,  380,   40,
  380,  125,  369,  369,  401,  263,  399,  370,   40,  356,
  358,  360,  361,  362,  371,  355,  366,  125,  125,  263,
  355,  289,  355,   47,   41,  386,  331,  374,  386,  386,
   41,   41,  361,  386,  386,  371,   58,  361,  263,  363,
  125,   93,  388,   91,  380,  367,  368,  372,  355,  380,
  355,  324,  377,  369,  369,  125,  384,  357,  267,  289,
   63,  361,  389,  390,  386,  124,  282,  285,  314,  386,
  386,  372,  355,   41,  385,  386,  355,  366,  355,  366,
  372,  355,  355,  383,  359,   59,  289,  385,  385,  263,
  369,  400,  263,   41,   40,  356,  366,  372,  356,  356,
  356,  356,  361,  361,  361,  356,  355,  355,  263,  397,
  331,   41,   41,   41,   41,   41,  386,   41,  386,  370,
   93,   59,  388,  372,  342,  289,  357,   58,   41,  386,
   41,  386,  383,  355,  366,  355,  125,  388,  355,  385,
   40,  372,   41,  356,  371,  371,  370,   41,   41,   41,
  368,   59,  396,  355,   41,   41,  125,  385,  388,  369,
   41,  395,  368,  380,  369,  385,  394,  369,
};
#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
static const YYINT yydgoto[] = {                          4,
    5,  123,  210,   54,  211,  145,  212,   40,   41,   42,
   43,   44,   45,  124,  247,  125,  126,   46,   47,   63,
  228,  127,  128,  253,  129,  130,  188,    6,    7,  131,
  257,  275,  226,  189,  181,   92,   93,   49,  132,   50,
  367,  362,  353,  310,   55,  207,  292,  205,
};
static const YYINT yysindex[] = {                       -55,
    0,    0,    0,    0,    0,  -39, 8470,    0,    0,  -66,
  -66,    0, 5698,    0,    0,   32, 1365, -255,    0,    0,
   43,   53,   64,    0,    0,    0,   89,    0,    0,   56,
   90,  107, 1365, 1365, 9050, -114, -114, 1365, 7895,  -37,
    0,  -13,    0,  -29,    0, -264,   40, 5023,  108, -184,
 5023, 5023, 1864,   46, -179,  368, 5698, 1365,  -37, -230,
    0,    0,  120, 5698, 5698, 5698, 3071, 1365, -117, 5698,
 5698, -176, -176, -176,    0,    0,    0,    0, -151, 5698,
    0,    0, 5698, 5698, 5698, 5698, 5698, 5698, -178, 5698,
  -37, 8646, 8734,  866, 1365, 1365, 1365, 1365, 1365,  -74,
 5023, 8470, 5698,    0,    0, 5698,    0,    0,  -74,  -24,
  -24, -178,    0, 8566,  165,  172,  -24,  -24,    0,    0,
 8566,  205, 7895,  -24,    0, 5157,    0, 6011,    0,   -2,
 5023, 9074, 5698,    0, 5352, 5425,    0,    0, 8801,  -19,
 8801,  203,    0, 7895,   96, 7035,  -64, 7107, 7107,  100,
    0,  102,  -37, 1365, 7107, 7107, -114, 9202,    0, 9202,
 9202, 9202, 9202, 9202, 9202,    0, 7182,    0, 8331,    0,
 8240, 1365, -176,  -35,  -35, -176, -176, -176,    0,    3,
 5698, 5486,    0, 7895,  -23,    0,  -74,    0,    3,    0,
  180, 6709,    0, 1771, 5698,    0,    0, 6709,    0, 5698,
    0,    0,    0,  -52, 6011,    0, 6011, 5547, 5698, 8542,
  233, -108,  -37,    0, -252, 7107,  233,    0,    0,    0,
 7895, -178, 7895,    0,    0, 8801,    0,  118, 8801, 8801,
    0,    0,  -37, -210, 8801,    0, 5698,  -37,    0,  -66,
    0,    0,    0, 5698,    0,    0,  236,  -80, 7289,    0,
 7289,    0, 5621,    0,    0,    0,   44,  134, 9126, -178,
 9126,  -37, 8877, 8959, 8983, 1365, 1365, 1365, 9126, 8801,
 8801,    0, 7895,    0,   50, -223, 7374,  256, 7461,  281,
  138, 6781, 7895, 5023,    8,   -5, -178,   50,   50,    0,
    0,  -17,    0,   38, 5698, 9202,    0,    0, 8407, 4219,
  271, 8542,  -37,  -37,  -37, 8542, 6853, 6963,    0,  -66,
    0,    0,    0,    0,    0,    0, 8801,    0, 8801, 5815,
    0,  -74, 5698,  282,  291, -178,  142, 9126,    0,   36,
    0,   36, 5023, 7556,  297, 7641,    0, 1771, 7727,   50,
 5698,    0,   38, 8542,  303,  314, 5889,    0,    0,    0,
  282,  -74, 6011, 7823,    0,    0,    0,   50, 1771,    0,
  -24, 6011,  282,    0,    0,   50, 6011,    0,
};
static const YYINT yyrindex[] = {                      3301,
    0,    0,    0,    0,    0, 3353,  356,    0,    0,    0,
    0,    0,    0,    0,    0,   91,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, 3620,
    0,    0,    0,    0,    0,    0,    0,    0,   67, 2889,
    0, 3155,    0, 3301,    0, 1993,    1,    0,    0,  185,
    0,    0,    0,    0,    0,    0,    0,    0, 2349, 1682,
    0,    0,    0,    0,    0,    0,    0,    0,  500,    0,
    0,  590,  684,  999,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 2983,    0,    0,    0,    0,    0,    0,    0,    0, 9150,
    0,  362,    0,    0,    0,    0,    0,    0, 4816,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  -32,    0,    0,    0,    0,    0,    0, 6084,
    0,  239,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   22,    0,    0,  162,    0,    0,    0,
    0,    0, 2443,    0,    0,    0, 3690, 1047,    0, 1546,
 2490, 3723, 3774, 3784, 3817,    0,    0,    0, 4547,    0,
  856,    0, 1089, 2083, 2177, 1183, 1498, 1588,    0, 4099,
    0,    0,    0,   58,    0,    0, 4816,    0, 4928,    0,
  -22,    0,    0,  305,    0,    0,    0,    0,    0,    0,
    0,    0,    0, 5950,    0,    0,    0,    0,    0, 1011,
  306,    6, 8077,    0, 4755,    0, 7981,    0,    0,    0,
  163,    0,  169,    0,    0,    0,    0,    0,    0,    0,
    0,    0, 2533,    0,    0,    0,    0, 2799,    0, 3249,
    0,    0,    0,    0,    0,    0,    0, 4662,    0,    0,
    0,    0,    0,    0,    0,    0, 5084,    0,    0,    0,
    0, 8153,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   34,    0,  247,    0,    0, 7981,    0, 7981,
    0,    0,   98,    0,    0, 9150,    0, 6157, 6218,    0,
    0,    0,    0,  403,    0,  216,    0,    0,    0,  179,
  635, 1034,   10,   30,   33,  539,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, 6620,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0, 7981,    0,    0,  342,    0, 6279,
    0,    0,    0,  768,    0,    0,    0,    0,    0,    0,
    0, 6620,    0,    0,    0,    0,    0, 6352,  342,    0,
    0,    0,    0,    0,    0, 6425,    0,    0,
};
#if YYBTYACC
static const YYINT yycindex[] = {                         0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,
};
#endif
static const YYINT yygindex[] = {                         0,
    0, 4594,  391, -175,    0,  -11,    0, 4313,  -10,  204,
  293,    0,  -65, -166, -277, 1227,  -28, 4033,  891,    0,
    0,    0,    0,    0,    0,    0,  -85,    0,  349,    7,
    0, -163,  429,  -87, -106, -133, -104,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,
};
#define YYTABLESIZE 9552
static const YYINT yytable[] = {                         98,
  176,   98,  186,    3,   97,   95,   97,   96,  105,   94,
  106,   94,  180,   48,  159,  266,   51,   52,  104,    9,
  137,  180,  135,  136,   75,  190,  105,  246,  193,    3,
  100,  196,  197,  258,  187,  199,  104,  176,  201,  220,
  176,  176,  176,  176,  176,  176,  102,  176,  101,  103,
   99,  137,  220,  322,  150,  152,   12,   59,  176,  176,
  351,  269,   46,  176,  102,   46,   34,  217,   99,  242,
  100,   56,  182,  101,   47,   61,  263,   47,   62,   15,
  243,  363,   64,  104,  105,  288,  140,  289,  100,  137,
  146,  101,   65,  176,  185,  104,  105,   60,   59,  180,
  321,   59,  208,   66,   59,  264,  245,  311,   48,   12,
   34,   15,  250,   34,   46,   59,   59,  104,  105,  327,
   24,  214,   26,  176,  176,   34,   47,  146,   67,   70,
  106,  146,  146,  146,  146,  146,  225,  146,   60,  137,
  231,   60,  232,  137,   60,  137,   71,  133,  146,  146,
   59,  134,   24,  146,   26,   60,   60,  142,  274,  147,
  340,  137,  263,  278,  280,  263,  263,  263,  263,  154,
   99,  246,  263,  267,  294,   15,  268,  137,  316,  323,
   59,  137,  343,  146,  168,  137,  157,  358,  179,   34,
   60,  264,  246,  297,  264,  264,  264,  264,  180,  366,
    1,  264,  180,   78,  194,  180,   78,    2,  287,   79,
  263,  195,   79,  146,  146,  338,   24,   25,   26,   51,
   60,  168,   51,    8,  168,  168,  168,  168,  168,  168,
  105,  168,  285,    2,  180,   38,   51,   51,  179,  264,
  104,   51,  168,  168,  200,  359,  284,  168,  214,  224,
  214,  335,  214,  214,  214,  320,   53,  179,  214,   53,
  206,  176,  176,  176,  180,  239,  227,  176,  102,  222,
  244,  252,   99,   53,   53,  364,  137,  168,   53,   82,
  176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
  176,  176,  100,  176,  286,  101,  313,   82,  220,  176,
  176,  176,   51,  176,  347,  176,  293,  168,  168,   99,
   57,   99,  309,   33,  176,   34,  333,  214,   59,   59,
   59,  315,  274,  176,  325,   15,  326,   34,   34,   34,
  341,  176,  176,  176,  176,  176,  176,  349,  176,   53,
  176,  176,   68,  355,  176,   15,   83,  176,  176,  176,
  176,  146,  146,  146,  356,   32,   59,  146,   60,   60,
   60,   33,   82,   30,   83,   34,   24,   25,   26,   42,
  146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
  146,  146,   30,  146,  240,   38,   24,   25,   26,  146,
  146,  146,  102,  146,  183,  146,   60,    0,    0,    0,
    0,    0,    0,    0,  146,   38,    0,   13,  143,    0,
   33,    0,   34,  146,   14,    0,    0,    0,    0,    0,
    0,  146,  146,  146,  146,  146,  146,    0,  146,   83,
  146,  146,    0,    0,  146,    0,    0,  146,  146,  146,
  146,   51,    0,   84,    0,  168,  168,  168,    0,    0,
    0,  168,    0,    0,    0,    0,    0,    0,   51,   51,
   51,   84,    0,   51,  168,  168,  168,  168,  168,  168,
  168,  168,  168,  168,  168,  168,    0,  168,   53,    0,
    0,  139,  141,  168,  168,  168,    0,  168,    0,  168,
    0,    0,    0,    0,    0,   53,   53,   53,  168,  156,
   53,   82,    0,    0,    0,    0,    0,  168,    0,    0,
    0,    0,    0,    0,    0,  168,  168,  168,  168,  168,
   82,    0,  168,   82,  168,  168,   84,    0,  168,    0,
    0,  168,  168,  168,  168,    0,  156,  259,    0,  156,
  156,  156,  156,  156,  156,    0,  156,    0,    0,    0,
   81,    0,    0,   53,    0,    0,    0,  156,  156,  260,
   15,   16,  156,   17,    0,    0,    0,    0,   83,    0,
   19,   20,    0,   21,    0,   22,  229,  230,    0,   48,
    0,    0,   48,  234,  235,    0,    0,   83,    0,  142,
   83,    0,  156,   23,    0,    0,   48,   48,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,    0,   58,    0,    0,    0,   36,   37,
   38,    0,  156,  156,    0,    0,  142,    0,    0,  142,
  142,  142,  142,  142,  142,    0,  142,    0,    0,  265,
    0,    0,    0,    0,  270,  271,    0,  142,  142,  296,
    0,  299,  142,  300,  301,  302,  276,   15,   16,  306,
   17,    0,   48,    0,    0,   84,    0,   19,   20,    0,
   21,    0,   22,    0,    0,   50,    0,    0,   50,    0,
    0,    0,  142,  141,   84,    0,  141,   84,    0,    0,
   23,    0,   50,   50,    0,    0,    0,   50,   24,   25,
   26,   27,   28,   29,    0,   30,    0,   31,   32,  317,
  319,   35,  142,  142,    0,   36,   37,   38,  344,    0,
  141,    0,    0,  141,  141,  141,  141,  141,  141,    0,
  141,    0,    0,    0,    0,  330,  332,    0,    0,    0,
    0,  141,  141,    0,    0,    0,  141,    0,    0,    0,
    0,    0,    0,    0,    0,  141,    0,    0,   50,    0,
  156,  156,  156,    0,    0,    0,  156,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  141,    0,    0,  156,
  156,  156,  156,  156,  156,  156,    0,  156,  156,  156,
  156,    0,  156,    0,    0,    0,    0,    0,  156,  156,
  156,   48,  156,    0,  156,    0,  141,  141,   49,    0,
    0,   49,    0,  156,    0,    0,    0,    0,    0,    0,
   48,    0,  156,   48,    0,   49,   49,    0,    0,    0,
  156,  156,  156,  156,  156,  156,    0,  156,    0,  156,
  156,    0,    0,  156,    0,    0,  156,  156,  156,  156,
  142,  142,  142,    0,    0,   61,  142,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  142,
  142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
  142,    0,  142,    0,    0,    0,    0,    0,  142,  142,
  142,   49,  142,    0,  142,    0,   61,   50,    0,   61,
    0,    0,   61,  142,    0,   57,    0,    0,   33,    0,
   34,    0,  142,   61,   61,   50,   50,    0,   61,   50,
  142,  142,  142,  142,  142,  142,    0,  142,    0,  142,
  142,    0,    0,  142,    0,    0,    0,  142,  142,  142,
    0,    0,    0,    0,  141,  141,  141,    0,   61,    0,
  141,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  141,  141,  141,  141,  141,  141,  141,
  141,  141,  141,  141,  141,    0,  141,    0,   61,  166,
    0,    0,  141,  141,  141,    0,  141,    0,  141,    0,
    0,    0,    0,    0,    0,    0,    0,  141,  143,    0,
    0,    0,  191,    0,    0,    0,  141,    0,    0,    0,
    0,    0,    0,    0,  141,  141,  141,  141,  141,  141,
    0,  141,    0,  141,  141,    0,    0,  141,    0,    0,
   49,  141,  141,  141,    0,  143,    0,    0,  143,  143,
  143,  143,  143,  143,    0,  143,   70,    0,    0,   49,
    0,   80,   49,    0,   80,    0,  143,  143,    0,    0,
    0,  143,    0,    0,    0,    0,    0,    0,    0,   80,
    0,    0,    0,    0,   81,    0,    0,   81,    0,    0,
    0,    0,    0,    0,  248,    0,    0,   70,  138,    0,
   70,  143,   81,   70,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   70,   70,    0,    0,    0,   70,
    0,    0,  272,    0,    0,    0,   61,   61,   61,    0,
    0,  143,  143,    0,  281,  138,    0,    0,  138,  138,
  138,  138,  138,  138,   80,  138,   61,    0,    0,   70,
    0,    0,    0,    0,    0,    0,  138,  138,    0,    0,
  298,  138,    0,    0,   61,   15,   16,   81,   17,    0,
    0,    0,    0,    0,    0,   19,   20,    0,   21,   70,
   22,    0,    0,    0,    0,    0,    0,  324,    0,  172,
    0,  138,  137,    0,    0,    0,    0,    0,   23,    0,
    0,    0,    0,    0,    0,    0,   24,   25,   26,   27,
   28,   29,    0,   30,    0,   31,   32,    0,    0,   58,
    0,  138,  138,   36,   37,   38,  342,    0,    0,  137,
    0,    0,  137,  137,  137,  137,  137,  137,    0,  137,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  137,  137,    0,    0,    0,  137,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  143,
  143,  143,    0,    0,    0,  143,    0,    0,    0,    0,
    0,    0,    0,   80,    0,  137,    0,    0,  143,  143,
  143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
    0,  143,   80,    0,    0,   80,   81,  143,  143,  143,
    0,  143,    0,  143,    0,  137,  137,   70,   70,   70,
    0,    0,  143,    0,    0,   81,    0,    0,   81,    0,
    0,  143,    0,    0,    0,    0,   70,   70,    0,  143,
  143,  143,  143,  143,  143,    0,  143,    0,  143,  143,
    0,    0,  143,    0,    0,   70,  143,  143,  143,  138,
  138,  138,  203,    0,  204,  138,    0,    0,    0,    0,
    0,  203,  203,    0,    0,    0,    0,    0,  138,  138,
  138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
    0,  138,    0,    0,   70,    0,    0,  138,  138,  138,
    0,  138,    0,  138,    0,    0,    0,    0,    0,    0,
    0,    0,  138,    0,   57,    0,    0,   33,  203,   34,
    0,  138,    0,    0,    0,    0,    0,    0,    0,  138,
  138,  138,  138,  138,  138,    0,  138,    0,  138,  138,
    0,  254,  138,  255,  203,    0,  138,  138,  138,    0,
    0,    0,    0,  137,  137,  137,    0,    0,    0,  137,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  137,  137,  137,  137,  137,  137,  137,  137,
  137,  137,  137,  137,    0,  137,    0,    0,    0,  291,
    0,  137,  137,  137,    0,  137,    0,  137,    0,    0,
    0,    0,    0,    0,    0,    0,  137,  139,    0,    0,
    0,    0,    0,    0,    0,  137,    0,    0,    0,    0,
    0,    0,    0,  137,  137,  137,  137,  137,  137,    0,
  137,    0,  137,  137,    0,    0,  137,    0,    0,    0,
  137,  137,  137,    0,  139,    0,    0,  139,  139,  139,
  139,  139,  139,    0,  139,   63,  203,    0,    0,    0,
    0,    0,    0,    0,    0,  139,  139,    0,    0,    0,
  139,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  203,    0,    0,    0,    0,    0,  360,
    0,    0,    0,    0,    0,    0,   63,  140,  365,   63,
  139,    0,   63,  368,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   63,   63,    0,    0,    0,   63,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  139,  139,    0,    0,  140,    0,    0,  140,  140,  140,
  140,  140,  140,    0,  140,    0,    0,    0,   63,    0,
    0,    0,    0,    0,    0,  140,  140,    0,    0,    0,
  140,    0,    0,    0,   15,   16,    0,   17,    0,    0,
    0,    0,    0,    0,   19,   20,    0,   21,   63,   22,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  140,  175,    0,    0,    0,    0,    0,   23,    0,    0,
    0,    0,    0,    0,    0,   24,   25,   26,   27,   28,
   29,    0,   30,    0,   31,   32,    0,    0,   58,    0,
  140,  140,   36,   37,   38,    0,    0,    0,  175,    0,
    0,  175,  175,  175,  175,  175,  175,    0,  175,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  175,
  175,    0,    0,    0,  175,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  139,  139,
  139,    0,    0,    0,  139,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  175,    0,    0,  139,  139,  139,
  139,  139,  139,  139,  139,  139,  139,  139,  139,    0,
  139,    0,    0,    0,    0,    0,  139,  139,  139,    0,
  139,    0,  139,    0,  175,  175,   63,   63,   63,    0,
   13,  139,    0,   33,    0,   34,    0,   14,    0,    0,
  139,    0,    0,    0,    0,   63,   63,    0,  139,  139,
  139,  139,  139,  139,    0,  139,    0,  139,  139,    0,
    0,  139,    0,    0,   63,  139,  139,  139,  140,  140,
  140,    0,    0,    0,  140,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  140,  140,  140,
  140,  140,  140,  140,  140,  140,  140,  140,  140,    0,
  140,    0,    0,   63,    0,    0,  140,  140,  140,    0,
  140,    0,  140,    0,    0,    0,    0,    0,    0,    0,
    0,  140,    0,   57,  138,    0,   33,  137,   34,    0,
  140,    0,    0,    0,    0,    0,    0,    0,  140,  140,
  140,  140,  140,  140,    0,  140,   90,  140,  140,    0,
    0,  140,    0,    0,    0,  140,  140,  140,    0,    0,
    0,    0,  175,  175,  175,    0,    0,    0,  175,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  175,  175,  175,  175,  175,  175,  175,  175,  175,
  175,  175,  175,    0,  175,    0,    0,    0,    0,    0,
  175,  175,  175,    0,  175,    0,  175,   79,    0,    0,
    0,    0,  175,    0,    0,  175,    0,    0,    0,    0,
    0,    0,    0,    0,  175,    0,    0,    0,    0,    0,
    0,    0,  175,  175,  175,  175,  175,  175,    0,  175,
    0,  175,  175,    0,    0,  175,  107,    0,  175,  175,
    0,  175,  175,  175,  175,  175,  175,  175,    0,  175,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  175,  175,    0,    0,    0,  175,    0,    0,    0,    0,
   15,   16,    0,   17,    0,  112,    0,    0,    0,    0,
   19,   20,    0,   21,    0,   22,    0,    0,    0,    0,
    0,    0,  135,    0,    0,  175,    0,    0,    0,    0,
    0,  119,  120,   23,    0,    0,    0,    0,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,    0,   35,  175,  175,    0,   36,   37,
   38,    0,  135,  135,    0,  135,  135,  135,    0,    0,
   80,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  135,  135,    0,   81,   82,  135,   83,   84,   85,   86,
   87,   88,   89,   15,   16,    0,   17,    0,    0,    0,
    0,    0,    0,   19,   20,    0,   21,    0,   22,    0,
    0,    0,    0,    0,    0,  135,  136,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   23,    0,    0,    0,
    0,    0,    0,    0,   24,   25,   26,   27,   28,   29,
    0,   30,    0,   31,   32,  135,  135,   58,    0,    0,
    0,   36,   37,   38,    0,    0,  136,  136,    0,  136,
  136,  136,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  136,  136,    0,    0,    0,  136,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  175,  175,  175,    0,    0,    0,  175,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  136,
    0,    0,  175,  175,    0,  175,  175,  175,  175,  175,
  175,  175,  175,  175,    0,  175,    0,    0,    0,    0,
    0,  175,  175,  175,    0,  175,    0,  175,    0,  136,
  136,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  175,    0,    0,    0,    0,
    0,    0,    0,  175,  175,  175,  175,  175,  175,    0,
  175,    0,  175,  175,    0,    0,  175,    0,    0,  175,
    0,    0,  175,  135,  135,  135,    0,    0,  149,  135,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  135,  135,  135,  135,  135,  135,  135,  135,
  135,  135,  135,  135,    0,  135,    0,    0,    0,    0,
    0,  135,  135,  135,    0,  135,    0,  135,  149,  149,
    0,    0,  149,    0,    0,    0,  135,    0,    0,    0,
    0,    0,    0,    0,    0,  135,  149,  149,    0,    0,
    0,  149,    0,  135,  135,  135,  135,  135,  135,    0,
  135,    0,  135,  135,    0,    0,  135,    0,    0,    0,
  135,  135,  135,    0,    0,    0,    0,  136,  136,  136,
    0,  149,  155,  136,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  136,  136,  136,  136,
  136,  136,  136,  136,  136,  136,  136,  136,    0,  136,
    0,  149,  149,    0,    0,  136,  136,  136,    0,  136,
    0,  136,  155,  155,    0,    0,  155,    0,    0,   64,
  136,    0,    0,    0,    0,    0,    0,    0,    0,  136,
  155,  155,    0,    0,    0,  155,    0,  136,  136,  136,
  136,  136,  136,    0,  136,    0,  136,  136,    0,    0,
  136,    0,    0,    0,  136,  136,  136,    0,    0,    0,
   64,    0,  154,   64,    0,  155,   64,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   64,   64,    0,
    0,    0,   64,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  155,  155,    0,    0,    0,
    0,    0,  154,  154,    0,    0,  154,    0,    0,    0,
    0,    0,   64,    0,    0,    0,    0,    0,    0,    0,
  154,  154,    0,    0,    0,  154,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  149,
  149,  149,   64,    0,    0,  149,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  154,    0,    0,  149,  149,
  149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
    0,  149,    0,    0,    0,    0,    0,  149,  149,  149,
    0,  149,    0,  149,    0,  154,  154,    0,    0,    0,
    0,    0,  149,    0,    0,    0,    0,    0,    0,    0,
    0,  149,    0,    0,    0,    0,    0,    0,    0,  149,
  149,  149,  149,  149,  149,    0,  149,    0,  149,  149,
    0,    0,  149,    0,    0,    0,  149,  149,  149,    0,
    0,    0,    0,  155,  155,  155,    0,    0,    0,  155,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  155,  155,  155,  155,  155,  155,  155,  155,
  155,  155,  155,  155,    0,  155,    0,    0,    0,    0,
    0,  155,  155,  155,    0,  155,    0,  155,    0,    0,
   64,   64,   64,    0,    0,    0,  155,    0,    0,    0,
    0,    0,    0,    0,    0,  155,    0,    0,    0,   64,
   64,    0,    0,  155,  155,  155,  155,  155,  155,    0,
  155,    0,  155,  155,    0,    0,  155,    0,   64,    0,
  155,  155,  155,  154,  154,  154,    0,    0,  134,  154,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  154,  154,  154,  154,  154,  154,  154,  154,
  154,  154,  154,  154,    0,  154,    0,   64,    0,    0,
    0,  154,  154,  154,    0,  154,    0,  154,  134,  134,
    0,    0,  134,    0,    0,    0,  154,    0,    0,    0,
    0,    0,    0,    0,    0,  154,  134,  134,    0,    0,
    0,  134,    0,  154,  154,  154,  154,  154,  154,    0,
  154,    0,  154,  154,    0,    0,  154,    0,    0,    0,
  154,  154,  154,    0,    0,    0,    0,    0,   77,    0,
    0,  134,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  134,  134,    0,    0,    0,    0,    0,   77,   77,
    0,    0,   77,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   77,   77,    0,    0,
    0,   77,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   77,   75,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   77,   77,    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,  134,
  134,  134,    0,    0,    0,  134,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   75,    0,    0,  134,  134,
  134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
    0,  134,    0,    0,    0,    0,    0,  134,  134,  134,
    0,  134,    0,  134,    0,   75,   75,    0,    0,    0,
   13,  151,  134,   33,    0,   34,    0,   14,    0,    0,
    0,  134,    0,    0,    0,    0,    0,    0,    0,  134,
  134,  134,  134,  134,  134,    0,  134,    0,  134,  134,
    0,    0,  134,    0,    0,    0,  134,  134,  134,   77,
   77,   77,    0,    0,   35,   77,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   77,   77,
    0,   77,   77,   77,   77,   77,   77,   77,   77,   77,
    0,   77,    0,    0,    0,    0,    0,   77,   77,   77,
    0,   77,    0,   77,   35,    0,    0,   35,    0,   35,
    0,   35,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   77,    0,   35,    0,    0,    0,    0,    0,   77,
   77,   77,   77,   77,   77,    0,   77,    0,   77,   77,
    0,    0,   77,    0,    0,    0,   77,   77,   77,    0,
    0,    0,    0,   75,   75,   75,    0,    0,   37,   75,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   75,   75,    0,   75,   75,   75,   75,   75,
   75,   75,   75,   75,    0,   75,    0,    0,    0,    0,
    0,   75,   75,   75,    0,   75,    0,   75,   37,    0,
    0,   37,    0,   37,    0,   37,    0,    0,    0,    0,
   28,    0,    0,    0,    0,   75,    0,   37,    0,    0,
    0,    0,    0,   75,   75,   75,   75,   75,   75,    0,
   75,    0,   75,   75,    0,    0,   75,    0,    0,    0,
   75,   75,   75,    0,    0,    0,    0,    0,    0,    0,
   28,    0,    0,   28,    0,   28,    0,   28,    0,    0,
    0,    0,   29,    0,    0,    0,    0,    0,    0,    0,
   15,   16,    0,   17,    0,    0,    0,    0,    0,    0,
   19,   20,    0,   21,    0,   22,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   29,   23,    0,   29,    0,   29,    0,   29,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,    0,   35,   35,   35,   35,   36,   37,
   38,    0,    0,   28,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   35,   35,    0,   35,    0,    0,
    0,    0,    0,   35,   35,   35,    0,   35,    0,   35,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   29,    0,   35,    0,    0,
    0,    0,    0,    0,    0,   35,   35,   35,   35,   35,
   35,    0,   35,    0,   35,   35,    0,    0,   35,    0,
    0,    0,   35,   35,   35,    0,    0,    0,    0,   37,
   37,   37,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   37,   37,
    0,   37,    0,    0,    0,    0,    0,   37,   37,   37,
    0,   37,    0,   37,    0,    0,    0,    0,    0,    0,
    0,   28,   28,    0,    0,    0,    0,    0,    0,    0,
    0,   37,    0,    0,    0,    0,    0,    0,    0,   37,
   37,   37,   37,   37,   37,    0,   37,    0,   37,   37,
   28,   28,   37,   28,    0,    0,   37,   37,   37,   28,
   28,   28,    0,   28,    0,   28,    0,    0,    0,    0,
    0,    0,    0,   29,   29,    0,    0,    0,    0,  157,
    0,    0,    0,   28,    0,    0,    0,    0,    0,    0,
    0,   28,   28,   28,   28,   28,   28,    0,   28,    0,
   28,   28,   29,   29,   28,   29,    0,    0,   28,   28,
   28,   29,   29,   29,    0,   29,  157,   29,    0,  157,
  157,  157,  157,  157,  157,    0,  157,    0,    0,    0,
    0,    0,    0,    0,    0,   29,    0,  157,  157,    0,
    0,    0,  157,   29,   29,   29,   29,   29,   29,   74,
   29,    0,   29,   29,    0,    0,   29,    0,    0,    0,
   29,   29,   29,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  157,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   65,    0,    0,    0,    0,    0,    0,   74,
   74,    0,   74,   74,   74,    0,   74,    0,    0,    0,
    0,    0,  157,  157,    0,    0,    0,   74,   74,    0,
    0,    0,   74,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   65,    0,    0,   65,    0,    0,   65,
    0,    0,    0,   66,    0,    0,    0,    0,    0,    0,
   65,   65,   74,   67,    0,   65,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   74,   74,   66,   65,   68,   66,    0,    0,
   66,    0,    0,    0,   67,    0,    0,   67,    0,    0,
   67,   66,   66,    0,    0,    0,   66,    0,    0,    0,
    0,   67,   67,    0,    0,   65,   67,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   68,    0,    0,
   68,    0,    0,   68,    0,    0,   66,    0,    0,    0,
    0,    0,    0,    0,   68,   68,   67,    0,    0,   68,
  157,  157,  157,    0,    0,    0,  157,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   66,    0,    0,  157,
  157,  157,  157,  157,  157,  157,   67,  157,  157,   68,
  157,    0,  157,    0,    0,    0,    0,    0,  157,  157,
  157,    0,  157,    0,  157,    0,    0,    0,    0,    0,
    0,    0,    0,  157,    0,    0,    0,    0,    0,   68,
    0,    0,  157,    0,    0,    0,    0,    0,    0,    0,
   74,   74,   74,  157,  157,  157,   74,  157,    0,  157,
  157,    0,    0,  157,    0,    0,  157,  157,  157,   74,
   74,    0,   74,   74,   74,   74,   74,   74,   74,    0,
   74,    0,   74,   65,   65,   65,    0,    0,   74,   74,
   74,    0,   74,    0,   74,    0,    0,    0,    0,    0,
    0,    0,   65,   65,    0,    0,    0,    0,    0,    0,
    0,    0,   74,    0,    0,    0,    0,    0,    0,    0,
    0,   65,    0,   74,   74,   74,    0,   74,    0,   74,
   74,    0,    0,   74,   66,   66,   66,   74,   74,    0,
    0,    0,    0,    0,   67,   67,   67,    0,    0,   60,
    0,    0,    0,   66,   66,    0,    0,    0,    0,    0,
   65,    0,   69,   67,   67,   60,   60,   60,   76,   77,
   60,   60,   66,    0,    0,    0,    0,   68,   68,   68,
    0,    0,   67,    0,    0,   60,    0,    0,    0,    0,
   60,    0,    0,    0,    0,    0,   68,   68,    0,    0,
   60,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   66,    0,    0,    0,   68,    0,    0,    0,    0,
    0,   67,    0,    0,    0,    0,   60,   60,   60,   60,
   60,   60,    0,    0,    0,    0,    0,    0,   27,   27,
    0,   27,    0,   27,    0,   27,    0,    0,    0,    0,
    0,    0,    0,    0,   68,   60,    0,   27,    0,    0,
    0,    0,    0,    0,  215,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   60,    0,   60,    0,
   60,   60,    0,    0,    0,    0,   60,   60,   60,  236,
   60,    0,   60,   60,   60,   60,   60,   60,    0,   60,
    0,   60,    0,   60,   60,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   60,    0,    0,    0,
    0,   27,    0,   27,   60,    0,    0,    0,    0,    0,
   60,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   60,    0,    0,    0,    0,    0,   60,    0,
    0,    0,    0,   60,    0,   60,    0,    0,   57,    0,
    0,   33,    0,   34,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   60,    0,   60,    0,    0,    0,    0,    0,    0,
    0,  215,    0,  215,    0,  215,  215,  215,   60,   60,
   60,  215,    0,    0,    0,   60,    0,    0,    0,   60,
    0,   60,    0,    0,   60,   60,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   60,   59,
    0,   60,   60,   60,   60,    0,    0,    0,   60,   60,
   60,    0,    0,    0,    0,   72,   73,   74,    0,    0,
   78,   91,    0,    0,   27,    0,    0,    0,    0,    0,
  215,    0,  345,    0,  346,   91,   60,    0,   60,    0,
   74,   60,    0,    0,    0,    0,   60,    0,    0,    0,
  153,    0,    0,    0,    0,    0,   60,    0,   27,   27,
   27,   27,   27,   27,   27,   27,   27,    0,   27,   27,
   27,   27,    0,   27,   27,   27,  173,  174,  175,  176,
  177,  178,    0,    0,    0,    0,    0,    0,    0,   27,
   27,   27,   27,    0,    0,    0,    0,    0,    0,   27,
   27,   27,   27,   27,   27,   91,   27,   27,   27,   27,
   27,    0,   27,    0,  213,    0,   27,   27,   27,    0,
    0,    0,    0,    0,    0,    0,   91,    0,   91,    0,
   91,   91,    0,    0,    0,    0,  233,   91,   91,    0,
   91,    0,   91,   91,   91,   91,   91,   91,    0,   91,
    0,   91,    0,   91,  238,  259,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   91,    0,    0,    0,
    0,    0,    0,    0,   91,    0,    0,  260,   15,   16,
   91,   17,    0,    0,    0,    0,    0,    0,   19,   20,
    0,   21,  262,   22,    0,    0,    0,    0,   91,    0,
    0,    0,    0,   91,    0,   91,    0,    0,    0,    0,
    0,   23,    0,    0,    0,    0,   62,    0,    0,   24,
   25,   26,   27,   28,   29,    0,   30,    0,   31,   32,
    0,   91,   58,   91,    0,    0,   36,   37,   38,    0,
    0,  213,    0,  213,    0,  213,  213,  213,  303,  304,
  305,  213,    0,    0,    0,   91,    0,   62,    0,   91,
   62,   91,    0,   62,   91,   91,    0,    0,    0,    0,
   39,    0,    0,    0,   62,   62,   53,    0,  262,   62,
    0,  262,  262,  262,  262,    0,    0,    0,  262,   91,
   91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   62,
  213,    0,    0,    0,    0,    0,   91,    0,   91,  144,
  146,   91,    0,    0,    0,    0,  262,  148,  149,  144,
  144,    0,    0,  155,  156,    0,   91,    0,    0,   62,
    0,    0,    0,  158,    0,    0,  160,  161,  162,  163,
  164,  165,    0,  167,    0,  169,  171,    0,    0,    0,
    0,    0,    0,    0,    0,   39,  184,    0,  176,  144,
    0,  176,    0,  176,  176,    0,  176,  192,  176,    0,
    0,    0,    0,    0,  198,    0,    0,    0,    0,    0,
  176,    0,    0,    0,  176,    0,  216,    0,    0,    0,
    0,    0,  221,    0,  223,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   39,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  176,    0,    0,  249,    0,
    0,  175,    0,  251,  175,  175,  175,  175,  175,  175,
    0,  175,   53,    0,    0,    0,    0,   62,   62,   62,
    0,    0,  175,  175,    0,    0,    0,  175,    0,  273,
    0,    0,  277,  279,    0,    0,   62,   62,  282,    0,
  283,    0,    0,    0,    0,    0,    0,  144,    0,    0,
    0,    0,    0,    0,    0,   62,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   26,    0,    0,   26,    0,
   26,    0,   26,  307,  308,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   26,    0,    0,    0,  175,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   53,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  334,    0,  336,    0,    0,    0,  339,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  176,    0,
    0,    0,    0,    0,  354,    0,    0,    0,   26,    0,
   26,  176,  176,    0,  176,  176,  176,  176,  176,  176,
    0,  176,  176,    0,  176,    0,    0,    0,    0,    0,
    0,  176,  176,    0,  176,    0,  176,  107,    0,    0,
  107,    0,  107,    0,  107,  176,    0,    0,    0,    0,
    0,    0,    0,    0,  176,    0,  107,    0,    0,    0,
    0,    0,  176,  176,  176,  176,  176,  176,    0,  176,
    0,  176,  176,    0,    0,  176,    0,    0,  176,  176,
  176,  176,    0,    0,    0,    0,    0,  175,    0,    0,
    0,  175,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  175,  175,  175,    0,    0,  175,
    0,    0,    0,  175,  175,  175,    0,  175,    0,    0,
  107,    0,  107,    0,  175,  175,    0,  175,    0,  175,
    0,    0,   13,    0,    0,   33,    0,   34,    0,   14,
    0,   26,    0,    0,    0,    0,    0,  175,    0,    0,
    0,  109,    0,    0,    0,  175,  175,  175,  175,  175,
  175,    0,  175,    0,  175,  175,    0,    0,  175,    0,
    0,  175,    0,    0,  175,   26,   26,   26,   26,   26,
   26,   26,   26,   26,    0,   26,   26,   26,   26,    0,
   26,   26,   26,  119,    0,    0,  119,    0,  119,    0,
  119,    0,    0,    0,    0,    0,   26,   26,   26,   26,
    0,    0,  119,    0,    0,   12,   26,   26,   26,   26,
   26,   26,    0,   26,   26,   26,   26,   26,    0,   26,
    0,    0,    0,   26,   26,   26,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  107,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   13,    0,    0,   33,
    0,   34,    0,   14,    0,    0,  119,    0,  119,    0,
    0,    0,    0,    0,    0,  109,    0,  107,  107,  107,
  107,  107,  107,  107,  107,  107,    0,  107,  107,  107,
  107,    0,  107,  107,  107,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  107,  107,
  107,  107,    0,    0,    0,    0,    0,    0,  107,  107,
  107,  107,  107,  107,    0,  107,  107,  107,  107,  107,
    0,  107,    0,    0,    0,  107,  107,  107,  107,   12,
    0,  202,    0,    0,    0,  108,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   15,   16,  110,   17,  111,  112,  113,  114,
  115,    0,   19,   20,  116,   21,    0,   22,  117,  118,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  119,
    0,    0,    0,  119,  120,   23,    0,    0,    0,    0,
    0,    0,    0,   24,   25,   26,   27,   28,   29,    0,
   30,  121,   31,   32,  122,    0,   35,    0,    0,    0,
   36,   37,   38,  119,  119,  119,  119,  119,  119,  119,
  119,  119,    0,  119,  119,  119,  119,    0,  119,  119,
  119,   13,    0,    0,   33,    0,   34,    0,   14,    0,
    0,    0,    0,    0,  119,  119,  119,  119,    0,    0,
  109,    0,  107,    0,  119,  119,  119,  119,  119,  119,
    0,  119,  119,  119,  119,  119,    0,  119,    0,    0,
    0,  119,  119,  119,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   15,   16,  110,   17,
  111,  112,  113,  114,  115,    0,   19,   20,  116,   21,
    0,   22,  117,  118,   13,    0,    0,   33,    0,   34,
    0,   14,    0,    0,   12,    0,  218,  119,  120,   23,
    0,    0,    0,  109,    0,    0,    0,   24,   25,   26,
   27,   28,   29,    0,   30,  121,   31,   32,  122,    0,
   35,    0,    0,    0,   36,   37,   38,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   13,    0,    0,   33,    0,
   34,    0,   14,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  109,    0,    0,   12,    0,  219,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   13,    0,    0,   33,
    0,   34,    0,   14,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  109,    0,  107,   12,    0,
  241,    0,    0,    0,    0,    0,    0,    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,  110,   17,  111,  112,  113,  114,  115,
    0,   19,   20,  116,   21,    0,   22,  117,  118,    0,
   13,    0,    0,   33,    0,   34,    0,   14,    0,   12,
    0,  256,  119,  120,   23,    0,    0,    0,    0,  109,
  107,    0,   24,   25,   26,   27,   28,   29,    0,   30,
  121,   31,   32,  122,    0,   35,    0,    0,    0,   36,
   37,   38,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   15,   16,  110,   17,  111,  112,
  113,  114,  115,    0,   19,   20,  116,   21,    0,   22,
  117,  118,    0,    0,    0,    0,    0,   13,    0,    0,
   33,  107,   34,   12,   14,  119,  120,   23,    0,    0,
    0,    0,    0,    0,    0,   24,   25,   26,   27,   28,
   29,    0,   30,  121,   31,   32,  122,    0,   35,    0,
    0,    0,   36,   37,   38,   15,   16,  110,   17,  111,
  112,  113,  114,  115,    0,   19,   20,  116,   21,    0,
   22,  117,  118,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  107,    0,    0,    0,  119,  120,   23,    0,
    0,    0,    0,    0,    0,    0,   24,   25,   26,   27,
   28,   29,    0,   30,  121,   31,   32,  122,    0,   35,
    0,    0,    0,   36,   37,   38,   15,   16,  110,   17,
  111,  112,  113,  114,  115,    0,   19,   20,  116,   21,
    0,   22,  117,  118,   13,    0,    0,   33,    0,   34,
    0,   14,    0,    0,    0,    0,    0,  119,  120,   23,
    0,    0,    0,  109,    0,    0,  107,   24,   25,   26,
   27,   28,   29,  290,   30,  121,   31,   32,  122,    0,
   35,    0,    0,    0,   36,   37,   38,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   15,   16,  110,   17,  111,  112,  113,  114,  115,    0,
   19,   20,  116,   21,    0,   22,  117,  118,   13,    0,
    0,   33,    0,   34,    0,   14,    0,   12,    0,  337,
    0,  119,  120,   23,    0,    0,    0,  109,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,  121,
   31,   32,  122,    0,   35,    0,    0,    0,   36,   37,
   38,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   15,   16,  118,
   17,    0,  118,    0,  118,    0,  118,   19,   20,    0,
   21,    0,   22,    0,    0,    0,    0,    0,  118,    0,
    0,   12,    0,  357,    0,    0,    0,    0,    0,    0,
   23,    0,    0,    0,    0,    0,    0,    0,   24,   25,
   26,   27,   28,   29,    0,   30,    0,   31,   32,    0,
    0,   35,    0,    0,    0,   36,   37,   38,    0,    0,
   13,    0,    0,   33,    0,   34,    0,   14,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  109,
  107,    0,  118,    0,  118,    0,    0,    0,    0,    0,
    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,  110,   17,  111,  112,
  113,  114,  115,    0,   19,   20,  116,   21,    0,   22,
  117,  118,    0,  111,    0,    0,  111,    0,  111,    0,
  111,    0,    0,   12,    0,  119,  120,   23,    0,    0,
    0,    0,  111,    0,  107,   24,   25,   26,   27,   28,
   29,    0,   30,  121,   31,   32,  122,    0,   35,    0,
    0,    0,   36,   37,   38,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   15,   16,
  110,   17,  111,  112,  113,  114,  115,    0,   19,   20,
  116,   21,    0,   22,  117,  118,   21,    0,    0,   21,
    0,   21,    0,   21,    0,  118,  111,    0,    0,  119,
  120,   23,    0,    0,    0,   21,    0,    0,    0,   24,
   25,   26,   27,   28,   29,    0,   30,  121,   31,   32,
  122,    0,   35,    0,    0,    0,   36,   37,   38,  118,
  118,  118,  118,  118,  118,  118,  118,  118,    0,  118,
  118,  118,  118,    0,  118,  118,  118,  186,    0,    0,
  186,    0,  186,    0,  186,    0,  107,    0,    0,    0,
  118,  118,  118,    0,    0,    0,  186,    0,    0,   21,
  118,  118,  118,  118,  118,  118,    0,  118,  118,  118,
  118,  118,    0,  118,    0,    0,    0,  118,  118,  118,
   15,   16,  110,   17,  111,  112,  113,  114,  115,    0,
   19,   20,  116,   21,    0,   22,  117,  118,   17,    0,
    0,   17,    0,   17,    0,   17,    0,    0,    0,    0,
    0,  119,  120,   23,    0,    0,    0,   17,    0,  111,
  186,   24,   25,   26,   27,   28,   29,    0,   30,  121,
   31,   32,  122,    0,   35,    0,    0,    0,   36,   37,
   38,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  111,  111,  111,  111,  111,  111,  111,
  111,  111,    0,  111,  111,  111,  111,    0,  111,  111,
  111,   15,    0,    0,   15,    0,   15,    0,   15,    0,
    0,   17,    0,    0,  111,  111,  111,    0,    0,    0,
   15,    0,   21,    0,  111,  111,  111,  111,  111,  111,
    0,  111,  111,  111,  111,  111,    0,  111,    0,    0,
    0,  111,  111,  111,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   21,   21,   21,   21,
   21,   21,   21,   21,   21,    0,   21,   21,   21,   21,
    0,   21,   21,   21,   13,    0,    0,   13,    0,   13,
    0,   13,    0,  186,   15,    0,    0,   21,   21,   21,
    0,    0,    0,   13,    0,    0,    0,   21,   21,   21,
   21,   21,   21,    0,   21,   21,   21,   21,   21,    0,
   21,    0,    0,    0,   21,   21,   21,  186,  186,  186,
  186,  186,  186,  186,  186,  186,    0,  186,  186,  186,
  186,    0,  186,  186,  186,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   17,    0,    0,    0,  186,  186,
  186,    0,    0,    0,    0,    0,    0,   13,  186,  186,
  186,  186,  186,  186,    0,  186,  186,  186,  186,  186,
    0,  186,    0,    0,    0,  186,  186,  186,   17,   17,
   17,   17,   17,   17,   17,   17,   17,    0,   17,   17,
   17,   17,    0,   17,   17,   17,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   17,
   17,   17,    0,    0,    0,    0,    0,   15,    0,   17,
   17,   17,   17,   17,   17,    0,   17,   17,   17,   17,
   17,    0,   17,    0,    0,    0,   17,   17,   17,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   15,   15,   15,   15,   15,   15,   15,   15,   15,
    0,   15,   15,   15,   15,    0,   15,   15,   15,   26,
   26,    0,   26,    0,   26,    0,   26,    0,    0,    0,
    0,    0,   15,   15,   15,    0,    0,    0,    0,    0,
   13,    0,   15,   15,   15,   15,   15,   15,    0,   15,
   15,   15,   15,   15,    0,   15,    0,    0,    0,   15,
   15,   15,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   13,   13,   13,   13,   13,   13,
   13,   13,   13,    0,   13,   13,   13,   13,    0,   13,
   13,   13,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   13,   13,   13,   57,    0,
    0,   33,    0,   34,    0,   13,   13,   13,   13,   13,
   13,    0,   13,   13,   13,   13,   13,  187,   13,    0,
    0,   90,   13,   13,   13,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   57,  318,    0,   33,  137,   34,    0,    0,    0,    0,
    0,    0,   79,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   90,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   26,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   57,  329,    0,   33,  137,   34,    0,    0,
    0,    0,    0,    0,   79,    0,    0,    0,    0,   26,
   26,    0,   26,    0,   26,   90,    0,    0,    0,   26,
   26,    0,   26,    0,   26,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   26,   26,   26,    0,    0,    0,    0,    0,    0,    0,
   26,   26,   26,   26,   26,   26,    0,   26,    0,   26,
   26,    0,    0,   26,    0,    0,    0,   26,   26,   26,
    0,  179,    0,    0,    0,   80,   79,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   81,   82,
    0,   83,   84,   85,   86,   87,   88,   89,   15,   16,
    0,   17,   57,  331,    0,   33,  137,   34,   19,   20,
    0,   21,    0,   22,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   90,    0,    0,    0,    0,
    0,   23,    0,    0,    0,    0,    0,    0,    0,   24,
   25,   26,   27,   28,   29,    0,   30,   80,   31,   32,
    0,    0,   58,    0,    0,    0,   36,   37,   38,    0,
   81,   82,    0,   83,   84,   85,   86,   87,   88,   89,
   15,   16,    0,   17,   57,  138,    0,   33,    0,   34,
   19,   20,    0,   21,    0,   22,   79,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   90,    0,    0,
    0,    0,    0,   23,    0,    0,    0,    0,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,   80,
   31,   32,    0,    0,   58,    0,    0,    0,   36,   37,
   38,    0,   81,   82,    0,   83,   84,   85,   86,   87,
   88,   89,   15,   16,    0,   17,   57,    0,    0,   33,
  137,   34,   19,   20,    0,   21,    0,   22,   79,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   90,
    0,    0,    0,    0,    0,   23,    0,    0,    0,    0,
    0,    0,    0,   24,   25,   26,   27,   28,   29,    0,
   30,    0,   31,   32,    0,    0,   58,    0,    0,    0,
   36,   37,   38,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   57,    0,    0,   33,    0,   34,    0,    0,   80,
   79,    0,    0,    0,    0,    0,    0,    0,    0,  237,
    0,    0,   81,   82,   90,   83,   84,   85,   86,   87,
   88,   89,   15,   16,    0,   17,    0,    0,    0,    0,
    0,    0,   19,   20,    0,   21,    0,   22,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   23,    0,    0,    0,    0,
    0,    0,    0,   24,   25,   26,   27,   28,   29,    0,
   30,   80,   31,   32,    0,   79,   58,    0,    0,    0,
   36,   37,   38,    0,   81,   82,    0,   83,   84,   85,
   86,   87,   88,   89,   15,   16,    0,   17,   57,  274,
    0,   33,    0,   34,   19,   20,    0,   21,    0,   22,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   90,    0,    0,    0,    0,    0,   23,    0,    0,
    0,    0,    0,    0,    0,   24,   25,   26,   27,   28,
   29,    0,   30,   80,   31,   32,    0,    0,   58,    0,
    0,    0,   36,   37,   38,    0,   81,   82,    0,   83,
   84,   85,   86,   87,   88,   89,   15,   16,    0,   17,
    0,    0,    0,    0,    0,    0,   19,   20,    0,   21,
    0,   22,   79,   57,  312,    0,   33,    0,   34,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   23,
    0,    0,    0,    0,    0,    0,   90,   24,   25,   26,
   27,   28,   29,    0,   30,    0,   31,   32,   80,    0,
   58,    0,    0,    0,   36,   37,   38,    0,    0,    0,
    0,   81,   82,    0,   83,   84,   85,   86,   87,   88,
   89,   15,   16,    0,   17,    0,    0,    0,    0,    0,
    0,   19,   20,    0,   21,    0,   22,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   79,    0,    0,
   57,  314,    0,   33,   23,   34,    0,    0,    0,    0,
    0,    0,   24,   25,   26,   27,   28,   29,    0,   30,
    0,   31,   32,   90,    0,   58,    0,    0,    0,   36,
   37,   38,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   80,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   81,   82,
    0,   83,   84,   85,   86,   87,   88,   89,   15,   16,
    0,   17,    0,    0,   79,    0,    0,    0,   19,   20,
    0,   21,    0,   22,    0,   57,  348,    0,   33,    0,
   34,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   23,    0,    0,    0,    0,    0,    0,   90,   24,
   25,   26,   27,   28,   29,    0,   30,    0,   31,   32,
    0,    0,   58,    0,    0,    0,   36,   37,   38,    0,
   80,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   81,   82,    0,   83,   84,   85,   86,
   87,   88,   89,   15,   16,    0,   17,    0,    0,    0,
    0,    0,    0,   19,   20,    0,   21,    0,   22,   79,
   57,  350,    0,   33,    0,   34,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   23,    0,    0,    0,
    0,    0,    0,   90,   24,   25,   26,   27,   28,   29,
    0,   30,    0,   31,   32,    0,    0,   58,    0,    0,
    0,   36,   37,   38,    0,    0,    0,   80,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   81,   82,    0,   83,   84,   85,   86,   87,   88,   89,
   15,   16,    0,   17,    0,    0,    0,    0,    0,    0,
   19,   20,    0,   21,   79,   22,   57,    0,    0,   33,
    0,   34,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   23,    0,  352,    0,    0,    0,   90,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,    0,   58,    0,    0,    0,   36,   37,
   38,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   80,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   81,   82,    0,   83,   84,
   85,   86,   87,   88,   89,   15,   16,    0,   17,    0,
   79,    0,    0,    0,    0,   19,   20,    0,   21,    0,
   22,    0,   57,  361,    0,   33,    0,   34,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   23,    0,
    0,    0,    0,    0,    0,   90,   24,   25,   26,   27,
   28,   29,    0,   30,    0,   31,   32,    0,    0,   58,
    0,    0,    0,   36,   37,   38,    0,   80,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   81,   82,    0,   83,   84,   85,   86,   87,   88,   89,
   15,   16,    0,   17,   57,    0,    0,   33,    0,   34,
   19,   20,    0,   21,    0,   22,   79,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   90,    0,    0,
    0,    0,    0,   23,    0,    0,    0,    0,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,    0,   58,    0,    0,    0,   36,   37,
   38,    0,    0,   80,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   81,   82,    0,   83,
   84,   85,   86,   87,   88,   89,   15,   16,   79,   17,
   93,    0,    0,   93,    0,   93,   19,   20,    0,   21,
    0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   93,    0,    0,    0,    0,    0,   23,
    0,    0,    0,    0,    0,    0,    0,   24,   25,   26,
   27,   28,   29,    0,   30,    0,   31,   32,    0,    0,
   58,    0,    0,    0,   36,   37,   38,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   80,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   81,   82,   93,   83,   84,   85,   86,   87,
   88,   89,   15,   16,    0,   17,   58,   58,    0,    0,
   58,    0,   19,   20,    0,   21,    0,   22,    0,    0,
    0,    0,    0,    0,   58,   58,    0,    0,    0,   58,
    0,    0,    0,    0,    0,   23,    0,    0,    0,    0,
    0,    0,    0,   24,   25,   26,   27,   28,   29,    0,
   30,   80,   31,   32,    0,    0,   58,    0,    0,    0,
   36,   37,   38,    0,   81,   82,    0,   83,   84,   85,
   86,   87,   88,   89,   15,   16,    0,   17,    0,    0,
    0,    0,   56,   56,   19,   20,   56,   21,    0,   22,
   58,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   56,   56,    0,    0,    0,   56,    0,   23,    0,    0,
    0,    0,    0,    0,    0,   24,   25,   26,   27,   28,
   29,    0,   30,    0,   31,   32,    0,    0,   58,    0,
    0,    0,   36,   37,   38,    0,    0,   93,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   93,   93,    0,   93,   93,   93,   93,   93,   93,   93,
   93,   93,    0,   93,    0,    0,   56,    0,    0,   57,
   93,   93,   33,   93,   34,   93,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   93,    0,    0,    0,    0,    0,    0,
    0,   93,   93,   93,   93,   93,   93,    0,   93,    0,
   93,   93,    0,    0,   93,    0,    0,    0,   93,   93,
   93,    0,    0,    0,    0,    0,    0,    0,    0,   58,
    0,    0,    0,   58,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   58,   58,   58,    0,
    0,   58,    0,   79,    0,   58,   58,   58,    0,   58,
   57,    0,    0,   33,    0,   34,   58,   58,    0,   58,
    0,   58,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
    0,    0,    0,    0,    0,    0,    0,   58,   58,   58,
   58,   58,   58,    0,   58,   56,   58,   58,    0,   56,
   58,    0,    0,    0,   58,   58,   58,    0,    0,    0,
    0,    0,   56,   56,   56,    0,    0,   56,    0,    0,
    0,   56,   56,   56,    0,   56,   57,    0,    0,   33,
    0,   34,   56,   56,   79,   56,    0,   56,    0,    0,
    0,    0,    0,    0,  328,    0,    0,    0,    0,  261,
    0,    0,    0,    0,    0,   56,    0,    0,    0,    0,
    0,    0,    0,   56,   56,   56,   56,   56,   56,    0,
   56,    0,   56,   56,    0,    0,   56,    0,    0,    0,
   56,   56,   56,    0,    0,    0,   80,    0,    0,   13,
    0,    0,   33,    0,   34,    0,   14,    0,    0,   81,
    0,    0,   83,   84,   85,   86,   87,   88,   89,   15,
   16,    0,   17,    0,    0,    0,    0,    0,    0,   19,
   20,    0,   21,    0,   22,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   23,    0,    0,    0,    0,    0,    0,    0,
   24,   25,   26,   27,   28,   29,    0,   30,    0,   31,
   32,   57,    0,   58,   33,    0,   34,   36,   37,   38,
    0,    0,   12,    0,    0,    0,    0,   80,    0,    0,
    0,    0,    0,    0,  261,   13,    0,    0,   33,    0,
   34,    0,   14,   83,   84,   85,   86,   87,   88,   89,
   15,   16,    0,   17,  187,    0,    0,    0,    0,    0,
   19,   20,    0,   21,    0,   22,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   23,    0,    0,    0,    0,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,    0,
   31,   32,    0,  259,   58,    0,    0,    0,   36,   37,
   38,    0,    0,    0,    0,   13,   81,   82,   33,    0,
   34,    0,   14,    0,    0,  260,   15,   16,    0,   17,
    0,    0,    0,    0,    0,    0,   19,   20,    0,   21,
    0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   23,
   10,   11,    0,    0,    0,    0,    0,   24,   25,   26,
   27,   28,   29,    0,   30,    0,   31,   32,    0,    0,
   58,    0,    0,    0,   36,   37,   38,    0,    0,   15,
   16,    0,   17,    0,    0,    0,    0,    0,   18,   19,
   20,    0,   21,   13,   22,    0,   33,    0,   34,    0,
   14,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   23,    0,    0,    0,    0,    0,    0,    0,
   24,   25,   26,   27,   28,   29,    0,   30,  259,   31,
   32,    0,    0,   35,    0,    0,    0,   36,   37,   38,
    0,   81,   82,    0,    0,    0,    0,    0,  179,    0,
  260,   15,   16,    0,   17,    0,    0,    0,    0,    0,
   13,   19,   20,   33,   21,   34,   22,   14,    0,    0,
    0,    0,    0,    0,    0,   15,   16,    0,   17,    0,
    0,    0,    0,    0,   23,   19,   20,    0,   21,    0,
   22,    0,   24,   25,   26,   27,   28,   29,    0,   30,
    0,   31,   32,    0,    0,   58,    0,    0,   23,   36,
   37,   38,    0,    0,    0,    0,   24,   25,   26,   27,
   28,   29,    0,   30,    0,   31,   32,    0,  168,   35,
    0,    0,    0,   36,   37,   38,  295,    0,    0,   33,
    0,   34,    0,   14,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   15,   16,    0,   17,    0,
    0,    0,    0,    0,    0,   19,   20,    0,   21,    0,
   22,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   23,    0,
    0,    0,    0,    0,    0,    0,   24,   25,   26,   27,
   28,   29,    0,   30,    0,   31,   32,    0,    0,   35,
    0,    0,    0,   36,   37,   38,  170,    0,  295,    0,
    0,   33,    0,   34,    0,   14,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  295,   15,   16,   33,   17,   34,    0,   14,
    0,    0,    0,   19,   20,    0,   21,    0,   22,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   23,    0,    0,    0,
    0,    0,    0,  220,   24,   25,   26,   27,   28,   29,
    0,   30,    0,   31,   32,    0,    0,   35,    0,    0,
    0,   36,   37,   38,    0,    0,    0,    0,    0,   57,
   15,   16,   33,   17,   34,    0,   14,    0,    0,    0,
   19,   20,    0,   21,    0,   22,    0,    0,    0,    0,
    0,    0,    0,  209,    0,    0,   33,    0,   34,    0,
   14,    0,    0,   23,    0,    0,    0,    0,    0,    0,
    0,   24,   25,   26,   27,   28,   29,    0,   30,  168,
   31,   32,    0,    0,   35,    0,    0,    0,   36,   37,
   38,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  295,   15,   16,   33,   17,
   34,    0,   14,    0,    0,    0,   19,   20,    0,   21,
    0,   22,    0,    0,    0,    0,    0,    0,    0,   26,
    0,    0,   26,    0,   26,    0,   26,    0,    0,   23,
    0,    0,    0,    0,    0,    0,    0,   24,   25,   26,
   27,   28,   29,    0,   30,    0,   31,   32,    0,    0,
   35,  170,    0,    0,   36,   37,   38,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   57,    0,    0,   33,  220,   34,    0,   15,   16,
    0,   17,    0,    0,    0,    0,    0,    0,   19,   20,
    0,   21,    0,   22,    0,    0,    0,    0,    0,    0,
    0,    0,   15,   16,    0,   17,    0,    0,    0,    0,
    0,   23,   19,   20,    0,   21,    0,   22,    0,   24,
   25,   26,   27,   28,   29,    0,   30,    0,   31,   32,
    0,    0,   35,    0,    0,   23,   36,   37,   38,    0,
    0,    0,    0,   24,   25,   26,   27,   28,   29,    0,
   30,    0,   31,   32,    0,    0,   35,    0,    0,    0,
   36,   37,   38,    0,    0,    0,    0,    0,    0,   15,
   16,    0,   17,    0,    0,    0,    0,    0,    0,   19,
   20,    0,   21,    0,   22,    0,    0,    0,    0,    0,
    0,    0,    0,   15,   16,    0,   17,    0,    0,    0,
    0,    0,   23,   19,   20,    0,   21,    0,   22,    0,
   24,   25,   26,   27,   28,   29,    0,   30,    0,   31,
   32,    0,    0,   35,    0,    0,   23,   36,   37,   38,
    0,    0,    0,    0,   24,   25,   26,   27,   28,   29,
    0,   30,    0,   31,   32,   15,   16,   35,   17,    0,
    0,   36,   37,   38,    0,   19,   20,    0,   21,    0,
   22,    0,    0,    0,    0,    0,    0,    0,    0,   26,
   26,    0,   26,    0,    0,    0,    0,    0,   23,   26,
   26,    0,   26,    0,   26,    0,   24,   25,   26,   27,
   28,   29,    0,   30,    0,   31,   32,    0,    0,   35,
    0,    0,   26,   36,   37,   38,    0,    0,    0,    0,
   26,   26,   26,   26,   26,   26,    0,   26,    0,   26,
   26,   15,   16,   26,   17,    0,    0,   26,   26,   26,
    0,   19,   20,    0,   21,    0,   22,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   23,    0,    0,    0,    0,    0,
    0,    0,   24,   25,   26,   27,   28,   29,    0,    0,
    0,   31,   32,    0,    0,   58,    0,    0,    0,   36,
   37,   38,
};
static const YYINT yycheck[] = {                         37,
    0,   37,  109,   59,   42,   43,   42,   45,   41,   47,
   91,   47,  100,    7,   80,  124,   10,   11,   41,   59,
   44,  109,   51,   52,   35,  111,   59,  194,  114,   59,
   44,  117,  118,  209,   59,  121,   59,   37,  124,  263,
   40,   41,   42,   43,   44,   45,   41,   47,   42,  314,
   41,   44,  263,   59,   66,   67,  123,    0,   58,   59,
  338,  314,   41,   63,   59,   44,    0,  133,   59,   93,
   41,   40,  101,   41,   41,  331,  210,   44,  334,  290,
  187,  359,   40,  348,  349,  249,   41,  251,   59,   44,
    0,   59,   40,   93,  106,  348,  349,    0,   41,  187,
   93,   44,  131,   40,   47,  210,  192,  331,  102,  123,
   44,  290,  198,   47,   93,   58,   59,  348,  349,  295,
  331,  132,  333,  123,  124,   59,   93,   37,   40,   40,
   91,   41,   42,   43,   44,   45,   41,   47,   41,   44,
   41,   44,   41,   44,   47,   44,   40,   40,   58,   59,
   93,  336,  331,   63,  333,   58,   59,  337,   41,   40,
  324,   44,  296,  229,  230,  299,  300,  301,  302,  287,
  347,  338,  306,  282,   41,  290,  285,   44,   41,  286,
  123,   44,   41,   93,    0,   44,  338,  351,  263,  123,
   93,  296,  359,  259,  299,  300,  301,  302,  286,  363,
  256,  306,   41,   41,   40,   44,   44,  263,  289,   41,
  344,   40,   44,  123,  124,  322,  331,  332,  333,   41,
  123,   37,   44,  263,   40,   41,   42,   43,   44,   45,
  263,   47,  244,  263,  322,  350,   58,   59,  263,  344,
  263,   63,   58,   59,   40,  352,  240,   63,  259,   47,
  261,  317,  263,  264,  265,  284,   41,  263,  269,   44,
  263,  261,  262,  263,  352,  263,  331,  267,  263,  289,
   91,  324,  263,   58,   59,  361,   44,   93,   63,   41,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  290,  291,  263,  293,   59,  263,   41,   59,  263,  299,
  300,  301,  124,  303,  333,  305,  263,  123,  124,  347,
   40,  347,  263,   43,  314,   45,  310,  328,  261,  262,
  263,   41,   41,  323,  342,  290,  289,  261,  262,  263,
   40,  331,  332,  333,  334,  335,  336,   41,  338,  124,
  340,  341,  287,   41,  344,  290,   41,  347,  348,  349,
  350,  261,  262,  263,   41,    0,  299,  267,  261,  262,
  263,    0,  124,   59,   59,  299,  331,  332,  333,  123,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   41,  293,  181,  350,  331,  332,  333,  299,
  300,  301,   44,  303,  102,  305,  299,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  314,  350,   -1,   40,   41,   -1,
   43,   -1,   45,  323,   47,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,  124,
  340,  341,   -1,   -1,  344,   -1,   -1,  347,  348,  349,
  350,  263,   -1,   41,   -1,  261,  262,  263,   -1,   -1,
   -1,  267,   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,
  282,   59,   -1,  285,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,  290,  291,   -1,  293,  263,   -1,
   -1,   53,   54,  299,  300,  301,   -1,  303,   -1,  305,
   -1,   -1,   -1,   -1,   -1,  280,  281,  282,  314,    0,
  285,  263,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  282,   -1,  338,  285,  340,  341,  124,   -1,  344,   -1,
   -1,  347,  348,  349,  350,   -1,   37,  267,   -1,   40,
   41,   42,   43,   44,   45,   -1,   47,   -1,   -1,   -1,
  280,   -1,   -1,  338,   -1,   -1,   -1,   58,   59,  289,
  290,  291,   63,  293,   -1,   -1,   -1,   -1,  263,   -1,
  300,  301,   -1,  303,   -1,  305,  148,  149,   -1,   41,
   -1,   -1,   44,  155,  156,   -1,   -1,  282,   -1,    0,
  285,   -1,   93,  323,   -1,   -1,   58,   59,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,  123,  124,   -1,   -1,   37,   -1,   -1,   40,
   41,   42,   43,   44,   45,   -1,   47,   -1,   -1,  211,
   -1,   -1,   -1,   -1,  216,  217,   -1,   58,   59,  259,
   -1,  261,   63,  263,  264,  265,  228,  290,  291,  269,
  293,   -1,  124,   -1,   -1,  263,   -1,  300,  301,   -1,
  303,   -1,  305,   -1,   -1,   41,   -1,   -1,   44,   -1,
   -1,   -1,   93,    0,  282,   -1,  258,  285,   -1,   -1,
  323,   -1,   58,   59,   -1,   -1,   -1,   63,  331,  332,
  333,  334,  335,  336,   -1,  338,   -1,  340,  341,  281,
  282,  344,  123,  124,   -1,  348,  349,  350,  328,   -1,
   37,   -1,   -1,   40,   41,   42,   43,   44,   45,   -1,
   47,   -1,   -1,   -1,   -1,  307,  308,   -1,   -1,   -1,
   -1,   58,   59,   -1,   -1,   -1,   63,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  327,   -1,   -1,  124,   -1,
  261,  262,  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,  280,
  281,  282,  283,  284,  285,  286,   -1,  288,  289,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,
  301,  263,  303,   -1,  305,   -1,  123,  124,   41,   -1,
   -1,   44,   -1,  314,   -1,   -1,   -1,   -1,   -1,   -1,
  282,   -1,  323,  285,   -1,   58,   59,   -1,   -1,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,   -1,   -1,  344,   -1,   -1,  347,  348,  349,  350,
  261,  262,  263,   -1,   -1,    0,  267,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  280,
  281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,
  301,  124,  303,   -1,  305,   -1,   41,  263,   -1,   44,
   -1,   -1,   47,  314,   -1,   40,   -1,   -1,   43,   -1,
   45,   -1,  323,   58,   59,  281,  282,   -1,   63,  285,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,
   -1,   -1,   -1,   -1,  261,  262,  263,   -1,   93,   -1,
  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  280,  281,  282,  283,  284,  285,  286,
  287,  288,  289,  290,  291,   -1,  293,   -1,  123,   89,
   -1,   -1,  299,  300,  301,   -1,  303,   -1,  305,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  314,    0,   -1,
   -1,   -1,  112,   -1,   -1,   -1,  323,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,
   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,
  263,  348,  349,  350,   -1,   37,   -1,   -1,   40,   41,
   42,   43,   44,   45,   -1,   47,    0,   -1,   -1,  282,
   -1,   41,  285,   -1,   44,   -1,   58,   59,   -1,   -1,
   -1,   63,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
   -1,   -1,   -1,   -1,   41,   -1,   -1,   44,   -1,   -1,
   -1,   -1,   -1,   -1,  194,   -1,   -1,   41,    0,   -1,
   44,   93,   59,   47,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   58,   59,   -1,   -1,   -1,   63,
   -1,   -1,  222,   -1,   -1,   -1,  261,  262,  263,   -1,
   -1,  123,  124,   -1,  234,   37,   -1,   -1,   40,   41,
   42,   43,   44,   45,  124,   47,  281,   -1,   -1,   93,
   -1,   -1,   -1,   -1,   -1,   -1,   58,   59,   -1,   -1,
  260,   63,   -1,   -1,  299,  290,  291,  124,  293,   -1,
   -1,   -1,   -1,   -1,   -1,  300,  301,   -1,  303,  123,
  305,   -1,   -1,   -1,   -1,   -1,   -1,  287,   -1,  314,
   -1,   93,    0,   -1,   -1,   -1,   -1,   -1,  323,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,
  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,
   -1,  123,  124,  348,  349,  350,  326,   -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,  261,
  262,  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  263,   -1,   93,   -1,   -1,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,  282,   -1,   -1,  285,  263,  299,  300,  301,
   -1,  303,   -1,  305,   -1,  123,  124,  261,  262,  263,
   -1,   -1,  314,   -1,   -1,  282,   -1,   -1,  285,   -1,
   -1,  323,   -1,   -1,   -1,   -1,  280,  281,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,  299,  348,  349,  350,  261,
  262,  263,  126,   -1,  128,  267,   -1,   -1,   -1,   -1,
   -1,  135,  136,   -1,   -1,   -1,   -1,   -1,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   -1,   -1,  338,   -1,   -1,  299,  300,  301,
   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  314,   -1,   40,   -1,   -1,   43,  182,   45,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,  205,  344,  207,  208,   -1,  348,  349,  350,   -1,
   -1,   -1,   -1,  261,  262,  263,   -1,   -1,   -1,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,  253,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  314,    0,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   37,   -1,   -1,   40,   41,   42,
   43,   44,   45,   -1,   47,    0,  320,   -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,  347,   -1,   -1,   -1,   -1,   -1,  353,
   -1,   -1,   -1,   -1,   -1,   -1,   41,    0,  362,   44,
   93,   -1,   47,  367,   -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,
  123,  124,   -1,   -1,   37,   -1,   -1,   40,   41,   42,
   43,   44,   45,   -1,   47,   -1,   -1,   -1,   93,   -1,
   -1,   -1,   -1,   -1,   -1,   58,   59,   -1,   -1,   -1,
   63,   -1,   -1,   -1,  290,  291,   -1,  293,   -1,   -1,
   -1,   -1,   -1,   -1,  300,  301,   -1,  303,  123,  305,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   93,    0,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,
  123,  124,  348,  349,  350,   -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,  261,  262,
  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   93,   -1,   -1,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,  290,  291,   -1,
  293,   -1,   -1,   -1,   -1,   -1,  299,  300,  301,   -1,
  303,   -1,  305,   -1,  123,  124,  261,  262,  263,   -1,
   40,  314,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,
  323,   -1,   -1,   -1,   -1,  280,  281,   -1,  331,  332,
  333,  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,
   -1,  344,   -1,   -1,  299,  348,  349,  350,  261,  262,
  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,  290,  291,   -1,
  293,   -1,   -1,  338,   -1,   -1,  299,  300,  301,   -1,
  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  314,   -1,   40,   41,   -1,   43,   44,   45,   -1,
  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,
  333,  334,  335,  336,   -1,  338,   63,  340,  341,   -1,
   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,
   -1,   -1,  261,  262,  263,   -1,   -1,   -1,  267,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,
  299,  300,  301,   -1,  303,   -1,  305,  124,   -1,   -1,
   -1,   -1,    0,   -1,   -1,  314,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
   -1,  340,  341,   -1,   -1,  344,  256,   -1,  347,   37,
   -1,  350,   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,
  290,  291,   -1,  293,   -1,  295,   -1,   -1,   -1,   -1,
  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,    0,   -1,   -1,   93,   -1,   -1,   -1,   -1,
   -1,  321,  322,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,  123,  124,   -1,  348,  349,
  350,   -1,   40,   41,   -1,   43,   44,   45,   -1,   -1,
  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   58,   59,   -1,  280,  281,   63,  283,  284,  285,  286,
  287,  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,
   -1,   -1,   -1,  300,  301,   -1,  303,   -1,  305,   -1,
   -1,   -1,   -1,   -1,   -1,   93,    0,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,
   -1,  338,   -1,  340,  341,  123,  124,  344,   -1,   -1,
   -1,  348,  349,  350,   -1,   -1,   40,   41,   -1,   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,  261,  262,  263,   -1,   -1,   -1,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,
   -1,   -1,  280,  281,   -1,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   -1,  123,
  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,  347,
   -1,   -1,  350,  261,  262,  263,   -1,   -1,    0,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   40,   41,
   -1,   -1,   44,   -1,   -1,   -1,  314,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   58,   59,   -1,   -1,
   -1,   63,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,  261,  262,  263,
   -1,   93,    0,  267,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,  290,  291,   -1,  293,
   -1,  123,  124,   -1,   -1,  299,  300,  301,   -1,  303,
   -1,  305,   40,   41,   -1,   -1,   44,   -1,   -1,    0,
  314,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,
   58,   59,   -1,   -1,   -1,   63,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   41,   -1,    0,   44,   -1,   93,   47,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   58,   59,   -1,
   -1,   -1,   63,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  123,  124,   -1,   -1,   -1,
   -1,   -1,   40,   41,   -1,   -1,   44,   -1,   -1,   -1,
   -1,   -1,   93,   -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,  261,
  262,  263,  123,   -1,   -1,  267,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,  301,
   -1,  303,   -1,  305,   -1,  123,  124,   -1,   -1,   -1,
   -1,   -1,  314,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,
   -1,   -1,   -1,  261,  262,  263,   -1,   -1,   -1,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   -1,   -1,
  261,  262,  263,   -1,   -1,   -1,  314,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,  280,
  281,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,  299,   -1,
  348,  349,  350,  261,  262,  263,   -1,   -1,    0,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,  338,   -1,   -1,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   40,   41,
   -1,   -1,   44,   -1,   -1,   -1,  314,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   58,   59,   -1,   -1,
   -1,   63,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,   -1,    0,   -1,
   -1,   93,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  123,  124,   -1,   -1,   -1,   -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,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   93,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -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,  261,
  262,  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,  301,
   -1,  303,   -1,  305,   -1,  123,  124,   -1,   -1,   -1,
   40,   41,  314,   43,   -1,   45,   -1,   47,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,  261,
  262,  263,   -1,   -1,    0,  267,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,
   -1,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,  301,
   -1,  303,   -1,  305,   40,   -1,   -1,   43,   -1,   45,
   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   59,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,
   -1,   -1,   -1,  261,  262,  263,   -1,   -1,    0,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,   -1,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,  299,  300,  301,   -1,  303,   -1,  305,   40,   -1,
   -1,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,
    0,   -1,   -1,   -1,   -1,  323,   -1,   59,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   40,   -1,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,
   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,   -1,
  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   40,  323,   -1,   43,   -1,   45,   -1,   47,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,  261,  262,  263,  348,  349,
  350,   -1,   -1,  123,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  290,  291,   -1,  293,   -1,   -1,
   -1,   -1,   -1,  299,  300,  301,   -1,  303,   -1,  305,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  123,   -1,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,
   -1,   -1,  348,  349,  350,   -1,   -1,   -1,   -1,  261,
  262,  263,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  290,  291,
   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,  301,
   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  261,  262,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
  290,  291,  344,  293,   -1,   -1,  348,  349,  350,  299,
  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  261,  262,   -1,   -1,   -1,   -1,    0,
   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,  290,  291,  344,  293,   -1,   -1,  348,  349,
  350,  299,  300,  301,   -1,  303,   37,  305,   -1,   40,
   41,   42,   43,   44,   45,   -1,   47,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   58,   59,   -1,
   -1,   -1,   63,  331,  332,  333,  334,  335,  336,    0,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   93,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   40,
   41,   -1,   43,   44,   45,   -1,   47,   -1,   -1,   -1,
   -1,   -1,  123,  124,   -1,   -1,   -1,   58,   59,   -1,
   -1,   -1,   63,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   41,   -1,   -1,   44,   -1,   -1,   47,
   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,
   58,   59,   93,    0,   -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,  123,  124,   41,   93,    0,   44,   -1,   -1,
   47,   -1,   -1,   -1,   41,   -1,   -1,   44,   -1,   -1,
   47,   58,   59,   -1,   -1,   -1,   63,   -1,   -1,   -1,
   -1,   58,   59,   -1,   -1,  123,   63,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   41,   -1,   -1,
   44,   -1,   -1,   47,   -1,   -1,   93,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   58,   59,   93,   -1,   -1,   63,
  261,  262,  263,   -1,   -1,   -1,  267,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,   -1,  280,
  281,  282,  283,  284,  285,  286,  123,  288,  289,   93,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,
  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  314,   -1,   -1,   -1,   -1,   -1,  123,
   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  261,  262,  263,  334,  335,  336,  267,  338,   -1,  340,
  341,   -1,   -1,  344,   -1,   -1,  347,  348,  349,  280,
  281,   -1,  283,  284,  285,  286,  287,  288,  289,   -1,
  291,   -1,  293,  261,  262,  263,   -1,   -1,  299,  300,
  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  299,   -1,  334,  335,  336,   -1,  338,   -1,  340,
  341,   -1,   -1,  344,  261,  262,  263,  348,  349,   -1,
   -1,   -1,   -1,   -1,  261,  262,  263,   -1,   -1,   17,
   -1,   -1,   -1,  280,  281,   -1,   -1,   -1,   -1,   -1,
  338,   -1,   30,  280,  281,   33,   34,   35,   36,   37,
   38,   39,  299,   -1,   -1,   -1,   -1,  261,  262,  263,
   -1,   -1,  299,   -1,   -1,   53,   -1,   -1,   -1,   -1,
   58,   -1,   -1,   -1,   -1,   -1,  280,  281,   -1,   -1,
   68,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  338,   -1,   -1,   -1,  299,   -1,   -1,   -1,   -1,
   -1,  338,   -1,   -1,   -1,   -1,   94,   95,   96,   97,
   98,   99,   -1,   -1,   -1,   -1,   -1,   -1,   40,   41,
   -1,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  338,  123,   -1,   59,   -1,   -1,
   -1,   -1,   -1,   -1,  132,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  144,   -1,  146,   -1,
  148,  149,   -1,   -1,   -1,   -1,  154,  155,  156,  157,
  158,   -1,  160,  161,  162,  163,  164,  165,   -1,  167,
   -1,  169,   -1,  171,  172,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  184,   -1,   -1,   -1,
   -1,  123,   -1,  125,  192,   -1,   -1,   -1,   -1,   -1,
  198,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  210,   -1,   -1,   -1,   -1,   -1,  216,   -1,
   -1,   -1,   -1,  221,   -1,  223,   -1,   -1,   40,   -1,
   -1,   43,   -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  249,   -1,  251,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  259,   -1,  261,   -1,  263,  264,  265,  266,  267,
  268,  269,   -1,   -1,   -1,  273,   -1,   -1,   -1,  277,
   -1,  279,   -1,   -1,  282,  283,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  296,   17,
   -1,  299,  300,  301,  302,   -1,   -1,   -1,  306,  307,
  308,   -1,   -1,   -1,   -1,   33,   34,   35,   -1,   -1,
   38,   39,   -1,   -1,  256,   -1,   -1,   -1,   -1,   -1,
  328,   -1,  330,   -1,  332,   53,  334,   -1,  336,   -1,
   58,  339,   -1,   -1,   -1,   -1,  344,   -1,   -1,   -1,
   68,   -1,   -1,   -1,   -1,   -1,  354,   -1,  290,  291,
  292,  293,  294,  295,  296,  297,  298,   -1,  300,  301,
  302,  303,   -1,  305,  306,  307,   94,   95,   96,   97,
   98,   99,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  321,
  322,  323,  324,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,  123,  338,  339,  340,  341,
  342,   -1,  344,   -1,  132,   -1,  348,  349,  350,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  144,   -1,  146,   -1,
  148,  149,   -1,   -1,   -1,   -1,  154,  155,  156,   -1,
  158,   -1,  160,  161,  162,  163,  164,  165,   -1,  167,
   -1,  169,   -1,  171,  172,  267,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  184,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  192,   -1,   -1,  289,  290,  291,
  198,  293,   -1,   -1,   -1,   -1,   -1,   -1,  300,  301,
   -1,  303,  210,  305,   -1,   -1,   -1,   -1,  216,   -1,
   -1,   -1,   -1,  221,   -1,  223,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,    0,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,  249,  344,  251,   -1,   -1,  348,  349,  350,   -1,
   -1,  259,   -1,  261,   -1,  263,  264,  265,  266,  267,
  268,  269,   -1,   -1,   -1,  273,   -1,   41,   -1,  277,
   44,  279,   -1,   47,  282,  283,   -1,   -1,   -1,   -1,
    7,   -1,   -1,   -1,   58,   59,   13,   -1,  296,   63,
   -1,  299,  300,  301,  302,   -1,   -1,   -1,  306,  307,
  308,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,
  328,   -1,   -1,   -1,   -1,   -1,  334,   -1,  336,   56,
   57,  339,   -1,   -1,   -1,   -1,  344,   64,   65,   66,
   67,   -1,   -1,   70,   71,   -1,  354,   -1,   -1,  123,
   -1,   -1,   -1,   80,   -1,   -1,   83,   84,   85,   86,
   87,   88,   -1,   90,   -1,   92,   93,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  102,  103,   -1,   37,  106,
   -1,   40,   -1,   42,   43,   -1,   45,  114,   47,   -1,
   -1,   -1,   -1,   -1,  121,   -1,   -1,   -1,   -1,   -1,
   59,   -1,   -1,   -1,   63,   -1,  133,   -1,   -1,   -1,
   -1,   -1,  139,   -1,  141,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  181,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  195,   -1,
   -1,   37,   -1,  200,   40,   41,   42,   43,   44,   45,
   -1,   47,  209,   -1,   -1,   -1,   -1,  261,  262,  263,
   -1,   -1,   58,   59,   -1,   -1,   -1,   63,   -1,  226,
   -1,   -1,  229,  230,   -1,   -1,  280,  281,  235,   -1,
  237,   -1,   -1,   -1,   -1,   -1,   -1,  244,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  299,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   43,   -1,
   45,   -1,   47,  270,  271,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,  124,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  295,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  317,   -1,  319,   -1,   -1,   -1,  323,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  267,   -1,
   -1,   -1,   -1,   -1,  341,   -1,   -1,   -1,  123,   -1,
  125,  280,  281,   -1,  283,  284,  285,  286,  287,  288,
   -1,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,
   -1,  300,  301,   -1,  303,   -1,  305,   40,   -1,   -1,
   43,   -1,   45,   -1,   47,  314,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  323,   -1,   59,   -1,   -1,   -1,
   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
   -1,  340,  341,   -1,   -1,  344,   -1,   -1,  347,  348,
  349,  350,   -1,   -1,   -1,   -1,   -1,  263,   -1,   -1,
   -1,  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  280,  281,  282,   -1,   -1,  285,
   -1,   -1,   -1,  289,  290,  291,   -1,  293,   -1,   -1,
  123,   -1,  125,   -1,  300,  301,   -1,  303,   -1,  305,
   -1,   -1,   40,   -1,   -1,   43,   -1,   45,   -1,   47,
   -1,  256,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,
   -1,   59,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,
   -1,  347,   -1,   -1,  350,  290,  291,  292,  293,  294,
  295,  296,  297,  298,   -1,  300,  301,  302,  303,   -1,
  305,  306,  307,   40,   -1,   -1,   43,   -1,   45,   -1,
   47,   -1,   -1,   -1,   -1,   -1,  321,  322,  323,  324,
   -1,   -1,   59,   -1,   -1,  123,  331,  332,  333,  334,
  335,  336,   -1,  338,  339,  340,  341,  342,   -1,  344,
   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  256,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   43,
   -1,   45,   -1,   47,   -1,   -1,  123,   -1,  125,   -1,
   -1,   -1,   -1,   -1,   -1,   59,   -1,  290,  291,  292,
  293,  294,  295,  296,  297,  298,   -1,  300,  301,  302,
  303,   -1,  305,  306,  307,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  321,  322,
  323,  324,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,
  333,  334,  335,  336,   -1,  338,  339,  340,  341,  342,
   -1,  344,   -1,   -1,   -1,  348,  349,  350,  256,  123,
   -1,  125,   -1,   -1,   -1,  263,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  290,  291,  292,  293,  294,  295,  296,  297,
  298,   -1,  300,  301,  302,  303,   -1,  305,  306,  307,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,
   -1,   -1,   -1,  321,  322,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,  339,  340,  341,  342,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,  290,  291,  292,  293,  294,  295,  296,
  297,  298,   -1,  300,  301,  302,  303,   -1,  305,  306,
  307,   40,   -1,   -1,   43,   -1,   45,   -1,   47,   -1,
   -1,   -1,   -1,   -1,  321,  322,  323,  324,   -1,   -1,
   59,   -1,  256,   -1,  331,  332,  333,  334,  335,  336,
   -1,  338,  339,  340,  341,  342,   -1,  344,   -1,   -1,
   -1,  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  290,  291,  292,  293,
  294,  295,  296,  297,  298,   -1,  300,  301,  302,  303,
   -1,  305,  306,  307,   40,   -1,   -1,   43,   -1,   45,
   -1,   47,   -1,   -1,  123,   -1,  125,  321,  322,  323,
   -1,   -1,   -1,   59,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,  339,  340,  341,  342,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   43,   -1,
   45,   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   59,   -1,   -1,  123,   -1,  125,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   43,
   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   59,   -1,  256,  123,   -1,
  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  290,  291,  292,  293,  294,  295,  296,  297,  298,
   -1,  300,  301,  302,  303,   -1,  305,  306,  307,   -1,
   40,   -1,   -1,   43,   -1,   45,   -1,   47,   -1,  123,
   -1,  125,  321,  322,  323,   -1,   -1,   -1,   -1,   59,
  256,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
  339,  340,  341,  342,   -1,  344,   -1,   -1,   -1,  348,
  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  290,  291,  292,  293,  294,  295,
  296,  297,  298,   -1,  300,  301,  302,  303,   -1,  305,
  306,  307,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,
   43,  256,   45,  123,   47,  321,  322,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,  339,  340,  341,  342,   -1,  344,   -1,
   -1,   -1,  348,  349,  350,  290,  291,  292,  293,  294,
  295,  296,  297,  298,   -1,  300,  301,  302,  303,   -1,
  305,  306,  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  256,   -1,   -1,   -1,  321,  322,  323,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,
  335,  336,   -1,  338,  339,  340,  341,  342,   -1,  344,
   -1,   -1,   -1,  348,  349,  350,  290,  291,  292,  293,
  294,  295,  296,  297,  298,   -1,  300,  301,  302,  303,
   -1,  305,  306,  307,   40,   -1,   -1,   43,   -1,   45,
   -1,   47,   -1,   -1,   -1,   -1,   -1,  321,  322,  323,
   -1,   -1,   -1,   59,   -1,   -1,  256,  331,  332,  333,
  334,  335,  336,  263,  338,  339,  340,  341,  342,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  290,  291,  292,  293,  294,  295,  296,  297,  298,   -1,
  300,  301,  302,  303,   -1,  305,  306,  307,   40,   -1,
   -1,   43,   -1,   45,   -1,   47,   -1,  123,   -1,  125,
   -1,  321,  322,  323,   -1,   -1,   -1,   59,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,  339,
  340,  341,  342,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  290,  291,   40,
  293,   -1,   43,   -1,   45,   -1,   47,  300,  301,   -1,
  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   59,   -1,
   -1,  123,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,
  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,
  333,  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,
   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,
   40,   -1,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
  256,   -1,  123,   -1,  125,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  290,  291,  292,  293,  294,  295,
  296,  297,  298,   -1,  300,  301,  302,  303,   -1,  305,
  306,  307,   -1,   40,   -1,   -1,   43,   -1,   45,   -1,
   47,   -1,   -1,  123,   -1,  321,  322,  323,   -1,   -1,
   -1,   -1,   59,   -1,  256,  331,  332,  333,  334,  335,
  336,   -1,  338,  339,  340,  341,  342,   -1,  344,   -1,
   -1,   -1,  348,  349,  350,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  290,  291,
  292,  293,  294,  295,  296,  297,  298,   -1,  300,  301,
  302,  303,   -1,  305,  306,  307,   40,   -1,   -1,   43,
   -1,   45,   -1,   47,   -1,  256,  123,   -1,   -1,  321,
  322,  323,   -1,   -1,   -1,   59,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,  339,  340,  341,
  342,   -1,  344,   -1,   -1,   -1,  348,  349,  350,  290,
  291,  292,  293,  294,  295,  296,  297,  298,   -1,  300,
  301,  302,  303,   -1,  305,  306,  307,   40,   -1,   -1,
   43,   -1,   45,   -1,   47,   -1,  256,   -1,   -1,   -1,
  321,  322,  323,   -1,   -1,   -1,   59,   -1,   -1,  123,
  331,  332,  333,  334,  335,  336,   -1,  338,  339,  340,
  341,  342,   -1,  344,   -1,   -1,   -1,  348,  349,  350,
  290,  291,  292,  293,  294,  295,  296,  297,  298,   -1,
  300,  301,  302,  303,   -1,  305,  306,  307,   40,   -1,
   -1,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,
   -1,  321,  322,  323,   -1,   -1,   -1,   59,   -1,  256,
  123,  331,  332,  333,  334,  335,  336,   -1,  338,  339,
  340,  341,  342,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  290,  291,  292,  293,  294,  295,  296,
  297,  298,   -1,  300,  301,  302,  303,   -1,  305,  306,
  307,   40,   -1,   -1,   43,   -1,   45,   -1,   47,   -1,
   -1,  123,   -1,   -1,  321,  322,  323,   -1,   -1,   -1,
   59,   -1,  256,   -1,  331,  332,  333,  334,  335,  336,
   -1,  338,  339,  340,  341,  342,   -1,  344,   -1,   -1,
   -1,  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  290,  291,  292,  293,
  294,  295,  296,  297,  298,   -1,  300,  301,  302,  303,
   -1,  305,  306,  307,   40,   -1,   -1,   43,   -1,   45,
   -1,   47,   -1,  256,  123,   -1,   -1,  321,  322,  323,
   -1,   -1,   -1,   59,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,  339,  340,  341,  342,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,  290,  291,  292,
  293,  294,  295,  296,  297,  298,   -1,  300,  301,  302,
  303,   -1,  305,  306,  307,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  256,   -1,   -1,   -1,  321,  322,
  323,   -1,   -1,   -1,   -1,   -1,   -1,  123,  331,  332,
  333,  334,  335,  336,   -1,  338,  339,  340,  341,  342,
   -1,  344,   -1,   -1,   -1,  348,  349,  350,  290,  291,
  292,  293,  294,  295,  296,  297,  298,   -1,  300,  301,
  302,  303,   -1,  305,  306,  307,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  321,
  322,  323,   -1,   -1,   -1,   -1,   -1,  256,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,  339,  340,  341,
  342,   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  290,  291,  292,  293,  294,  295,  296,  297,  298,
   -1,  300,  301,  302,  303,   -1,  305,  306,  307,   40,
   41,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
   -1,   -1,  321,  322,  323,   -1,   -1,   -1,   -1,   -1,
  256,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
  339,  340,  341,  342,   -1,  344,   -1,   -1,   -1,  348,
  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  290,  291,  292,  293,  294,  295,
  296,  297,  298,   -1,  300,  301,  302,  303,   -1,  305,
  306,  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  321,  322,  323,   40,   -1,
   -1,   43,   -1,   45,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,  339,  340,  341,  342,   59,  344,   -1,
   -1,   63,  348,  349,  350,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   40,   41,   -1,   43,   44,   45,   -1,   -1,   -1,   -1,
   -1,   -1,  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   63,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -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,   40,   41,   -1,   43,   44,   45,   -1,   -1,
   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,  290,
  291,   -1,  293,   -1,  295,   63,   -1,   -1,   -1,  300,
  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  321,  322,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,
   -1,  263,   -1,   -1,   -1,  267,  124,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,
   -1,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   40,   41,   -1,   43,   44,   45,  300,  301,
   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   63,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,  267,  340,  341,
   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,
  280,  281,   -1,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   -1,  293,   40,   41,   -1,   43,   -1,   45,
  300,  301,   -1,  303,   -1,  305,  124,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   63,   -1,   -1,
   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,  267,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,  280,  281,   -1,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   40,   -1,   -1,   43,
   44,   45,  300,  301,   -1,  303,   -1,  305,  124,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   63,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   40,   -1,   -1,   43,   -1,   45,   -1,   -1,  267,
  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   58,
   -1,   -1,  280,  281,   63,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,   -1,  300,  301,   -1,  303,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,  267,  340,  341,   -1,  124,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,  280,  281,   -1,  283,  284,  285,
  286,  287,  288,  289,  290,  291,   -1,  293,   40,   41,
   -1,   43,   -1,   45,  300,  301,   -1,  303,   -1,  305,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   63,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,  267,  340,  341,   -1,   -1,  344,   -1,
   -1,   -1,  348,  349,  350,   -1,  280,  281,   -1,  283,
  284,  285,  286,  287,  288,  289,  290,  291,   -1,  293,
   -1,   -1,   -1,   -1,   -1,   -1,  300,  301,   -1,  303,
   -1,  305,  124,   40,   41,   -1,   43,   -1,   45,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,
   -1,   -1,   -1,   -1,   -1,   -1,   63,  331,  332,  333,
  334,  335,  336,   -1,  338,   -1,  340,  341,  267,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,  280,  281,   -1,  283,  284,  285,  286,  287,  288,
  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,
   -1,  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,
   40,   41,   -1,   43,  323,   45,   -1,   -1,   -1,   -1,
   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
   -1,  340,  341,   63,   -1,  344,   -1,   -1,   -1,  348,
  349,  350,   -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,   -1,  280,  281,
   -1,  283,  284,  285,  286,  287,  288,  289,  290,  291,
   -1,  293,   -1,   -1,  124,   -1,   -1,   -1,  300,  301,
   -1,  303,   -1,  305,   -1,   40,   41,   -1,   43,   -1,
   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   63,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,   -1,
  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  280,  281,   -1,  283,  284,  285,  286,
  287,  288,  289,  290,  291,   -1,  293,   -1,   -1,   -1,
   -1,   -1,   -1,  300,  301,   -1,  303,   -1,  305,  124,
   40,   41,   -1,   43,   -1,   45,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,
   -1,   -1,   -1,   63,  331,  332,  333,  334,  335,  336,
   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,
   -1,  348,  349,  350,   -1,   -1,   -1,  267,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  280,  281,   -1,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,   -1,
  300,  301,   -1,  303,  124,  305,   40,   -1,   -1,   43,
   -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  323,   -1,   59,   -1,   -1,   -1,   63,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  280,  281,   -1,  283,  284,
  285,  286,  287,  288,  289,  290,  291,   -1,  293,   -1,
  124,   -1,   -1,   -1,   -1,  300,  301,   -1,  303,   -1,
  305,   -1,   40,   41,   -1,   43,   -1,   45,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,   -1,
   -1,   -1,   -1,   -1,   -1,   63,  331,  332,  333,  334,
  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,
   -1,   -1,   -1,  348,  349,  350,   -1,  267,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  280,  281,   -1,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   -1,  293,   40,   -1,   -1,   43,   -1,   45,
  300,  301,   -1,  303,   -1,  305,  124,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   63,   -1,   -1,
   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,  267,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,   -1,  283,
  284,  285,  286,  287,  288,  289,  290,  291,  124,  293,
   40,   -1,   -1,   43,   -1,   45,  300,  301,   -1,  303,
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   63,   -1,   -1,   -1,   -1,   -1,  323,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  267,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  280,  281,  124,  283,  284,  285,  286,  287,
  288,  289,  290,  291,   -1,  293,   40,   41,   -1,   -1,
   44,   -1,  300,  301,   -1,  303,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   58,   59,   -1,   -1,   -1,   63,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,  267,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,  280,  281,   -1,  283,  284,  285,
  286,  287,  288,  289,  290,  291,   -1,  293,   -1,   -1,
   -1,   -1,   40,   41,  300,  301,   44,  303,   -1,  305,
  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   58,   59,   -1,   -1,   -1,   63,   -1,  323,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,
  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,
   -1,   -1,  348,  349,  350,   -1,   -1,  267,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  280,  281,   -1,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   -1,  293,   -1,   -1,  124,   -1,   -1,   40,
  300,  301,   43,  303,   45,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  263,
   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  280,  281,  282,   -1,
   -1,  285,   -1,  124,   -1,  289,  290,  291,   -1,  293,
   40,   -1,   -1,   43,   -1,   45,  300,  301,   -1,  303,
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,  263,  340,  341,   -1,  267,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,   -1,  280,  281,  282,   -1,   -1,  285,   -1,   -1,
   -1,  289,  290,  291,   -1,  293,   40,   -1,   -1,   43,
   -1,   45,  300,  301,  124,  303,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   58,   -1,   -1,   -1,   -1,   63,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,  267,   -1,   -1,   40,
   -1,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,  280,
   -1,   -1,  283,  284,  285,  286,  287,  288,  289,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,   -1,  300,
  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,   40,   -1,  344,   43,   -1,   45,  348,  349,  350,
   -1,   -1,  123,   -1,   -1,   -1,   -1,  267,   -1,   -1,
   -1,   -1,   -1,   -1,   63,   40,   -1,   -1,   43,   -1,
   45,   -1,   47,  283,  284,  285,  286,  287,  288,  289,
  290,  291,   -1,  293,   59,   -1,   -1,   -1,   -1,   -1,
  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,   -1,
  340,  341,   -1,  267,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   40,  280,  281,   43,   -1,
   45,   -1,   47,   -1,   -1,  289,  290,  291,   -1,  293,
   -1,   -1,   -1,   -1,   -1,   -1,  300,  301,   -1,  303,
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,
  261,  262,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,
  344,   -1,   -1,   -1,  348,  349,  350,   -1,   -1,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,  299,  300,
  301,   -1,  303,   40,  305,   -1,   43,   -1,   45,   -1,
   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,  267,  340,
  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,  350,
   -1,  280,  281,   -1,   -1,   -1,   -1,   -1,  263,   -1,
  289,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,
   40,  300,  301,   43,  303,   45,  305,   47,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  290,  291,   -1,  293,   -1,
   -1,   -1,   -1,   -1,  323,  300,  301,   -1,  303,   -1,
  305,   -1,  331,  332,  333,  334,  335,  336,   -1,  338,
   -1,  340,  341,   -1,   -1,  344,   -1,   -1,  323,  348,
  349,  350,   -1,   -1,   -1,   -1,  331,  332,  333,  334,
  335,  336,   -1,  338,   -1,  340,  341,   -1,  263,  344,
   -1,   -1,   -1,  348,  349,  350,   40,   -1,   -1,   43,
   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  290,  291,   -1,  293,   -1,
   -1,   -1,   -1,   -1,   -1,  300,  301,   -1,  303,   -1,
  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,  334,
  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,
   -1,   -1,   -1,  348,  349,  350,  263,   -1,   40,   -1,
   -1,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   40,  290,  291,   43,  293,   45,   -1,   47,
   -1,   -1,   -1,  300,  301,   -1,  303,   -1,  305,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,
   -1,   -1,   -1,  263,  331,  332,  333,  334,  335,  336,
   -1,  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,
   -1,  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   40,
  290,  291,   43,  293,   45,   -1,   47,   -1,   -1,   -1,
  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   40,   -1,   -1,   43,   -1,   45,   -1,
   47,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  331,  332,  333,  334,  335,  336,   -1,  338,  263,
  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,  349,
  350,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   40,  290,  291,   43,  293,
   45,   -1,   47,   -1,   -1,   -1,  300,  301,   -1,  303,
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   40,
   -1,   -1,   43,   -1,   45,   -1,   47,   -1,   -1,  323,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,  333,
  334,  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,
  344,  263,   -1,   -1,  348,  349,  350,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   40,   -1,   -1,   43,  263,   45,   -1,  290,  291,
   -1,  293,   -1,   -1,   -1,   -1,   -1,   -1,  300,  301,
   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  290,  291,   -1,  293,   -1,   -1,   -1,   -1,
   -1,  323,  300,  301,   -1,  303,   -1,  305,   -1,  331,
  332,  333,  334,  335,  336,   -1,  338,   -1,  340,  341,
   -1,   -1,  344,   -1,   -1,  323,  348,  349,  350,   -1,
   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,
  338,   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,
  348,  349,  350,   -1,   -1,   -1,   -1,   -1,   -1,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,   -1,  300,
  301,   -1,  303,   -1,  305,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  290,  291,   -1,  293,   -1,   -1,   -1,
   -1,   -1,  323,  300,  301,   -1,  303,   -1,  305,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,   -1,   -1,  344,   -1,   -1,  323,  348,  349,  350,
   -1,   -1,   -1,   -1,  331,  332,  333,  334,  335,  336,
   -1,  338,   -1,  340,  341,  290,  291,  344,  293,   -1,
   -1,  348,  349,  350,   -1,  300,  301,   -1,  303,   -1,
  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  290,
  291,   -1,  293,   -1,   -1,   -1,   -1,   -1,  323,  300,
  301,   -1,  303,   -1,  305,   -1,  331,  332,  333,  334,
  335,  336,   -1,  338,   -1,  340,  341,   -1,   -1,  344,
   -1,   -1,  323,  348,  349,  350,   -1,   -1,   -1,   -1,
  331,  332,  333,  334,  335,  336,   -1,  338,   -1,  340,
  341,  290,  291,  344,  293,   -1,   -1,  348,  349,  350,
   -1,  300,  301,   -1,  303,   -1,  305,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  323,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  331,  332,  333,  334,  335,  336,   -1,   -1,
   -1,  340,  341,   -1,   -1,  344,   -1,   -1,   -1,  348,
  349,  350,
};
#if YYBTYACC
static const YYINT yyctable[] = {                        -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -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,
};
#endif
#define YYFINAL 4
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 351
#define YYUNDFTOKEN 402
#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
#if YYDEBUG
static const char *const yyname[] = {

"$end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
"'%'",0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,"':'",
"';'",0,0,0,"'?'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'['",0,
"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'","'|'",
"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,"error","FIRSTTOKEN","PROGRAM","PASTAT","PASTAT2",
"XBEGIN","XEND","NL","ARRAY","MATCH","NOTMATCH","MATCHOP","FINAL","DOT","ALL",
"CCL","NCCL","CHAR","OR","STAR","QUEST","PLUS","EMPTYRE","ZERO","AND","BOR",
"APPEND","EQ","GE","GT","LE","LT","NE","IN","ARG","BLTIN","BREAK","CLOSE",
"CONTINUE","DELETE","DO","EXIT","FOR","FUNC","SUB","GSUB","IF","INDEX",
"LSUBSTR","MATCHFCN","NEXT","NEXTFILE","ADD","MINUS","MULT","DIVIDE","MOD",
"ASSIGN","ASGNOP","ADDEQ","SUBEQ","MULTEQ","DIVEQ","MODEQ","POWEQ","PRINT",
"PRINTF","SPRINTF","ELSE","INTEST","CONDEXPR","POSTINCR","PREINCR","POSTDECR",
"PREDECR","VAR","IVAR","VARNF","CALL","NUMBER","STRING","REGEXPR","GETLINE",
"RETURN","SPLIT","SUBSTR","WHILE","CAT","NOT","UMINUS","UPLUS","POWER","DECR",
"INCR","INDIRECT","LASTTOKEN","$accept","program","pas","pattern","ppattern",
"plist","pplist","patlist","prarg","term","re","pa_pat","pa_stat","pa_stats",
"reg_expr","simple_stmt","opt_simple_stmt","stmt","stmtlist","var","varname",
"funcname","varlist","for","if","else","while","do","st","pst","opt_pst",
"lbrace","rbrace","rparen","comma","nl","opt_nl","and","bor","subop","print",
"string","$$1","$$2","$$3","$$4","$$5","$$6","$$7","$$8","illegal-symbol",
};
static const char *const yyrule[] = {
"$accept : program",
"program : pas",
"program : error",
"and : AND",
"and : and NL",
"bor : BOR",
"bor : bor NL",
"comma : ','",
"comma : comma NL",
"do : DO",
"do : do NL",
"else : ELSE",
"else : else NL",
"$$1 :",
"for : FOR '(' opt_simple_stmt ';' opt_nl pattern ';' opt_nl opt_simple_stmt rparen $$1 stmt",
"$$2 :",
"for : FOR '(' opt_simple_stmt ';' ';' opt_nl opt_simple_stmt rparen $$2 stmt",
"$$3 :",
"for : FOR '(' varname IN varname rparen $$3 stmt",
"funcname : VAR",
"funcname : CALL",
"if : IF '(' pattern rparen",
"lbrace : '{'",
"lbrace : lbrace NL",
"nl : NL",
"nl : nl NL",
"opt_nl :",
"opt_nl : nl",
"opt_pst :",
"opt_pst : pst",
"opt_simple_stmt :",
"opt_simple_stmt : simple_stmt",
"pas : opt_pst",
"pas : opt_pst pa_stats opt_pst",
"pa_pat : pattern",
"pa_stat : pa_pat",
"pa_stat : pa_pat lbrace stmtlist '}'",
"pa_stat : pa_pat ',' opt_nl pa_pat",
"pa_stat : pa_pat ',' opt_nl pa_pat lbrace stmtlist '}'",
"pa_stat : lbrace stmtlist '}'",
"pa_stat : XBEGIN lbrace stmtlist '}'",
"pa_stat : XEND lbrace stmtlist '}'",
"$$4 :",
"pa_stat : FUNC funcname '(' varlist rparen $$4 lbrace stmtlist '}'",
"pa_stats : pa_stat",
"pa_stats : pa_stats opt_pst pa_stat",
"patlist : pattern",
"patlist : patlist comma pattern",
"ppattern : var ASGNOP ppattern",
"ppattern : ppattern '?' ppattern ':' ppattern",
"ppattern : ppattern bor ppattern",
"ppattern : ppattern and ppattern",
"ppattern : ppattern MATCHOP reg_expr",
"ppattern : ppattern MATCHOP ppattern",
"ppattern : ppattern IN varname",
"ppattern : '(' plist ')' IN varname",
"ppattern : ppattern term",
"ppattern : re",
"ppattern : term",
"pattern : var ASGNOP pattern",
"pattern : pattern '?' pattern ':' pattern",
"pattern : pattern bor pattern",
"pattern : pattern and pattern",
"pattern : pattern EQ pattern",
"pattern : pattern GE pattern",
"pattern : pattern GT pattern",
"pattern : pattern LE pattern",
"pattern : pattern LT pattern",
"pattern : pattern NE pattern",
"pattern : pattern MATCHOP reg_expr",
"pattern : pattern MATCHOP pattern",
"pattern : pattern IN varname",
"pattern : '(' plist ')' IN varname",
"pattern : pattern '|' GETLINE var",
"pattern : pattern '|' GETLINE",
"pattern : pattern term",
"pattern : re",
"pattern : term",
"plist : pattern comma pattern",
"plist : plist comma pattern",
"pplist : ppattern",
"pplist : pplist comma ppattern",
"prarg :",
"prarg : pplist",
"prarg : '(' plist ')'",
"print : PRINT",
"print : PRINTF",
"pst : NL",
"pst : ';'",
"pst : pst NL",
"pst : pst ';'",
"rbrace : '}'",
"rbrace : rbrace NL",
"re : reg_expr",
"re : NOT re",
"$$5 :",
"reg_expr : '/' $$5 REGEXPR '/'",
"rparen : ')'",
"rparen : rparen NL",
"simple_stmt : print prarg '|' term",
"simple_stmt : print prarg APPEND term",
"simple_stmt : print prarg GT term",
"simple_stmt : print prarg",
"simple_stmt : DELETE varname '[' patlist ']'",
"simple_stmt : DELETE varname",
"simple_stmt : pattern",
"simple_stmt : error",
"st : nl",
"st : ';' opt_nl",
"stmt : BREAK st",
"stmt : CONTINUE st",
"$$6 :",
"$$7 :",
"stmt : do $$6 stmt $$7 WHILE '(' pattern ')' st",
"stmt : EXIT pattern st",
"stmt : EXIT st",
"stmt : for",
"stmt : if stmt else stmt",
"stmt : if stmt",
"stmt : lbrace stmtlist rbrace",
"stmt : NEXT st",
"stmt : NEXTFILE st",
"stmt : RETURN pattern st",
"stmt : RETURN st",
"stmt : simple_stmt st",
"$$8 :",
"stmt : while $$8 stmt",
"stmt : ';' opt_nl",
"stmtlist : stmt",
"stmtlist : stmtlist stmt",
"subop : SUB",
"subop : GSUB",
"string : STRING",
"string : string STRING",
"term : term '/' ASGNOP term",
"term : term '+' term",
"term : term '-' term",
"term : term '*' term",
"term : term '/' term",
"term : term '%' term",
"term : term POWER term",
"term : '-' term",
"term : '+' term",
"term : NOT term",
"term : BLTIN '(' ')'",
"term : BLTIN '(' patlist ')'",
"term : BLTIN",
"term : CALL '(' ')'",
"term : CALL '(' patlist ')'",
"term : CLOSE term",
"term : DECR var",
"term : INCR var",
"term : var DECR",
"term : var INCR",
"term : GETLINE var LT term",
"term : GETLINE LT term",
"term : GETLINE var",
"term : GETLINE",
"term : INDEX '(' pattern comma pattern ')'",
"term : INDEX '(' pattern comma reg_expr ')'",
"term : '(' pattern ')'",
"term : MATCHFCN '(' pattern comma reg_expr ')'",
"term : MATCHFCN '(' pattern comma pattern ')'",
"term : NUMBER",
"term : SPLIT '(' pattern comma varname comma pattern ')'",
"term : SPLIT '(' pattern comma varname comma reg_expr ')'",
"term : SPLIT '(' pattern comma varname ')'",
"term : SPRINTF '(' patlist ')'",
"term : string",
"term : subop '(' reg_expr comma pattern ')'",
"term : subop '(' pattern comma pattern ')'",
"term : subop '(' reg_expr comma pattern comma var ')'",
"term : subop '(' pattern comma pattern comma var ')'",
"term : SUBSTR '(' pattern comma pattern comma pattern ')'",
"term : SUBSTR '(' pattern comma pattern ')'",
"term : var",
"var : varname",
"var : varname '[' patlist ']'",
"var : IVAR",
"var : INDIRECT term",
"varlist :",
"varlist : VAR",
"varlist : varlist comma VAR",
"varname : VAR",
"varname : ARG",
"varname : VARNF",
"while : WHILE '(' pattern rparen",

};
#endif

#if YYDEBUG
int      yydebug;
#endif

int      yyerrflag;
int      yychar;
YYSTYPE  yyval;
YYSTYPE  yylval;
int      yynerrs;

#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
YYLTYPE  yyloc; /* position returned by actions */
YYLTYPE  yylloc; /* position from the lexer */
#endif

#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
#ifndef YYLLOC_DEFAULT
#define YYLLOC_DEFAULT(loc, rhs, n) \
do \
{ \
    if (n == 0) \
    { \
        (loc).first_line   = YYRHSLOC(rhs, 0).last_line; \
        (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
        (loc).last_line    = YYRHSLOC(rhs, 0).last_line; \
        (loc).last_column  = YYRHSLOC(rhs, 0).last_column; \
    } \
    else \
    { \
        (loc).first_line   = YYRHSLOC(rhs, 1).first_line; \
        (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
        (loc).last_line    = YYRHSLOC(rhs, n).last_line; \
        (loc).last_column  = YYRHSLOC(rhs, n).last_column; \
    } \
} while (0)
#endif /* YYLLOC_DEFAULT */
#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
#if YYBTYACC

#ifndef YYLVQUEUEGROWTH
#define YYLVQUEUEGROWTH 32
#endif
#endif /* YYBTYACC */

/* define the initial stack-sizes */
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH  YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH  10000
#endif
#endif

#ifndef YYINITSTACKSIZE
#define YYINITSTACKSIZE 200
#endif

typedef struct {
    unsigned stacksize;
    YYINT    *s_base;
    YYINT    *s_mark;
    YYINT    *s_last;
    YYSTYPE  *l_base;
    YYSTYPE  *l_mark;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    YYLTYPE  *p_base;
    YYLTYPE  *p_mark;
#endif
} YYSTACKDATA;
#if YYBTYACC

struct YYParseState_s
{
    struct YYParseState_s *save;    /* Previously saved parser state */
    YYSTACKDATA            yystack; /* saved parser stack */
    int                    state;   /* saved parser state */
    int                    errflag; /* saved error recovery status */
    int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
    YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
};
typedef struct YYParseState_s YYParseState;
#endif /* YYBTYACC */
/* variables for the parser stack */
static YYSTACKDATA yystack;
#if YYBTYACC

/* Current parser state */
static YYParseState *yyps = 0;

/* yypath != NULL: do the full parse, starting at *yypath parser state. */
static YYParseState *yypath = 0;

/* Base of the lexical value queue */
static YYSTYPE *yylvals = 0;

/* Current position at lexical value queue */
static YYSTYPE *yylvp = 0;

/* End position of lexical value queue */
static YYSTYPE *yylve = 0;

/* The last allocated position at the lexical value queue */
static YYSTYPE *yylvlim = 0;

#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
/* Base of the lexical position queue */
static YYLTYPE *yylpsns = 0;

/* Current position at lexical position queue */
static YYLTYPE *yylpp = 0;

/* End position of lexical position queue */
static YYLTYPE *yylpe = 0;

/* The last allocated position at the lexical position queue */
static YYLTYPE *yylplim = 0;
#endif

/* Current position at lexical token queue */
static YYINT  *yylexp = 0;

static YYINT  *yylexemes = 0;
#endif /* YYBTYACC */
#line 457 "awkgram.y"

void setfname(Cell *p)
{
	if (isarr(p))
		SYNTAX("%s is an array, not a function", p->nval);
	else if (isfcn(p))
		SYNTAX("you can't define function %s more than once", p->nval);
	curfname = p->nval;
}

int constnode(Node *p)
{
	return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
}

char *strnode(Node *p)
{
	return ((Cell *)(p->narg[0]))->sval;
}

Node *notnull(Node *n)
{
	switch (n->nobj) {
	case LE: case LT: case EQ: case NE: case GT: case GE:
	case BOR: case AND: case NOT:
		return n;
	default:
		return op2(NE, n, nullnode);
	}
}

void checkdup(Node *vl, Cell *cp)	/* check if name already in list */
{
	char *s = cp->nval;
	for ( ; vl; vl = vl->nnext) {
		if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
			SYNTAX("duplicate argument %s", s);
			break;
		}
	}
}
#line 3712 "awkgram.tab.c"

/* For use in generated program */
#define yydepth (int)(yystack.s_mark - yystack.s_base)
#if YYBTYACC
#define yytrial (yyps->save)
#endif /* YYBTYACC */

#if YYDEBUG
#include <stdio.h>	/* needed for printf */
#endif

#include <stdlib.h>	/* needed for malloc, etc */
#include <string.h>	/* needed for memset */

/* allocate initial stack or double stack size, up to YYMAXDEPTH */
static int yygrowstack(YYSTACKDATA *data)
{
    int i;
    unsigned newsize;
    YYINT *newss;
    YYSTYPE *newvs;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    YYLTYPE *newps;
#endif

    if ((newsize = data->stacksize) == 0)
        newsize = YYINITSTACKSIZE;
    else if (newsize >= YYMAXDEPTH)
        return YYENOMEM;
    else if ((newsize *= 2) > YYMAXDEPTH)
        newsize = YYMAXDEPTH;

    i = (int) (data->s_mark - data->s_base);
    newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
    if (newss == 0)
        return YYENOMEM;

    data->s_base = newss;
    data->s_mark = newss + i;

    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
    if (newvs == 0)
        return YYENOMEM;

    data->l_base = newvs;
    data->l_mark = newvs + i;

#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
    if (newps == 0)
        return YYENOMEM;

    data->p_base = newps;
    data->p_mark = newps + i;
#endif

    data->stacksize = newsize;
    data->s_last = data->s_base + newsize - 1;

#if YYDEBUG
    if (yydebug)
        fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
#endif
    return 0;
}

#if YYPURE || defined(YY_NO_LEAKS)
static void yyfreestack(YYSTACKDATA *data)
{
    free(data->s_base);
    free(data->l_base);
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    free(data->p_base);
#endif
    memset(data, 0, sizeof(*data));
}
#else
#define yyfreestack(data) /* nothing */
#endif /* YYPURE || defined(YY_NO_LEAKS) */
#if YYBTYACC

static YYParseState *
yyNewState(unsigned size)
{
    YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
    if (p == NULL) return NULL;

    p->yystack.stacksize = size;
    if (size == 0)
    {
        p->yystack.s_base = NULL;
        p->yystack.l_base = NULL;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
        p->yystack.p_base = NULL;
#endif
        return p;
    }
    p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
    if (p->yystack.s_base == NULL) return NULL;
    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
    if (p->yystack.l_base == NULL) return NULL;
    memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
    if (p->yystack.p_base == NULL) return NULL;
    memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
#endif

    return p;
}

static void
yyFreeState(YYParseState *p)
{
    yyfreestack(&p->yystack);
    free(p);
}
#endif /* YYBTYACC */

#define YYABORT  goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR  goto yyerrlab
#if YYBTYACC
#define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
#define YYVALID_NESTED do { if (yyps->save && \
                                yyps->save->save == 0) goto yyvalid; } while(0)
#endif /* YYBTYACC */

int
YYPARSE_DECL()
{
    int yym, yyn, yystate, yyresult;
#if YYBTYACC
    int yynewerrflag;
    YYParseState *yyerrctx = NULL;
#endif /* YYBTYACC */
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    YYLTYPE  yyerror_loc_range[3]; /* position of error start/end (0 unused) */
#endif
#if YYDEBUG
    const char *yys;

    if ((yys = getenv("YYDEBUG")) != 0)
    {
        yyn = *yys;
        if (yyn >= '0' && yyn <= '9')
            yydebug = yyn - '0';
    }
    if (yydebug)
        fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
#endif
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
#endif

#if YYBTYACC
    yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
    yyps->save = 0;
#endif /* YYBTYACC */
    yym = 0;
    yyn = 0;
    yynerrs = 0;
    yyerrflag = 0;
    yychar = YYEMPTY;
    yystate = 0;

#if YYPURE
    memset(&yystack, 0, sizeof(yystack));
#endif

    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    yystack.s_mark = yystack.s_base;
    yystack.l_mark = yystack.l_base;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    yystack.p_mark = yystack.p_base;
#endif
    yystate = 0;
    *yystack.s_mark = 0;

yyloop:
    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    if (yychar < 0)
    {
#if YYBTYACC
        do {
        if (yylvp < yylve)
        {
            /* we're currently re-reading tokens */
            yylval = *yylvp++;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
            yylloc = *yylpp++;
#endif
            yychar = *yylexp++;
            break;
        }
        if (yyps->save)
        {
            /* in trial mode; save scanner results for future parse attempts */
            if (yylvp == yylvlim)
            {   /* Enlarge lexical value queue */
                size_t p = (size_t) (yylvp - yylvals);
                size_t s = (size_t) (yylvlim - yylvals);

                s += YYLVQUEUEGROWTH;
                if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
                if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
#endif
                yylvp   = yylve = yylvals + p;
                yylvlim = yylvals + s;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                yylpp   = yylpe = yylpsns + p;
                yylplim = yylpsns + s;
#endif
                yylexp  = yylexemes + p;
            }
            *yylexp = (YYINT) YYLEX;
            *yylvp++ = yylval;
            yylve++;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
            *yylpp++ = yylloc;
            yylpe++;
#endif
            yychar = *yylexp++;
            break;
        }
        /* normal operation, no conflict encountered */
#endif /* YYBTYACC */
        yychar = YYLEX;
#if YYBTYACC
        } while (0);
#endif /* YYBTYACC */
        if (yychar < 0) yychar = YYEOF;
#if YYDEBUG
        if (yydebug)
        {
            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
            fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
#ifdef YYSTYPE_TOSTRING
#if YYBTYACC
            if (!yytrial)
#endif /* YYBTYACC */
                fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
#endif
            fputc('\n', stderr);
        }
#endif
    }
#if YYBTYACC

    /* Do we have a conflict? */
    if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
        yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    {
        YYINT ctry;

        if (yypath)
        {
            YYParseState *save;
#if YYDEBUG
            if (yydebug)
                fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
                                YYDEBUGSTR, yydepth, yystate);
#endif
            /* Switch to the next conflict context */
            save = yypath;
            yypath = save->save;
            save->save = NULL;
            ctry = save->ctry;
            if (save->state != yystate) YYABORT;
            yyFreeState(save);

        }
        else
        {

            /* Unresolved conflict - start/continue trial parse */
            YYParseState *save;
#if YYDEBUG
            if (yydebug)
            {
                fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
                if (yyps->save)
                    fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
                else
                    fputs("Starting trial parse.\n", stderr);
            }
#endif
            save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
            if (save == NULL) goto yyenomem;
            save->save            = yyps->save;
            save->state           = yystate;
            save->errflag         = yyerrflag;
            save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
            memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
            save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
            memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
            save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
            memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
#endif
            ctry                  = yytable[yyn];
            if (yyctable[ctry] == -1)
            {
#if YYDEBUG
                if (yydebug && yychar >= YYEOF)
                    fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
#endif
                ctry++;
            }
            save->ctry = ctry;
            if (yyps->save == NULL)
            {
                /* If this is a first conflict in the stack, start saving lexemes */
                if (!yylexemes)
                {
                    yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
                    if (yylexemes == NULL) goto yyenomem;
                    yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
                    if (yylvals == NULL) goto yyenomem;
                    yylvlim   = yylvals + YYLVQUEUEGROWTH;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                    yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
                    if (yylpsns == NULL) goto yyenomem;
                    yylplim   = yylpsns + YYLVQUEUEGROWTH;
#endif
                }
                if (yylvp == yylve)
                {
                    yylvp  = yylve = yylvals;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                    yylpp  = yylpe = yylpsns;
#endif
                    yylexp = yylexemes;
                    if (yychar >= YYEOF)
                    {
                        *yylve++ = yylval;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                        *yylpe++ = yylloc;
#endif
                        *yylexp  = (YYINT) yychar;
                        yychar   = YYEMPTY;
                    }
                }
            }
            if (yychar >= YYEOF)
            {
                yylvp--;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                yylpp--;
#endif
                yylexp--;
                yychar = YYEMPTY;
            }
            save->lexeme = (int) (yylvp - yylvals);
            yyps->save   = save;
        }
        if (yytable[yyn] == ctry)
        {
#if YYDEBUG
            if (yydebug)
                fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
                                YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
#endif
            if (yychar < 0)
            {
                yylvp++;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                yylpp++;
#endif
                yylexp++;
            }
            if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
                goto yyoverflow;
            yystate = yyctable[ctry];
            *++yystack.s_mark = (YYINT) yystate;
            *++yystack.l_mark = yylval;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
            *++yystack.p_mark = yylloc;
#endif
            yychar  = YYEMPTY;
            if (yyerrflag > 0) --yyerrflag;
            goto yyloop;
        }
        else
        {
            yyn = yyctable[ctry];
            goto yyreduce;
        }
    } /* End of code dealing with conflicts */
#endif /* YYBTYACC */
    if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    {
#if YYDEBUG
        if (yydebug)
            fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
                            YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
#endif
        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
        yystate = yytable[yyn];
        *++yystack.s_mark = yytable[yyn];
        *++yystack.l_mark = yylval;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
        *++yystack.p_mark = yylloc;
#endif
        yychar = YYEMPTY;
        if (yyerrflag > 0)  --yyerrflag;
        goto yyloop;
    }
    if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    {
        yyn = yytable[yyn];
        goto yyreduce;
    }
    if (yyerrflag != 0) goto yyinrecovery;
#if YYBTYACC

    yynewerrflag = 1;
    goto yyerrhandler;
    goto yyerrlab; /* redundant goto avoids 'unused label' warning */

yyerrlab:
    /* explicit YYERROR from an action -- pop the rhs of the rule reduced
     * before looking for error recovery */
    yystack.s_mark -= yym;
    yystate = *yystack.s_mark;
    yystack.l_mark -= yym;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    yystack.p_mark -= yym;
#endif

    yynewerrflag = 0;
yyerrhandler:
    while (yyps->save)
    {
        int ctry;
        YYParseState *save = yyps->save;
#if YYDEBUG
        if (yydebug)
            fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
                            YYDEBUGSTR, yydepth, yystate, yyps->save->state,
                    (int)(yylvp - yylvals - yyps->save->lexeme));
#endif
        /* Memorize most forward-looking error state in case it's really an error. */
        if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
        {
            /* Free old saved error context state */
            if (yyerrctx) yyFreeState(yyerrctx);
            /* Create and fill out new saved error context state */
            yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
            if (yyerrctx == NULL) goto yyenomem;
            yyerrctx->save           = yyps->save;
            yyerrctx->state          = yystate;
            yyerrctx->errflag        = yyerrflag;
            yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
            yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
            yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
#endif
            yyerrctx->lexeme         = (int) (yylvp - yylvals);
        }
        yylvp          = yylvals   + save->lexeme;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
        yylpp          = yylpsns   + save->lexeme;
#endif
        yylexp         = yylexemes + save->lexeme;
        yychar         = YYEMPTY;
        yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
        memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
        yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
        memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
        yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
        memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
#endif
        ctry           = ++save->ctry;
        yystate        = save->state;
        /* We tried shift, try reduce now */
        if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
        yyps->save     = save->save;
        save->save     = NULL;
        yyFreeState(save);

        /* Nothing left on the stack -- error */
        if (!yyps->save)
        {
#if YYDEBUG
            if (yydebug)
                fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
                                YYPREFIX, yydepth);
#endif
            /* Restore state as it was in the most forward-advanced error */
            yylvp          = yylvals   + yyerrctx->lexeme;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
            yylpp          = yylpsns   + yyerrctx->lexeme;
#endif
            yylexp         = yylexemes + yyerrctx->lexeme;
            yychar         = yylexp[-1];
            yylval         = yylvp[-1];
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
            yylloc         = yylpp[-1];
#endif
            yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
            yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
            yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
#endif
            yystate        = yyerrctx->state;
            yyFreeState(yyerrctx);
            yyerrctx       = NULL;
        }
        yynewerrflag = 1;
    }
    if (yynewerrflag == 0) goto yyinrecovery;
#endif /* YYBTYACC */

    YYERROR_CALL("syntax error");
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
#endif

#if !YYBTYACC
    goto yyerrlab; /* redundant goto avoids 'unused label' warning */
yyerrlab:
#endif
    ++yynerrs;

yyinrecovery:
    if (yyerrflag < 3)
    {
        yyerrflag = 3;
        for (;;)
        {
            if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
            {
#if YYDEBUG
                if (yydebug)
                    fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
                                    YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
#endif
                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
                yystate = yytable[yyn];
                *++yystack.s_mark = yytable[yyn];
                *++yystack.l_mark = yylval;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                /* lookahead position is error end position */
                yyerror_loc_range[2] = yylloc;
                YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
                *++yystack.p_mark = yyloc;
#endif
                goto yyloop;
            }
            else
            {
#if YYDEBUG
                if (yydebug)
                    fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
                                    YYDEBUGSTR, yydepth, *yystack.s_mark);
#endif
                if (yystack.s_mark <= yystack.s_base) goto yyabort;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                /* the current TOS position is the error start position */
                yyerror_loc_range[1] = *yystack.p_mark;
#endif
#if defined(YYDESTRUCT_CALL)
#if YYBTYACC
                if (!yytrial)
#endif /* YYBTYACC */
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                    YYDESTRUCT_CALL("error: discarding state",
                                    yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
#else
                    YYDESTRUCT_CALL("error: discarding state",
                                    yystos[*yystack.s_mark], yystack.l_mark);
#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
#endif /* defined(YYDESTRUCT_CALL) */
                --yystack.s_mark;
                --yystack.l_mark;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                --yystack.p_mark;
#endif
            }
        }
    }
    else
    {
        if (yychar == YYEOF) goto yyabort;
#if YYDEBUG
        if (yydebug)
        {
            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
            fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
        }
#endif
#if defined(YYDESTRUCT_CALL)
#if YYBTYACC
        if (!yytrial)
#endif /* YYBTYACC */
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
#else
            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
#endif /* defined(YYDESTRUCT_CALL) */
        yychar = YYEMPTY;
        goto yyloop;
    }

yyreduce:
    yym = yylen[yyn];
#if YYDEBUG
    if (yydebug)
    {
        fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
                        YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
#ifdef YYSTYPE_TOSTRING
#if YYBTYACC
        if (!yytrial)
#endif /* YYBTYACC */
            if (yym > 0)
            {
                int i;
                fputc('<', stderr);
                for (i = yym; i > 0; i--)
                {
                    if (i != yym) fputs(", ", stderr);
                    fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
                                           yystack.l_mark[1-i]), stderr);
                }
                fputc('>', stderr);
            }
#endif
        fputc('\n', stderr);
    }
#endif
    if (yym > 0)
        yyval = yystack.l_mark[1-yym];
    else
        memset(&yyval, 0, sizeof yyval);
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)

    /* Perform position reduction */
    memset(&yyloc, 0, sizeof(yyloc));
#if YYBTYACC
    if (!yytrial)
#endif /* YYBTYACC */
    {
        YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
        /* just in case YYERROR is invoked within the action, save
           the start of the rhs as the error start position */
        yyerror_loc_range[1] = yystack.p_mark[1-yym];
    }
#endif

    switch (yyn)
    {
case 1:
#line 99 "awkgram.y"
	{ if (errorflag==0)
			winner = (Node *)stat3(PROGRAM, beginloc, yystack.l_mark[0].p, endloc); }
#line 1 ""
break;
case 2:
#line 101 "awkgram.y"
	{ yyclearin; bracecheck(); SYNTAX("bailing out"); }
#line 1 ""
break;
case 13:
#line 125 "awkgram.y"
	{inloop++;}
#line 1 ""
break;
case 14:
#line 126 "awkgram.y"
	{ --inloop; yyval.p = stat4(FOR, yystack.l_mark[-9].p, notnull(yystack.l_mark[-6].p), yystack.l_mark[-3].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 15:
#line 127 "awkgram.y"
	{inloop++;}
#line 1 ""
break;
case 16:
#line 128 "awkgram.y"
	{ --inloop; yyval.p = stat4(FOR, yystack.l_mark[-7].p, NIL, yystack.l_mark[-3].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 17:
#line 129 "awkgram.y"
	{inloop++;}
#line 1 ""
break;
case 18:
#line 130 "awkgram.y"
	{ --inloop; yyval.p = stat3(IN, yystack.l_mark[-5].p, makearr(yystack.l_mark[-3].p), yystack.l_mark[0].p); }
#line 1 ""
break;
case 19:
#line 134 "awkgram.y"
	{ setfname(yystack.l_mark[0].cp); }
#line 1 ""
break;
case 20:
#line 135 "awkgram.y"
	{ setfname(yystack.l_mark[0].cp); }
#line 1 ""
break;
case 21:
#line 139 "awkgram.y"
	{ yyval.p = notnull(yystack.l_mark[-1].p); }
#line 1 ""
break;
case 26:
#line 151 "awkgram.y"
	{ yyval.i = 0; }
#line 1 ""
break;
case 28:
#line 156 "awkgram.y"
	{ yyval.i = 0; }
#line 1 ""
break;
case 30:
#line 162 "awkgram.y"
	{ yyval.p = 0; }
#line 1 ""
break;
case 32:
#line 167 "awkgram.y"
	{ yyval.p = 0; }
#line 1 ""
break;
case 33:
#line 168 "awkgram.y"
	{ yyval.p = yystack.l_mark[-1].p; }
#line 1 ""
break;
case 34:
#line 172 "awkgram.y"
	{ yyval.p = notnull(yystack.l_mark[0].p); }
#line 1 ""
break;
case 35:
#line 176 "awkgram.y"
	{ yyval.p = stat2(PASTAT, yystack.l_mark[0].p, stat2(PRINT, rectonode(), NIL)); }
#line 1 ""
break;
case 36:
#line 177 "awkgram.y"
	{ yyval.p = stat2(PASTAT, yystack.l_mark[-3].p, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 37:
#line 178 "awkgram.y"
	{ yyval.p = pa2stat(yystack.l_mark[-3].p, yystack.l_mark[0].p, stat2(PRINT, rectonode(), NIL)); }
#line 1 ""
break;
case 38:
#line 179 "awkgram.y"
	{ yyval.p = pa2stat(yystack.l_mark[-6].p, yystack.l_mark[-3].p, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 39:
#line 180 "awkgram.y"
	{ yyval.p = stat2(PASTAT, NIL, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 40:
#line 182 "awkgram.y"
	{ beginloc = linkum(beginloc, yystack.l_mark[-1].p); yyval.p = 0; }
#line 1 ""
break;
case 41:
#line 184 "awkgram.y"
	{ endloc = linkum(endloc, yystack.l_mark[-1].p); yyval.p = 0; }
#line 1 ""
break;
case 42:
#line 185 "awkgram.y"
	{infunc = true;}
#line 1 ""
break;
case 43:
#line 186 "awkgram.y"
	{ infunc = false; curfname=0; defn((Cell *)yystack.l_mark[-7].p, yystack.l_mark[-5].p, yystack.l_mark[-1].p); yyval.p = 0; }
#line 1 ""
break;
case 45:
#line 191 "awkgram.y"
	{ yyval.p = linkum(yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 47:
#line 196 "awkgram.y"
	{ yyval.p = linkum(yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 48:
#line 200 "awkgram.y"
	{ yyval.p = op2(yystack.l_mark[-1].i, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 49:
#line 202 "awkgram.y"
	{ yyval.p = op3(CONDEXPR, notnull(yystack.l_mark[-4].p), yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 50:
#line 204 "awkgram.y"
	{ yyval.p = op2(BOR, notnull(yystack.l_mark[-2].p), notnull(yystack.l_mark[0].p)); }
#line 1 ""
break;
case 51:
#line 206 "awkgram.y"
	{ yyval.p = op2(AND, notnull(yystack.l_mark[-2].p), notnull(yystack.l_mark[0].p)); }
#line 1 ""
break;
case 52:
#line 207 "awkgram.y"
	{ yyval.p = op3(yystack.l_mark[-1].i, NIL, yystack.l_mark[-2].p, (Node*)makedfa(yystack.l_mark[0].s, 0)); free(yystack.l_mark[0].s); }
#line 1 ""
break;
case 53:
#line 209 "awkgram.y"
	{ if (constnode(yystack.l_mark[0].p)) {
			yyval.p = op3(yystack.l_mark[-1].i, NIL, yystack.l_mark[-2].p, (Node*)makedfa(strnode(yystack.l_mark[0].p), 0));
			free(yystack.l_mark[0].p);
		  } else
			yyval.p = op3(yystack.l_mark[-1].i, (Node *)1, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 54:
#line 214 "awkgram.y"
	{ yyval.p = op2(INTEST, yystack.l_mark[-2].p, makearr(yystack.l_mark[0].p)); }
#line 1 ""
break;
case 55:
#line 215 "awkgram.y"
	{ yyval.p = op2(INTEST, yystack.l_mark[-3].p, makearr(yystack.l_mark[0].p)); }
#line 1 ""
break;
case 56:
#line 216 "awkgram.y"
	{ yyval.p = op2(CAT, yystack.l_mark[-1].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 59:
#line 222 "awkgram.y"
	{ yyval.p = op2(yystack.l_mark[-1].i, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 60:
#line 224 "awkgram.y"
	{ yyval.p = op3(CONDEXPR, notnull(yystack.l_mark[-4].p), yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 61:
#line 226 "awkgram.y"
	{ yyval.p = op2(BOR, notnull(yystack.l_mark[-2].p), notnull(yystack.l_mark[0].p)); }
#line 1 ""
break;
case 62:
#line 228 "awkgram.y"
	{ yyval.p = op2(AND, notnull(yystack.l_mark[-2].p), notnull(yystack.l_mark[0].p)); }
#line 1 ""
break;
case 63:
#line 229 "awkgram.y"
	{ yyval.p = op2(yystack.l_mark[-1].i, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 64:
#line 230 "awkgram.y"
	{ yyval.p = op2(yystack.l_mark[-1].i, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 65:
#line 231 "awkgram.y"
	{ yyval.p = op2(yystack.l_mark[-1].i, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 66:
#line 232 "awkgram.y"
	{ yyval.p = op2(yystack.l_mark[-1].i, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 67:
#line 233 "awkgram.y"
	{ yyval.p = op2(yystack.l_mark[-1].i, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 68:
#line 234 "awkgram.y"
	{ yyval.p = op2(yystack.l_mark[-1].i, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 69:
#line 235 "awkgram.y"
	{ yyval.p = op3(yystack.l_mark[-1].i, NIL, yystack.l_mark[-2].p, (Node*)makedfa(yystack.l_mark[0].s, 0)); free(yystack.l_mark[0].s); }
#line 1 ""
break;
case 70:
#line 237 "awkgram.y"
	{ if (constnode(yystack.l_mark[0].p)) {
			yyval.p = op3(yystack.l_mark[-1].i, NIL, yystack.l_mark[-2].p, (Node*)makedfa(strnode(yystack.l_mark[0].p), 0));
			free(yystack.l_mark[0].p);
		  } else
			yyval.p = op3(yystack.l_mark[-1].i, (Node *)1, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 71:
#line 242 "awkgram.y"
	{ yyval.p = op2(INTEST, yystack.l_mark[-2].p, makearr(yystack.l_mark[0].p)); }
#line 1 ""
break;
case 72:
#line 243 "awkgram.y"
	{ yyval.p = op2(INTEST, yystack.l_mark[-3].p, makearr(yystack.l_mark[0].p)); }
#line 1 ""
break;
case 73:
#line 244 "awkgram.y"
	{
			if (safe) SYNTAX("cmd | getline is unsafe");
			else yyval.p = op3(GETLINE, yystack.l_mark[0].p, itonp(yystack.l_mark[-2].i), yystack.l_mark[-3].p); }
#line 1 ""
break;
case 74:
#line 247 "awkgram.y"
	{
			if (safe) SYNTAX("cmd | getline is unsafe");
			else yyval.p = op3(GETLINE, (Node*)0, itonp(yystack.l_mark[-1].i), yystack.l_mark[-2].p); }
#line 1 ""
break;
case 75:
#line 250 "awkgram.y"
	{ yyval.p = op2(CAT, yystack.l_mark[-1].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 78:
#line 256 "awkgram.y"
	{ yyval.p = linkum(yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 79:
#line 257 "awkgram.y"
	{ yyval.p = linkum(yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 81:
#line 262 "awkgram.y"
	{ yyval.p = linkum(yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 82:
#line 266 "awkgram.y"
	{ yyval.p = rectonode(); }
#line 1 ""
break;
case 84:
#line 268 "awkgram.y"
	{ yyval.p = yystack.l_mark[-1].p; }
#line 1 ""
break;
case 93:
#line 285 "awkgram.y"
	{ yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yystack.l_mark[0].s, 0)); free(yystack.l_mark[0].s); }
#line 1 ""
break;
case 94:
#line 286 "awkgram.y"
	{ yyval.p = op1(NOT, notnull(yystack.l_mark[0].p)); }
#line 1 ""
break;
case 95:
#line 290 "awkgram.y"
	{startreg();}
#line 1 ""
break;
case 96:
#line 290 "awkgram.y"
	{ yyval.s = yystack.l_mark[-1].s; }
#line 1 ""
break;
case 99:
#line 298 "awkgram.y"
	{
			if (safe) SYNTAX("print | is unsafe");
			else yyval.p = stat3(yystack.l_mark[-3].i, yystack.l_mark[-2].p, itonp(yystack.l_mark[-1].i), yystack.l_mark[0].p); }
#line 1 ""
break;
case 100:
#line 301 "awkgram.y"
	{
			if (safe) SYNTAX("print >> is unsafe");
			else yyval.p = stat3(yystack.l_mark[-3].i, yystack.l_mark[-2].p, itonp(yystack.l_mark[-1].i), yystack.l_mark[0].p); }
#line 1 ""
break;
case 101:
#line 304 "awkgram.y"
	{
			if (safe) SYNTAX("print > is unsafe");
			else yyval.p = stat3(yystack.l_mark[-3].i, yystack.l_mark[-2].p, itonp(yystack.l_mark[-1].i), yystack.l_mark[0].p); }
#line 1 ""
break;
case 102:
#line 307 "awkgram.y"
	{ yyval.p = stat3(yystack.l_mark[-1].i, yystack.l_mark[0].p, NIL, NIL); }
#line 1 ""
break;
case 103:
#line 308 "awkgram.y"
	{ yyval.p = stat2(DELETE, makearr(yystack.l_mark[-3].p), yystack.l_mark[-1].p); }
#line 1 ""
break;
case 104:
#line 309 "awkgram.y"
	{ yyval.p = stat2(DELETE, makearr(yystack.l_mark[0].p), 0); }
#line 1 ""
break;
case 105:
#line 310 "awkgram.y"
	{ yyval.p = exptostat(yystack.l_mark[0].p); }
#line 1 ""
break;
case 106:
#line 311 "awkgram.y"
	{ yyclearin; SYNTAX("illegal statement"); }
#line 1 ""
break;
case 109:
#line 320 "awkgram.y"
	{ if (!inloop) SYNTAX("break illegal outside of loops");
				  yyval.p = stat1(BREAK, NIL); }
#line 1 ""
break;
case 110:
#line 322 "awkgram.y"
	{  if (!inloop) SYNTAX("continue illegal outside of loops");
				  yyval.p = stat1(CONTINUE, NIL); }
#line 1 ""
break;
case 111:
#line 324 "awkgram.y"
	{inloop++;}
#line 1 ""
break;
case 112:
#line 324 "awkgram.y"
	{--inloop;}
#line 1 ""
break;
case 113:
#line 325 "awkgram.y"
	{ yyval.p = stat2(DO, yystack.l_mark[-6].p, notnull(yystack.l_mark[-2].p)); }
#line 1 ""
break;
case 114:
#line 326 "awkgram.y"
	{ yyval.p = stat1(EXIT, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 115:
#line 327 "awkgram.y"
	{ yyval.p = stat1(EXIT, NIL); }
#line 1 ""
break;
case 117:
#line 329 "awkgram.y"
	{ yyval.p = stat3(IF, yystack.l_mark[-3].p, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 118:
#line 330 "awkgram.y"
	{ yyval.p = stat3(IF, yystack.l_mark[-1].p, yystack.l_mark[0].p, NIL); }
#line 1 ""
break;
case 119:
#line 331 "awkgram.y"
	{ yyval.p = yystack.l_mark[-1].p; }
#line 1 ""
break;
case 120:
#line 332 "awkgram.y"
	{ if (infunc)
				SYNTAX("next is illegal inside a function");
			  yyval.p = stat1(NEXT, NIL); }
#line 1 ""
break;
case 121:
#line 335 "awkgram.y"
	{ if (infunc)
				SYNTAX("nextfile is illegal inside a function");
			  yyval.p = stat1(NEXTFILE, NIL); }
#line 1 ""
break;
case 122:
#line 338 "awkgram.y"
	{ yyval.p = stat1(RETURN, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 123:
#line 339 "awkgram.y"
	{ yyval.p = stat1(RETURN, NIL); }
#line 1 ""
break;
case 125:
#line 341 "awkgram.y"
	{inloop++;}
#line 1 ""
break;
case 126:
#line 341 "awkgram.y"
	{ --inloop; yyval.p = stat2(WHILE, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 127:
#line 342 "awkgram.y"
	{ yyval.p = 0; }
#line 1 ""
break;
case 129:
#line 347 "awkgram.y"
	{ yyval.p = linkum(yystack.l_mark[-1].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 133:
#line 356 "awkgram.y"
	{ yyval.cp = catstr(yystack.l_mark[-1].cp, yystack.l_mark[0].cp); }
#line 1 ""
break;
case 134:
#line 360 "awkgram.y"
	{ yyval.p = op2(DIVEQ, yystack.l_mark[-3].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 135:
#line 361 "awkgram.y"
	{ yyval.p = op2(ADD, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 136:
#line 362 "awkgram.y"
	{ yyval.p = op2(MINUS, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 137:
#line 363 "awkgram.y"
	{ yyval.p = op2(MULT, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 138:
#line 364 "awkgram.y"
	{ yyval.p = op2(DIVIDE, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 139:
#line 365 "awkgram.y"
	{ yyval.p = op2(MOD, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 140:
#line 366 "awkgram.y"
	{ yyval.p = op2(POWER, yystack.l_mark[-2].p, yystack.l_mark[0].p); }
#line 1 ""
break;
case 141:
#line 367 "awkgram.y"
	{ yyval.p = op1(UMINUS, yystack.l_mark[0].p); }
#line 1 ""
break;
case 142:
#line 368 "awkgram.y"
	{ yyval.p = op1(UPLUS, yystack.l_mark[0].p); }
#line 1 ""
break;
case 143:
#line 369 "awkgram.y"
	{ yyval.p = op1(NOT, notnull(yystack.l_mark[0].p)); }
#line 1 ""
break;
case 144:
#line 370 "awkgram.y"
	{ yyval.p = op2(BLTIN, itonp(yystack.l_mark[-2].i), rectonode()); }
#line 1 ""
break;
case 145:
#line 371 "awkgram.y"
	{ yyval.p = op2(BLTIN, itonp(yystack.l_mark[-3].i), yystack.l_mark[-1].p); }
#line 1 ""
break;
case 146:
#line 372 "awkgram.y"
	{ yyval.p = op2(BLTIN, itonp(yystack.l_mark[0].i), rectonode()); }
#line 1 ""
break;
case 147:
#line 373 "awkgram.y"
	{ yyval.p = op2(CALL, celltonode(yystack.l_mark[-2].cp,CVAR), NIL); }
#line 1 ""
break;
case 148:
#line 374 "awkgram.y"
	{ yyval.p = op2(CALL, celltonode(yystack.l_mark[-3].cp,CVAR), yystack.l_mark[-1].p); }
#line 1 ""
break;
case 149:
#line 375 "awkgram.y"
	{ yyval.p = op1(CLOSE, yystack.l_mark[0].p); }
#line 1 ""
break;
case 150:
#line 376 "awkgram.y"
	{ yyval.p = op1(PREDECR, yystack.l_mark[0].p); }
#line 1 ""
break;
case 151:
#line 377 "awkgram.y"
	{ yyval.p = op1(PREINCR, yystack.l_mark[0].p); }
#line 1 ""
break;
case 152:
#line 378 "awkgram.y"
	{ yyval.p = op1(POSTDECR, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 153:
#line 379 "awkgram.y"
	{ yyval.p = op1(POSTINCR, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 154:
#line 380 "awkgram.y"
	{ yyval.p = op3(GETLINE, yystack.l_mark[-2].p, itonp(yystack.l_mark[-1].i), yystack.l_mark[0].p); }
#line 1 ""
break;
case 155:
#line 381 "awkgram.y"
	{ yyval.p = op3(GETLINE, NIL, itonp(yystack.l_mark[-1].i), yystack.l_mark[0].p); }
#line 1 ""
break;
case 156:
#line 382 "awkgram.y"
	{ yyval.p = op3(GETLINE, yystack.l_mark[0].p, NIL, NIL); }
#line 1 ""
break;
case 157:
#line 383 "awkgram.y"
	{ yyval.p = op3(GETLINE, NIL, NIL, NIL); }
#line 1 ""
break;
case 158:
#line 385 "awkgram.y"
	{ yyval.p = op2(INDEX, yystack.l_mark[-3].p, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 159:
#line 387 "awkgram.y"
	{ SYNTAX("index() doesn't permit regular expressions");
		  yyval.p = op2(INDEX, yystack.l_mark[-3].p, (Node*)yystack.l_mark[-1].s); }
#line 1 ""
break;
case 160:
#line 389 "awkgram.y"
	{ yyval.p = yystack.l_mark[-1].p; }
#line 1 ""
break;
case 161:
#line 391 "awkgram.y"
	{ yyval.p = op3(MATCHFCN, NIL, yystack.l_mark[-3].p, (Node*)makedfa(yystack.l_mark[-1].s, 1)); free(yystack.l_mark[-1].s); }
#line 1 ""
break;
case 162:
#line 393 "awkgram.y"
	{ if (constnode(yystack.l_mark[-1].p)) {
			yyval.p = op3(MATCHFCN, NIL, yystack.l_mark[-3].p, (Node*)makedfa(strnode(yystack.l_mark[-1].p), 1));
			free(yystack.l_mark[-1].p);
		  } else
			yyval.p = op3(MATCHFCN, (Node *)1, yystack.l_mark[-3].p, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 163:
#line 398 "awkgram.y"
	{ yyval.p = celltonode(yystack.l_mark[0].cp, CCON); }
#line 1 ""
break;
case 164:
#line 400 "awkgram.y"
	{ yyval.p = op4(SPLIT, yystack.l_mark[-5].p, makearr(yystack.l_mark[-3].p), yystack.l_mark[-1].p, (Node*)STRING); }
#line 1 ""
break;
case 165:
#line 402 "awkgram.y"
	{ yyval.p = op4(SPLIT, yystack.l_mark[-5].p, makearr(yystack.l_mark[-3].p), (Node*)makedfa(yystack.l_mark[-1].s, 1), (Node *)REGEXPR); free(yystack.l_mark[-1].s); }
#line 1 ""
break;
case 166:
#line 404 "awkgram.y"
	{ yyval.p = op4(SPLIT, yystack.l_mark[-3].p, makearr(yystack.l_mark[-1].p), NIL, (Node*)STRING); }
#line 1 ""
break;
case 167:
#line 405 "awkgram.y"
	{ yyval.p = op1(yystack.l_mark[-3].i, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 168:
#line 406 "awkgram.y"
	{ yyval.p = celltonode(yystack.l_mark[0].cp, CCON); }
#line 1 ""
break;
case 169:
#line 408 "awkgram.y"
	{ yyval.p = op4(yystack.l_mark[-5].i, NIL, (Node*)makedfa(yystack.l_mark[-3].s, 1), yystack.l_mark[-1].p, rectonode()); free(yystack.l_mark[-3].s); }
#line 1 ""
break;
case 170:
#line 410 "awkgram.y"
	{ if (constnode(yystack.l_mark[-3].p)) {
			yyval.p = op4(yystack.l_mark[-5].i, NIL, (Node*)makedfa(strnode(yystack.l_mark[-3].p), 1), yystack.l_mark[-1].p, rectonode());
			free(yystack.l_mark[-3].p);
		  } else
			yyval.p = op4(yystack.l_mark[-5].i, (Node *)1, yystack.l_mark[-3].p, yystack.l_mark[-1].p, rectonode()); }
#line 1 ""
break;
case 171:
#line 416 "awkgram.y"
	{ yyval.p = op4(yystack.l_mark[-7].i, NIL, (Node*)makedfa(yystack.l_mark[-5].s, 1), yystack.l_mark[-3].p, yystack.l_mark[-1].p); free(yystack.l_mark[-5].s); }
#line 1 ""
break;
case 172:
#line 418 "awkgram.y"
	{ if (constnode(yystack.l_mark[-5].p)) {
			yyval.p = op4(yystack.l_mark[-7].i, NIL, (Node*)makedfa(strnode(yystack.l_mark[-5].p), 1), yystack.l_mark[-3].p, yystack.l_mark[-1].p);
			free(yystack.l_mark[-5].p);
		  } else
			yyval.p = op4(yystack.l_mark[-7].i, (Node *)1, yystack.l_mark[-5].p, yystack.l_mark[-3].p, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 173:
#line 424 "awkgram.y"
	{ yyval.p = op3(SUBSTR, yystack.l_mark[-5].p, yystack.l_mark[-3].p, yystack.l_mark[-1].p); }
#line 1 ""
break;
case 174:
#line 426 "awkgram.y"
	{ yyval.p = op3(SUBSTR, yystack.l_mark[-3].p, yystack.l_mark[-1].p, NIL); }
#line 1 ""
break;
case 177:
#line 432 "awkgram.y"
	{ yyval.p = op2(ARRAY, makearr(yystack.l_mark[-3].p), yystack.l_mark[-1].p); }
#line 1 ""
break;
case 178:
#line 433 "awkgram.y"
	{ yyval.p = op1(INDIRECT, celltonode(yystack.l_mark[0].cp, CVAR)); }
#line 1 ""
break;
case 179:
#line 434 "awkgram.y"
	{ yyval.p = op1(INDIRECT, yystack.l_mark[0].p); }
#line 1 ""
break;
case 180:
#line 438 "awkgram.y"
	{ arglist = yyval.p = 0; }
#line 1 ""
break;
case 181:
#line 439 "awkgram.y"
	{ arglist = yyval.p = celltonode(yystack.l_mark[0].cp,CVAR); }
#line 1 ""
break;
case 182:
#line 440 "awkgram.y"
	{
			checkdup(yystack.l_mark[-2].p, yystack.l_mark[0].cp);
			arglist = yyval.p = linkum(yystack.l_mark[-2].p,celltonode(yystack.l_mark[0].cp,CVAR)); }
#line 1 ""
break;
case 183:
#line 446 "awkgram.y"
	{ yyval.p = celltonode(yystack.l_mark[0].cp, CVAR); }
#line 1 ""
break;
case 184:
#line 447 "awkgram.y"
	{ yyval.p = op1(ARG, itonp(yystack.l_mark[0].i)); }
#line 1 ""
break;
case 185:
#line 448 "awkgram.y"
	{ yyval.p = op1(VARNF, (Node *) yystack.l_mark[0].cp); }
#line 1 ""
break;
case 186:
#line 453 "awkgram.y"
	{ yyval.p = notnull(yystack.l_mark[-1].p); }
#line 1 ""
break;
#line 5127 "awkgram.tab.c"
    default:
        break;
    }
    yystack.s_mark -= yym;
    yystate = *yystack.s_mark;
    yystack.l_mark -= yym;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    yystack.p_mark -= yym;
#endif
    yym = yylhs[yyn];
    if (yystate == 0 && yym == 0)
    {
#if YYDEBUG
        if (yydebug)
        {
            fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
#ifdef YYSTYPE_TOSTRING
#if YYBTYACC
            if (!yytrial)
#endif /* YYBTYACC */
                fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
#endif
            fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
        }
#endif
        yystate = YYFINAL;
        *++yystack.s_mark = YYFINAL;
        *++yystack.l_mark = yyval;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
        *++yystack.p_mark = yyloc;
#endif
        if (yychar < 0)
        {
#if YYBTYACC
            do {
            if (yylvp < yylve)
            {
                /* we're currently re-reading tokens */
                yylval = *yylvp++;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                yylloc = *yylpp++;
#endif
                yychar = *yylexp++;
                break;
            }
            if (yyps->save)
            {
                /* in trial mode; save scanner results for future parse attempts */
                if (yylvp == yylvlim)
                {   /* Enlarge lexical value queue */
                    size_t p = (size_t) (yylvp - yylvals);
                    size_t s = (size_t) (yylvlim - yylvals);

                    s += YYLVQUEUEGROWTH;
                    if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
                        goto yyenomem;
                    if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
                        goto yyenomem;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                    if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
                        goto yyenomem;
#endif
                    yylvp   = yylve = yylvals + p;
                    yylvlim = yylvals + s;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                    yylpp   = yylpe = yylpsns + p;
                    yylplim = yylpsns + s;
#endif
                    yylexp  = yylexemes + p;
                }
                *yylexp = (YYINT) YYLEX;
                *yylvp++ = yylval;
                yylve++;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
                *yylpp++ = yylloc;
                yylpe++;
#endif
                yychar = *yylexp++;
                break;
            }
            /* normal operation, no conflict encountered */
#endif /* YYBTYACC */
            yychar = YYLEX;
#if YYBTYACC
            } while (0);
#endif /* YYBTYACC */
            if (yychar < 0) yychar = YYEOF;
#if YYDEBUG
            if (yydebug)
            {
                if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
                fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
                                YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
            }
#endif
        }
        if (yychar == YYEOF) goto yyaccept;
        goto yyloop;
    }
    if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
        yystate = yytable[yyn];
    else
        yystate = yydgoto[yym];
#if YYDEBUG
    if (yydebug)
    {
        fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
#ifdef YYSTYPE_TOSTRING
#if YYBTYACC
        if (!yytrial)
#endif /* YYBTYACC */
            fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
#endif
        fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
    }
#endif
    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    *++yystack.s_mark = (YYINT) yystate;
    *++yystack.l_mark = yyval;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    *++yystack.p_mark = yyloc;
#endif
    goto yyloop;
#if YYBTYACC

    /* Reduction declares that this path is valid. Set yypath and do a full parse */
yyvalid:
    if (yypath) YYABORT;
    while (yyps->save)
    {
        YYParseState *save = yyps->save;
        yyps->save = save->save;
        save->save = yypath;
        yypath = save;
    }
#if YYDEBUG
    if (yydebug)
        fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
                        YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
#endif
    if (yyerrctx)
    {
        yyFreeState(yyerrctx);
        yyerrctx = NULL;
    }
    yylvp          = yylvals + yypath->lexeme;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    yylpp          = yylpsns + yypath->lexeme;
#endif
    yylexp         = yylexemes + yypath->lexeme;
    yychar         = YYEMPTY;
    yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
    memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
    yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
    memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
    memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
#endif
    yystate        = yypath->state;
    goto yyloop;
#endif /* YYBTYACC */

yyoverflow:
    YYERROR_CALL("yacc stack overflow");
#if YYBTYACC
    goto yyabort_nomem;
yyenomem:
    YYERROR_CALL("memory exhausted");
yyabort_nomem:
#endif /* YYBTYACC */
    yyresult = 2;
    goto yyreturn;

yyabort:
    yyresult = 1;
    goto yyreturn;

yyaccept:
#if YYBTYACC
    if (yyps->save) goto yyvalid;
#endif /* YYBTYACC */
    yyresult = 0;

yyreturn:
#if defined(YYDESTRUCT_CALL)
    if (yychar != YYEOF && yychar != YYEMPTY)
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
#else
        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */

    {
        YYSTYPE *pv;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
        YYLTYPE *pp;

        for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
             YYDESTRUCT_CALL("cleanup: discarding state",
                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
#else
        for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
             YYDESTRUCT_CALL("cleanup: discarding state",
                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
    }
#endif /* defined(YYDESTRUCT_CALL) */

#if YYBTYACC
    if (yyerrctx)
    {
        yyFreeState(yyerrctx);
        yyerrctx = NULL;
    }
    while (yyps)
    {
        YYParseState *save = yyps;
        yyps = save->save;
        save->save = NULL;
        yyFreeState(save);
    }
    while (yypath)
    {
        YYParseState *save = yypath;
        yypath = save->save;
        save->save = NULL;
        yyFreeState(save);
    }
#endif /* YYBTYACC */
    yyfreestack(&yystack);
    return (yyresult);
}
