From 57196ae03cab9989c0c15deee49c3d4642450112 Mon Sep 17 00:00:00 2001 From: pengbo Date: Tue, 3 Oct 2017 19:27:49 +0900 Subject: [PATCH] Import PostgreSQL 10 parser. --- src/context/pool_query_context.c | 41 +- src/include/parser/gramparse.h | 10 +- src/include/parser/keywords.h | 6 +- src/include/parser/kwlist.h | 17 +- src/include/parser/makefuncs.h | 10 +- src/include/parser/nodes.h | 142 +- src/include/parser/parsenodes.h | 509 +- src/include/parser/parser.h | 13 +- src/include/parser/pg_class.h | 72 +- src/include/parser/pg_config_manual.h | 36 +- src/include/parser/pg_list.h | 29 +- src/include/parser/pg_trigger.h | 21 +- src/include/parser/pg_wchar.h | 170 +- src/include/parser/primnodes.h | 130 +- src/include/parser/scanner.h | 8 +- src/include/parser/scansup.h | 4 +- src/include/parser/stringinfo.h | 6 +- src/include/parser/value.h | 6 +- src/parser/Makefile.am | 1 - src/parser/Makefile.in | 44 +- src/parser/copyfuncs.c | 534 +- src/parser/gram.c | 64720 ++++++++-------- src/parser/gram.h | 1767 +- src/parser/gram.y | 2864 +- src/parser/keywords.c | 87 +- src/parser/kwlookup.c | 88 - src/parser/list.c | 6 +- src/parser/makefuncs.c | 55 +- src/parser/nodes.c | 4 +- src/parser/outfuncs.c | 212 +- src/parser/parser.c | 21 +- src/parser/scan.c | 225 +- src/parser/scan.l | 11 +- src/parser/scansup.c | 4 +- src/parser/snprintf.c | 2 +- src/parser/stringinfo.c | 4 +- src/parser/value.c | 4 +- src/parser/wchar.c | 104 +- src/protocol/pool_process_query.c | 54 +- src/protocol/pool_proto_modules.c | 77 +- src/rewrite/pool_timestamp.c | 118 +- .../timestamp/expected/insert.out | 2 +- .../timestamp/expected/update.out | 2 +- .../010.rewrite_timestamp/timestamp/main.c | 2 +- .../010.rewrite_timestamp/timestamp/run-test | 4 +- 45 files changed, 39107 insertions(+), 33139 deletions(-) delete mode 100644 src/parser/kwlookup.c diff --git a/src/context/pool_query_context.c b/src/context/pool_query_context.c index 877164fcb..d31966463 100644 --- a/src/context/pool_query_context.c +++ b/src/context/pool_query_context.c @@ -3,7 +3,7 @@ * * $Header$ * - * pgpool: a language independent connection pool server for PostgreSQL + * pgpool: a language independent connection pool server for PostgreSQL * written by Tatsuo Ishii * * Copyright (c) 2003-2017 PgPool Global Development Group @@ -163,7 +163,7 @@ void pool_set_node_to_be_sent(POOL_QUERY_CONTEXT *query_context, int node_id) errdetail("backend node id: %d out of range, node id can be between 0 and %d",node_id,MAX_NUM_BACKENDS))); query_context->where_to_send[node_id] = true; - + return; } @@ -180,7 +180,7 @@ void pool_unset_node_to_be_sent(POOL_QUERY_CONTEXT *query_context, int node_id) errdetail("backend node id: %d out of range, node id can be between 0 and %d",node_id,MAX_NUM_BACKENDS))); query_context->where_to_send[node_id] = false; - + return; } @@ -472,7 +472,7 @@ void pool_where_to_send(POOL_QUERY_CONTEXT *query_context, char *query, Node *no is_select_query(node, query) && MAJOR(backend) == PROTO_MAJOR_V3) { - /* + /* * If (we are outside of an explicit transaction) OR * (the transaction has not issued a write query yet, AND * transaction isolation level is not SERIALIZABLE) @@ -513,7 +513,7 @@ void pool_where_to_send(POOL_QUERY_CONTEXT *query_context, char *query, Node *no } /* - * If a writing function call is used, + * If a writing function call is used, * we prefer to send to the primary. */ else if (pool_has_function_call(node)) @@ -605,7 +605,7 @@ void pool_where_to_send(POOL_QUERY_CONTEXT *query_context, char *query, Node *no { pool_setall_node_to_be_sent(query_context); } - /* + /* * If (we are outside of an explicit transaction) OR * (the transaction has not issued a write query yet, AND * transaction isolation level is not SERIALIZABLE) @@ -813,20 +813,20 @@ POOL_STATUS pool_send_and_wait(POOL_QUERY_CONTEXT *query_context, else string = query_context->rewritten_query; } - + wait_for_query_response_with_trans_cleanup(frontend, CONNECTION(backend, i), MAJOR(backend), MASTER_CONNECTION(backend)->pid, MASTER_CONNECTION(backend)->key); - + /* * Check if some error detected. If so, emit * log. This is useful when invalid encoding error * occurs. In this case, PostgreSQL does not report * what statement caused that error and make users * confused. - */ + */ per_node_error_log(backend, i, string, "pool_send_and_wait: Error or notice message from backend: ", true); } @@ -881,7 +881,7 @@ POOL_STATUS pool_extended_send_and_wait(POOL_QUERY_CONTEXT *query_context, } if (!rewritten_begin) - { + { str_len = len; str = contents; } @@ -1036,7 +1036,7 @@ POOL_STATUS pool_extended_send_and_wait(POOL_QUERY_CONTEXT *query_context, * occurs. In this case, PostgreSQL does not report * what statement caused that error and make users * confused. - */ + */ per_node_error_log(backend, i, str, "pool_send_and_wait: Error or notice message from backend: ", true); } } @@ -1070,6 +1070,8 @@ static POOL_DEST send_to_where(Node *node, char *query) /* From 9.5 include/nodes/node.h ("TAGS FOR STATEMENT NODES" part) */ static NodeTag nodemap[] = { + T_RawStmt, + T_Query, T_PlannedStmt, T_InsertStmt, T_DeleteStmt, @@ -1171,6 +1173,13 @@ static POOL_DEST send_to_where(Node *node, char *query) T_CreatePolicyStmt, T_AlterPolicyStmt, T_CreateTransformStmt, + T_CreateAmStmt, + T_CreatePublicationStmt, + T_AlterPublicationStmt, + T_CreateSubscriptionStmt, + T_DropSubscriptionStmt, + T_CreateStatsStmt, + T_AlterCollationStmt, }; if (bsearch(&nodeTag(node), nodemap, sizeof(nodemap)/sizeof(nodemap[0]), @@ -1368,7 +1377,7 @@ static POOL_DEST send_to_where(Node *node, char *query) /* This is temporary decision. where_to_send will inherit * same destination AS PREPARE. */ - return POOL_PRIMARY; + return POOL_PRIMARY; } /* @@ -1379,7 +1388,7 @@ static POOL_DEST send_to_where(Node *node, char *query) /* This is temporary decision. where_to_send will inherit * same destination AS PREPARE. */ - return POOL_PRIMARY; + return POOL_PRIMARY; } /* * SHOW @@ -1516,7 +1525,7 @@ bool is_set_transaction_serializable(Node *node) !strcmp("default_transaction_isolation", opt->defname)) { A_Const *v = (A_Const *)opt->arg; - + if (!strcasecmp(v->val.val.str, "serializable")) return true; } @@ -1655,7 +1664,7 @@ void pool_set_query_state(POOL_QUERY_CONTEXT *query_context, POOL_QUERY_STATE st /* * Return -1, 0 or 1 according to s1 is "before, equal or after" s2 in terms of state - * transition order. + * transition order. * The State transition order is defined as: UNPARSED < PARSE_COMPLETE < BIND_COMPLETE < EXECUTE_COMPLETE */ int statecmp(POOL_QUERY_STATE s1, POOL_QUERY_STATE s2) @@ -1691,7 +1700,7 @@ int statecmp(POOL_QUERY_STATE s1, POOL_QUERY_STATE s2) /* * Remove READ WRITE option from the packet of START TRANSACTION command. - * To free the return value is required. + * To free the return value is required. */ static char* remove_read_write(int len, const char* contents, int *rewritten_len) diff --git a/src/include/parser/gramparse.h b/src/include/parser/gramparse.h index 0284fe089..9ae02321c 100644 --- a/src/include/parser/gramparse.h +++ b/src/include/parser/gramparse.h @@ -8,8 +8,8 @@ * Definitions that are needed outside the core parser should be in parser.h. * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/gramparse.h @@ -47,8 +47,8 @@ typedef struct base_yy_extra_type */ bool have_lookahead; /* is lookahead info valid? */ int lookahead_token; /* one-token lookahead */ - core_YYSTYPE lookahead_yylval; /* yylval for lookahead token */ - YYLTYPE lookahead_yylloc; /* yylloc for lookahead token */ + core_YYSTYPE lookahead_yylval; /* yylval for lookahead token */ + YYLTYPE lookahead_yylloc; /* yylloc for lookahead token */ char *lookahead_end; /* end of current token */ char lookahead_hold_char; /* to be put back at *lookahead_end */ @@ -75,4 +75,4 @@ extern int base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, extern void parser_init(base_yy_extra_type *yyext); extern int base_yyparse(core_yyscan_t yyscanner); -#endif /* GRAMPARSE_H */ +#endif /* GRAMPARSE_H */ diff --git a/src/include/parser/keywords.h b/src/include/parser/keywords.h index 95978fb8b..63f074dc0 100644 --- a/src/include/parser/keywords.h +++ b/src/include/parser/keywords.h @@ -4,8 +4,8 @@ * lexical token lookup for key words in PostgreSQL * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/keywords.h @@ -36,4 +36,4 @@ extern const ScanKeyword *ScanKeywordLookup(const char *text, const ScanKeyword *keywords, int num_keywords); -#endif /* KEYWORDS_H */ +#endif /* KEYWORDS_H */ diff --git a/src/include/parser/kwlist.h b/src/include/parser/kwlist.h index 7641fd601..e202eebb8 100644 --- a/src/include/parser/kwlist.h +++ b/src/include/parser/kwlist.h @@ -7,8 +7,8 @@ * by the PG_KEYWORD macro, which is not defined in this file; it can * be defined by the caller for special purposes. * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -50,6 +50,7 @@ PG_KEYWORD("assertion", ASSERTION, UNRESERVED_KEYWORD) PG_KEYWORD("assignment", ASSIGNMENT, UNRESERVED_KEYWORD) PG_KEYWORD("asymmetric", ASYMMETRIC, RESERVED_KEYWORD) PG_KEYWORD("at", AT, UNRESERVED_KEYWORD) +PG_KEYWORD("attach", ATTACH, UNRESERVED_KEYWORD) PG_KEYWORD("attribute", ATTRIBUTE, UNRESERVED_KEYWORD) PG_KEYWORD("authorization", AUTHORIZATION, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("backward", BACKWARD, UNRESERVED_KEYWORD) @@ -82,6 +83,7 @@ PG_KEYWORD("coalesce", COALESCE, COL_NAME_KEYWORD) PG_KEYWORD("collate", COLLATE, RESERVED_KEYWORD) PG_KEYWORD("collation", COLLATION, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("column", COLUMN, RESERVED_KEYWORD) +PG_KEYWORD("columns", COLUMNS, UNRESERVED_KEYWORD) PG_KEYWORD("comment", COMMENT, UNRESERVED_KEYWORD) PG_KEYWORD("comments", COMMENTS, UNRESERVED_KEYWORD) PG_KEYWORD("commit", COMMIT, UNRESERVED_KEYWORD) @@ -128,6 +130,7 @@ PG_KEYWORD("delimiter", DELIMITER, UNRESERVED_KEYWORD) PG_KEYWORD("delimiters", DELIMITERS, UNRESERVED_KEYWORD) PG_KEYWORD("depends", DEPENDS, UNRESERVED_KEYWORD) PG_KEYWORD("desc", DESC, RESERVED_KEYWORD) +PG_KEYWORD("detach", DETACH, UNRESERVED_KEYWORD) PG_KEYWORD("dictionary", DICTIONARY, UNRESERVED_KEYWORD) PG_KEYWORD("disable", DISABLE_P, UNRESERVED_KEYWORD) PG_KEYWORD("discard", DISCARD, UNRESERVED_KEYWORD) @@ -172,6 +175,7 @@ PG_KEYWORD("from", FROM, RESERVED_KEYWORD) PG_KEYWORD("full", FULL, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("function", FUNCTION, UNRESERVED_KEYWORD) PG_KEYWORD("functions", FUNCTIONS, UNRESERVED_KEYWORD) +PG_KEYWORD("generated", GENERATED, UNRESERVED_KEYWORD) PG_KEYWORD("global", GLOBAL, UNRESERVED_KEYWORD) PG_KEYWORD("grant", GRANT, RESERVED_KEYWORD) PG_KEYWORD("granted", GRANTED, UNRESERVED_KEYWORD) @@ -252,6 +256,7 @@ PG_KEYWORD("names", NAMES, UNRESERVED_KEYWORD) PG_KEYWORD("national", NATIONAL, COL_NAME_KEYWORD) PG_KEYWORD("natural", NATURAL, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("nchar", NCHAR, COL_NAME_KEYWORD) +PG_KEYWORD("new", NEW, UNRESERVED_KEYWORD) PG_KEYWORD("next", NEXT, UNRESERVED_KEYWORD) PG_KEYWORD("no", NO, UNRESERVED_KEYWORD) PG_KEYWORD("none", NONE, COL_NAME_KEYWORD) @@ -269,6 +274,7 @@ PG_KEYWORD("of", OF, UNRESERVED_KEYWORD) PG_KEYWORD("off", OFF, UNRESERVED_KEYWORD) PG_KEYWORD("offset", OFFSET, RESERVED_KEYWORD) PG_KEYWORD("oids", OIDS, UNRESERVED_KEYWORD) +PG_KEYWORD("old", OLD, UNRESERVED_KEYWORD) PG_KEYWORD("on", ON, RESERVED_KEYWORD) PG_KEYWORD("only", ONLY, RESERVED_KEYWORD) PG_KEYWORD("operator", OPERATOR, UNRESERVED_KEYWORD) @@ -282,6 +288,7 @@ PG_KEYWORD("outer", OUTER_P, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("over", OVER, UNRESERVED_KEYWORD) PG_KEYWORD("overlaps", OVERLAPS, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("overlay", OVERLAY, COL_NAME_KEYWORD) +PG_KEYWORD("overriding", OVERRIDING, UNRESERVED_KEYWORD) PG_KEYWORD("owned", OWNED, UNRESERVED_KEYWORD) PG_KEYWORD("owner", OWNER, UNRESERVED_KEYWORD) PG_KEYWORD("parallel", PARALLEL, UNRESERVED_KEYWORD) @@ -306,6 +313,7 @@ PG_KEYWORD("privileges", PRIVILEGES, UNRESERVED_KEYWORD) PG_KEYWORD("procedural", PROCEDURAL, UNRESERVED_KEYWORD) PG_KEYWORD("procedure", PROCEDURE, UNRESERVED_KEYWORD) PG_KEYWORD("program", PROGRAM, UNRESERVED_KEYWORD) +PG_KEYWORD("publication", PUBLICATION, UNRESERVED_KEYWORD) PG_KEYWORD("quote", QUOTE, UNRESERVED_KEYWORD) PG_KEYWORD("range", RANGE, UNRESERVED_KEYWORD) PG_KEYWORD("read", READ, UNRESERVED_KEYWORD) @@ -315,6 +323,7 @@ PG_KEYWORD("recheck", RECHECK, UNRESERVED_KEYWORD) PG_KEYWORD("recursive", RECURSIVE, UNRESERVED_KEYWORD) PG_KEYWORD("ref", REF, UNRESERVED_KEYWORD) PG_KEYWORD("references", REFERENCES, RESERVED_KEYWORD) +PG_KEYWORD("referencing", REFERENCING, UNRESERVED_KEYWORD) PG_KEYWORD("refresh", REFRESH, UNRESERVED_KEYWORD) PG_KEYWORD("reindex", REINDEX, UNRESERVED_KEYWORD) PG_KEYWORD("relative", RELATIVE_P, UNRESERVED_KEYWORD) @@ -338,6 +347,7 @@ PG_KEYWORD("rows", ROWS, UNRESERVED_KEYWORD) PG_KEYWORD("rule", RULE, UNRESERVED_KEYWORD) PG_KEYWORD("savepoint", SAVEPOINT, UNRESERVED_KEYWORD) PG_KEYWORD("schema", SCHEMA, UNRESERVED_KEYWORD) +PG_KEYWORD("schemas", SCHEMAS, UNRESERVED_KEYWORD) PG_KEYWORD("scroll", SCROLL, UNRESERVED_KEYWORD) PG_KEYWORD("search", SEARCH, UNRESERVED_KEYWORD) PG_KEYWORD("second", SECOND_P, UNRESERVED_KEYWORD) @@ -371,6 +381,7 @@ PG_KEYWORD("stdout", STDOUT, UNRESERVED_KEYWORD) PG_KEYWORD("storage", STORAGE, UNRESERVED_KEYWORD) PG_KEYWORD("strict", STRICT_P, UNRESERVED_KEYWORD) PG_KEYWORD("strip", STRIP_P, UNRESERVED_KEYWORD) +PG_KEYWORD("subscription", SUBSCRIPTION, UNRESERVED_KEYWORD) PG_KEYWORD("substring", SUBSTRING, COL_NAME_KEYWORD) PG_KEYWORD("symmetric", SYMMETRIC, RESERVED_KEYWORD) PG_KEYWORD("sysid", SYSID, UNRESERVED_KEYWORD) @@ -440,10 +451,12 @@ PG_KEYWORD("xmlconcat", XMLCONCAT, COL_NAME_KEYWORD) PG_KEYWORD("xmlelement", XMLELEMENT, COL_NAME_KEYWORD) PG_KEYWORD("xmlexists", XMLEXISTS, COL_NAME_KEYWORD) PG_KEYWORD("xmlforest", XMLFOREST, COL_NAME_KEYWORD) +PG_KEYWORD("xmlnamespaces", XMLNAMESPACES, COL_NAME_KEYWORD) PG_KEYWORD("xmlparse", XMLPARSE, COL_NAME_KEYWORD) PG_KEYWORD("xmlpi", XMLPI, COL_NAME_KEYWORD) PG_KEYWORD("xmlroot", XMLROOT, COL_NAME_KEYWORD) PG_KEYWORD("xmlserialize", XMLSERIALIZE, COL_NAME_KEYWORD) +PG_KEYWORD("xmltable", XMLTABLE, COL_NAME_KEYWORD) PG_KEYWORD("year", YEAR_P, UNRESERVED_KEYWORD) PG_KEYWORD("yes", YES_P, UNRESERVED_KEYWORD) PG_KEYWORD("zone", ZONE, UNRESERVED_KEYWORD) diff --git a/src/include/parser/makefuncs.h b/src/include/parser/makefuncs.h index 52bd562e6..2d7f53a43 100644 --- a/src/include/parser/makefuncs.h +++ b/src/include/parser/makefuncs.h @@ -4,8 +4,8 @@ * prototypes for the creator functions (for primitive nodes) * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/makefuncs.h @@ -81,10 +81,10 @@ extern FuncExpr *makeFuncExpr(Oid funcid, Oid rettype, List *args, extern FuncCall *makeFuncCall(List *name, List *args, int location); -extern DefElem *makeDefElem(char *name, Node *arg); +extern DefElem *makeDefElem(char *name, Node *arg, int location); extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg, - DefElemAction defaction); + DefElemAction defaction, int location); extern GroupingSet *makeGroupingSet(GroupingSetKind kind, List *content, int location); -#endif /* MAKEFUNC_H */ +#endif /* MAKEFUNC_H */ diff --git a/src/include/parser/nodes.h b/src/include/parser/nodes.h index 71aa499b9..a53be5b4d 100644 --- a/src/include/parser/nodes.h +++ b/src/include/parser/nodes.h @@ -4,8 +4,8 @@ * Definitions for tagged nodes. * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/nodes.h @@ -21,10 +21,10 @@ * The first field of every node is NodeTag. Each node created (with makeNode) * will have one of the following tags as the value of its first field. * - * Note that the numbers of the node tags are not contiguous. We left holes - * here so that we can add more tags without changing the existing enum's. - * (Since node tag numbers never exist outside backend memory, there's no - * real harm in renumbering, it just costs a full rebuild ...) + * Note that inserting or deleting node types changes the numbers of other + * node types later in the list. This is no problem during development, since + * the node numbers are never stored on disk. But don't do it in a released + * branch, because that would represent an ABI break for extensions. */ typedef enum NodeTag { @@ -33,7 +33,7 @@ typedef enum NodeTag /* * TAGS FOR EXECUTOR NODES (execnodes.h) */ - T_IndexInfo = 10, + T_IndexInfo, T_ExprContext, T_ProjectionInfo, T_JunkFilter, @@ -44,8 +44,9 @@ typedef enum NodeTag /* * TAGS FOR PLAN NODES (plannodes.h) */ - T_Plan = 100, + T_Plan, T_Result, + T_ProjectSet, T_ModifyTable, T_Append, T_MergeAppend, @@ -63,7 +64,9 @@ typedef enum NodeTag T_SubqueryScan, T_FunctionScan, T_ValuesScan, + T_TableFuncScan, T_CteScan, + T_NamedTuplestoreScan, T_WorkTableScan, T_ForeignScan, T_CustomScan, @@ -78,6 +81,7 @@ typedef enum NodeTag T_WindowAgg, T_Unique, T_Gather, + T_GatherMerge, T_Hash, T_SetOp, T_LockRows, @@ -92,8 +96,9 @@ typedef enum NodeTag * * These should correspond one-to-one with Plan node types. */ - T_PlanState = 200, + T_PlanState, T_ResultState, + T_ProjectSetState, T_ModifyTableState, T_AppendState, T_MergeAppendState, @@ -110,8 +115,10 @@ typedef enum NodeTag T_TidScanState, T_SubqueryScanState, T_FunctionScanState, + T_TableFuncScanState, T_ValuesScanState, T_CteScanState, + T_NamedTuplestoreScanState, T_WorkTableScanState, T_ForeignScanState, T_CustomScanState, @@ -126,6 +133,7 @@ typedef enum NodeTag T_WindowAggState, T_UniqueState, T_GatherState, + T_GatherMergeState, T_HashState, T_SetOpState, T_LockRowsState, @@ -134,8 +142,9 @@ typedef enum NodeTag /* * TAGS FOR PRIMITIVE NODES (primnodes.h) */ - T_Alias = 300, + T_Alias, T_RangeVar, + T_TableFunc, T_Expr, T_Var, T_Const, @@ -169,6 +178,7 @@ typedef enum NodeTag T_RowCompareExpr, T_CoalesceExpr, T_MinMaxExpr, + T_SQLValueFunction, T_XmlExpr, T_NullTest, T_BooleanTest, @@ -176,6 +186,7 @@ typedef enum NodeTag T_CoerceToDomainValue, T_SetToDefault, T_CurrentOfExpr, + T_NextValueExpr, T_InferenceElem, T_TargetEntry, T_RangeTblRef, @@ -187,42 +198,24 @@ typedef enum NodeTag /* * TAGS FOR EXPRESSION STATE NODES (execnodes.h) * - * These correspond (not always one-for-one) to primitive nodes derived - * from Expr. + * ExprState represents the evaluation state for a whole expression tree. + * Most Expr-based plan nodes do not have a corresponding expression state + * node, they're fully handled within execExpr* - but sometimes the state + * needs to be shared with other parts of the executor, as for example + * with AggrefExprState, which nodeAgg.c has to modify. */ - T_ExprState = 400, - T_GenericExprState, - T_WholeRowVarExprState, + T_ExprState, T_AggrefExprState, - T_GroupingFuncExprState, T_WindowFuncExprState, - T_ArrayRefExprState, - T_FuncExprState, - T_ScalarArrayOpExprState, - T_BoolExprState, + T_SetExprState, T_SubPlanState, T_AlternativeSubPlanState, - T_FieldSelectState, - T_FieldStoreState, - T_CoerceViaIOState, - T_ArrayCoerceExprState, - T_ConvertRowtypeExprState, - T_CaseExprState, - T_CaseWhenState, - T_ArrayExprState, - T_RowExprState, - T_RowCompareExprState, - T_CoalesceExprState, - T_MinMaxExprState, - T_XmlExprState, - T_NullTestState, - T_CoerceToDomainState, T_DomainConstraintState, /* * TAGS FOR PLANNER NODES (relation.h) */ - T_PlannerInfo = 500, + T_PlannerInfo, T_PlannerGlobal, T_RelOptInfo, T_IndexOptInfo, @@ -246,7 +239,9 @@ typedef enum NodeTag T_MaterialPath, T_UniquePath, T_GatherPath, + T_GatherMergePath, T_ProjectionPath, + T_ProjectSetPath, T_SortPath, T_GroupPath, T_UpperUniquePath, @@ -268,20 +263,25 @@ typedef enum NodeTag T_PlaceHolderVar, T_SpecialJoinInfo, T_AppendRelInfo, + T_PartitionedChildRelInfo, T_PlaceHolderInfo, T_MinMaxAggInfo, T_PlannerParamItem, + T_RollupData, + T_GroupingSetData, + T_StatisticExtInfo, /* * TAGS FOR MEMORY NODES (memnodes.h) */ - T_MemoryContext = 600, + T_MemoryContext, T_AllocSetContext, + T_SlabContext, /* * TAGS FOR VALUE NODES (value.h) */ - T_Value = 650, + T_Value, T_Integer, T_Float, T_String, @@ -303,7 +303,8 @@ typedef enum NodeTag /* * TAGS FOR STATEMENT NODES (mostly in parsenodes.h) */ - T_Query = 700, + T_RawStmt, + T_Query, T_PlannedStmt, T_InsertStmt, T_DeleteStmt, @@ -408,11 +409,18 @@ typedef enum NodeTag T_AlterPolicyStmt, T_CreateTransformStmt, T_CreateAmStmt, + T_CreatePublicationStmt, + T_AlterPublicationStmt, + T_CreateSubscriptionStmt, + T_AlterSubscriptionStmt, + T_DropSubscriptionStmt, + T_CreateStatsStmt, + T_AlterCollationStmt, /* * TAGS FOR PARSE TREE NODES (parsenodes.h) */ - T_A_Expr = 900, + T_A_Expr, T_ColumnRef, T_ParamRef, T_A_Const, @@ -430,6 +438,8 @@ typedef enum NodeTag T_RangeSubselect, T_RangeFunction, T_RangeTableSample, + T_RangeTableFunc, + T_RangeTableFuncCol, T_TypeName, T_ColumnDef, T_IndexElem, @@ -442,7 +452,7 @@ typedef enum NodeTag T_SortGroupClause, T_GroupingSet, T_WindowClause, - T_FuncWithArgs, + T_ObjectWithArgs, T_AccessPriv, T_CreateOpClassItem, T_TableLikeClause, @@ -455,6 +465,12 @@ typedef enum NodeTag T_OnConflictClause, T_CommonTableExpr, T_RoleSpec, + T_TriggerTransition, + T_PartitionElem, + T_PartitionSpec, + T_PartitionBoundSpec, + T_PartitionRangeDatum, + T_PartitionCmd, /* * TAGS FOR REPLICATION GRAMMAR PARSE NODES (replnodes.h) @@ -465,6 +481,7 @@ typedef enum NodeTag T_DropReplicationSlotCmd, T_StartReplicationCmd, T_TimeLineHistoryCmd, + T_SQLCmd, /* * TAGS FOR RANDOM OTHER STUFF @@ -474,7 +491,7 @@ typedef enum NodeTag * purposes (usually because they are involved in APIs where we want to * pass multiple object types through the same pointer). */ - T_TriggerData = 950, /* in commands/trigger.h */ + T_TriggerData, /* in commands/trigger.h */ T_EventTriggerData, /* in commands/event_trigger.h */ T_ReturnSetInfo, /* in nodes/execnodes.h */ T_WindowObjectData, /* private in nodeWindowAgg.c */ @@ -541,7 +558,7 @@ extern Node *newNodeMacroHolder; newNodeMacroHolder->type = (tag), \ newNodeMacroHolder \ ) -#endif /* __GNUC__ */ +#endif /* __GNUC__ */ #define makeNode(_type_) ((_type_ *) newNode(sizeof(_type_),T_##_type_)) @@ -549,6 +566,26 @@ extern Node *newNodeMacroHolder; #define IsA(nodeptr,_type_) (nodeTag(nodeptr) == T_##_type_) +/* + * castNode(type, ptr) casts ptr to "type *", and if assertions are enabled, + * verifies that the node has the appropriate type (using its nodeTag()). + * + * Use an inline function when assertions are enabled, to avoid multiple + * evaluations of the ptr argument (which could e.g. be a function call). + */ +#ifdef USE_ASSERT_CHECKING +static inline Node * +castNodeImpl(NodeTag type, void *ptr) +{ + Assert(ptr == NULL || nodeTag(ptr) == type); + return (Node *) ptr; +} +#define castNode(_type_, nodeptr) ((_type_ *) castNodeImpl(T_##_type_, nodeptr)) +#else +#define castNode(_type_, nodeptr) ((_type_ *) (nodeptr)) +#endif /* USE_ASSERT_CHECKING */ + + /* ---------------------------------------------------------------- * extern declarations follow * ---------------------------------------------------------------- @@ -557,16 +594,17 @@ extern Node *newNodeMacroHolder; /* * nodes/{outfuncs.c,print.c} */ -extern char *nodeToString(const void *obj); - struct Bitmapset; /* not to include bitmapset.h here */ struct StringInfoData; /* not to include stringinfo.h here */ + extern void outNode(struct StringInfoData *str, const void *obj); extern void outToken(struct StringInfoData *str, const char *s); extern void outBitmapset(struct StringInfoData *str, const struct Bitmapset *bms); extern void outDatum(struct StringInfoData *str, uintptr_t value, int typlen, bool typbyval); +extern char *nodeToString(const void *obj); +extern char *bmsToString(const struct Bitmapset *bms); /* * nodes/{readfuncs.c,read.c} @@ -582,7 +620,14 @@ extern int16 *readAttrNumberCols(int numCols); /* * nodes/copyfuncs.c */ -extern void *copyObject(const void *obj); +extern void *copyObjectImpl(const void *obj); + +/* cast result back to argument type, if supported by compiler */ +#ifdef HAVE_TYPEOF +#define copyObject(obj) ((typeof(obj)) copyObjectImpl(obj)) +#else +#define copyObject(obj) copyObjectImpl(obj) +#endif /* * nodes/equalfuncs.c @@ -698,7 +743,8 @@ typedef enum AggStrategy { AGG_PLAIN, /* simple agg across all input rows */ AGG_SORTED, /* grouped agg, input must be sorted */ - AGG_HASHED /* grouped agg, use internal hashtable */ + AGG_HASHED, /* grouped agg, use internal hashtable */ + AGG_MIXED /* grouped agg, hash and sort both used */ } AggStrategy; /* @@ -764,4 +810,4 @@ typedef enum OnConflictAction ONCONFLICT_UPDATE /* ON CONFLICT ... DO UPDATE */ } OnConflictAction; -#endif /* NODES_H */ +#endif /* NODES_H */ diff --git a/src/include/parser/parsenodes.h b/src/include/parser/parsenodes.h index c49881ecd..ea9964249 100644 --- a/src/include/parser/parsenodes.h +++ b/src/include/parser/parsenodes.h @@ -7,11 +7,13 @@ * This is a byte (not character) offset in the original source text, to be * used for positioning an error cursor when there is an error related to * the node. Access to the original source text is needed to make use of - * the location. + * the location. At the topmost (statement) level, we also provide a + * statement length, likewise measured in bytes, for convenience in + * identifying statement boundaries in multi-statement source strings. * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/parsenodes.h @@ -26,19 +28,12 @@ #include "primnodes.h" #include "value.h" -/* - * include/nodes/bitmapset.h start - */ -typedef uint32 bitmapword; /* must be an unsigned type */ - -typedef struct Bitmapset +typedef enum OverridingKind { - int nwords; /* number of words in array */ - bitmapword words[1]; /* really [nwords] */ -} Bitmapset; /* VARIABLE LENGTH STRUCT */ - -extern Bitmapset *bms_copy(const Bitmapset *a); -/* include/nodes/bitmapset.h end */ + OVERRIDING_NOT_SET = 0, + OVERRIDING_USER_VALUE, + OVERRIDING_SYSTEM_VALUE +} OverridingKind; /* Possible sources of a Query */ typedef enum QuerySource @@ -104,9 +99,7 @@ typedef uint32 AclMode; /* a bitmask of privilege bits */ * for further processing by the rewriter and planner. * * Utility statements (i.e. non-optimizable statements) have the - * utilityStmt field set, and the Query itself is mostly dummy. - * DECLARE CURSOR is a special case: it is represented like a SELECT, - * but the original DeclareCursorStmt is stored in utilityStmt. + * utilityStmt field set, and the rest of the Query is mostly dummy. * * Planning converts a Query tree into a Plan tree headed by a PlannedStmt * node --- the Query structure is not used by the executor. @@ -123,14 +116,14 @@ typedef struct Query bool canSetTag; /* do I set the command result tag? */ - Node *utilityStmt; /* non-null if this is DECLARE CURSOR or a - * non-optimizable statement */ + Node *utilityStmt; /* non-null if commandType == CMD_UTILITY */ int resultRelation; /* rtable index of target relation for * INSERT/UPDATE/DELETE; 0 for SELECT */ bool hasAggs; /* has aggregates in tlist or havingQual */ bool hasWindowFuncs; /* has window functions in tlist */ + bool hasTargetSRFs; /* has set-returning functions in tlist */ bool hasSubLinks; /* has subquery SubLink */ bool hasDistinctOn; /* distinctClause is from DISTINCT ON */ bool hasRecursive; /* WITH RECURSIVE was specified */ @@ -145,6 +138,8 @@ typedef struct Query List *targetList; /* target list (of TargetEntry) */ + OverridingKind override; /* OVERRIDING clause */ + OnConflictExpr *onConflict; /* ON CONFLICT DO [NOTHING | UPDATE] */ List *returningList; /* return-values list (of TargetEntry) */ @@ -172,10 +167,18 @@ typedef struct Query List *constraintDeps; /* a list of pg_constraint OIDs that the query * depends on to be semantically valid */ - List *withCheckOptions; /* a list of WithCheckOption's, which - * are only added during rewrite and - * therefore are not written out as - * part of Query. */ + List *withCheckOptions; /* a list of WithCheckOption's, which are + * only added during rewrite and therefore + * are not written out as part of Query. */ + + /* + * The following two fields identify the portion of the source text string + * containing this query. They are typically only populated in top-level + * Queries, not in sub-queries. When not set, they might both be zero, or + * both be -1 meaning "unknown". + */ + int stmt_location; /* start location, or -1 if unknown */ + int stmt_len; /* length in bytes; 0 means "rest of string" */ } Query; @@ -348,7 +351,7 @@ typedef struct FuncCall List *args; /* the arguments (list of exprs) */ List *agg_order; /* ORDER BY (list of SortBy) */ Node *agg_filter; /* FILTER clause, if any */ - bool agg_within_group; /* ORDER BY appeared in WITHIN GROUP */ + bool agg_within_group; /* ORDER BY appeared in WITHIN GROUP */ bool agg_star; /* argument was really '*' */ bool agg_distinct; /* arguments were labeled DISTINCT */ bool func_variadic; /* last argument was labeled VARIADIC */ @@ -560,6 +563,39 @@ typedef struct RangeFunction * of function returning RECORD */ } RangeFunction; +/* + * RangeTableFunc - raw form of "table functions" such as XMLTABLE + */ +typedef struct RangeTableFunc +{ + NodeTag type; + bool lateral; /* does it have LATERAL prefix? */ + Node *docexpr; /* document expression */ + Node *rowexpr; /* row generator expression */ + List *namespaces; /* list of namespaces as ResTarget */ + List *columns; /* list of RangeTableFuncCol */ + Alias *alias; /* table alias & optional column aliases */ + int location; /* token location, or -1 if unknown */ +} RangeTableFunc; + +/* + * RangeTableFuncCol - one column in a RangeTableFunc->columns + * + * If for_ordinality is true (FOR ORDINALITY), then the column is an int4 + * column and the rest of the fields are ignored. + */ +typedef struct RangeTableFuncCol +{ + NodeTag type; + char *colname; /* name of generated column */ + TypeName *typeName; /* type of generated column */ + bool for_ordinality; /* does it have FOR ORDINALITY? */ + bool is_not_null; /* does it have NOT NULL? */ + Node *colexpr; /* column filter expression */ + Node *coldefexpr; /* column default value expression */ + int location; /* token location, or -1 if unknown */ +} RangeTableFuncCol; + /* * RangeTableSample - TABLESAMPLE appearing in a raw FROM clause * @@ -607,9 +643,11 @@ typedef struct ColumnDef bool is_local; /* column has local (non-inherited) def'n */ bool is_not_null; /* NOT NULL constraint specified? */ bool is_from_type; /* column definition came from table type */ + bool is_from_parent; /* column def came from partition parent */ char storage; /* attstorage setting, or 0 for default */ Node *raw_default; /* default value (untransformed parse tree) */ Node *cooked_default; /* default value (transformed expr tree) */ + char identity; /* attidentity setting */ CollateClause *collClause; /* untransformed COLLATE spec, if any */ Oid collOid; /* collation OID (InvalidOid if not set) */ List *constraints; /* other constraints on column */ @@ -631,9 +669,10 @@ typedef enum TableLikeOption { CREATE_TABLE_LIKE_DEFAULTS = 1 << 0, CREATE_TABLE_LIKE_CONSTRAINTS = 1 << 1, - CREATE_TABLE_LIKE_INDEXES = 1 << 2, - CREATE_TABLE_LIKE_STORAGE = 1 << 3, - CREATE_TABLE_LIKE_COMMENTS = 1 << 4, + CREATE_TABLE_LIKE_IDENTITY = 1 << 2, + CREATE_TABLE_LIKE_INDEXES = 1 << 3, + CREATE_TABLE_LIKE_STORAGE = 1 << 4, + CREATE_TABLE_LIKE_COMMENTS = 1 << 5, CREATE_TABLE_LIKE_ALL = PG_INT32_MAX } TableLikeOption; @@ -681,6 +720,7 @@ typedef struct DefElem char *defname; Node *arg; /* a (Value *) or a (TypeName *) */ DefElemAction defaction; /* unspecified action, or SET/ADD/DROP */ + int location; /* token location, or -1 if unknown */ } DefElem; /* @@ -712,6 +752,95 @@ typedef struct XmlSerialize int location; /* token location, or -1 if unknown */ } XmlSerialize; +/* Partitioning related definitions */ + +/* + * PartitionElem - parse-time representation of a single partition key + * + * expr can be either a raw expression tree or a parse-analyzed expression. + * We don't store these on-disk, though. + */ +typedef struct PartitionElem +{ + NodeTag type; + char *name; /* name of column to partition on, or NULL */ + Node *expr; /* expression to partition on, or NULL */ + List *collation; /* name of collation; NIL = default */ + List *opclass; /* name of desired opclass; NIL = default */ + int location; /* token location, or -1 if unknown */ +} PartitionElem; + +/* + * PartitionSpec - parse-time representation of a partition key specification + * + * This represents the key space we will be partitioning on. + */ +typedef struct PartitionSpec +{ + NodeTag type; + char *strategy; /* partitioning strategy ('list' or 'range') */ + List *partParams; /* List of PartitionElems */ + int location; /* token location, or -1 if unknown */ +} PartitionSpec; + +/* Internal codes for partitioning strategies */ +#define PARTITION_STRATEGY_LIST 'l' +#define PARTITION_STRATEGY_RANGE 'r' + +/* + * PartitionBoundSpec - a partition bound specification + * + * This represents the portion of the partition key space assigned to a + * particular partition. These are stored on disk in pg_class.relpartbound. + */ +typedef struct PartitionBoundSpec +{ + NodeTag type; + + char strategy; /* see PARTITION_STRATEGY codes above */ + + /* Partitioning info for LIST strategy: */ + List *listdatums; /* List of Consts (or A_Consts in raw tree) */ + + /* Partitioning info for RANGE strategy: */ + List *lowerdatums; /* List of PartitionRangeDatums */ + List *upperdatums; /* List of PartitionRangeDatums */ + + int location; /* token location, or -1 if unknown */ +} PartitionBoundSpec; + +/* + * PartitionRangeDatum - one of the values in a range partition bound + * + * This can be MINVALUE, MAXVALUE or a specific bounded value. + */ +typedef enum PartitionRangeDatumKind +{ + PARTITION_RANGE_DATUM_MINVALUE = -1, /* less than any other value */ + PARTITION_RANGE_DATUM_VALUE = 0, /* a specific (bounded) value */ + PARTITION_RANGE_DATUM_MAXVALUE = 1 /* greater than any other value */ +} PartitionRangeDatumKind; + +typedef struct PartitionRangeDatum +{ + NodeTag type; + + PartitionRangeDatumKind kind; + Node *value; /* Const (or A_Const in raw tree), if kind is + * PARTITION_RANGE_DATUM_VALUE, else NULL */ + + int location; /* token location, or -1 if unknown */ +} PartitionRangeDatum; + +/* + * PartitionCmd - info for ALTER TABLE ATTACH/DETACH PARTITION commands + */ +typedef struct PartitionCmd +{ + NodeTag type; + RangeVar *name; /* name of partition to attach/detach */ + PartitionBoundSpec *bound; /* FOR VALUES, if attaching */ +} PartitionCmd; /**************************************************************************** * Nodes for a Query tree @@ -788,6 +917,13 @@ typedef struct XmlSerialize * FirstLowInvalidHeapAttributeNumber from column numbers before storing * them in these fields. A whole-row Var reference is represented by * setting the bit for InvalidAttrNumber. + * + * securityQuals is a list of security barrier quals (boolean expressions), + * to be tested in the listed order before returning a row from the + * relation. It is always NIL in parser output. Entries are added by the + * rewriter to implement security-barrier views and/or row-level security. + * Note that the planner turns each boolean expression into an implicitly + * AND'ed sublist, as is its usual habit with qualification expressions. *-------------------- */ typedef enum RTEKind @@ -796,8 +932,10 @@ typedef enum RTEKind RTE_SUBQUERY, /* subquery in FROM */ RTE_JOIN, /* join */ RTE_FUNCTION, /* function in FROM */ + RTE_TABLEFUNC, /* TableFunc(.., column list) */ RTE_VALUES, /* VALUES (), (), ... */ - RTE_CTE /* common table expr (WITH list element) */ + RTE_CTE, /* common table expr (WITH list element) */ + RTE_NAMEDTUPLESTORE /* tuplestore, e.g. for AFTER triggers */ } RTEKind; typedef struct RangeTblEntry @@ -814,16 +952,21 @@ typedef struct RangeTblEntry /* * Fields valid for a plain relation RTE (else zero): + * + * As a special case, RTE_NAMEDTUPLESTORE can also set relid to indicate + * that the tuple format of the tuplestore is the same as the referenced + * relation. This allows plans referencing AFTER trigger transition + * tables to be invalidated if the underlying table is altered. */ Oid relid; /* OID of the relation */ char relkind; /* relation kind (see pg_class.relkind) */ - struct TableSampleClause *tablesample; /* sampling info, or NULL */ + struct TableSampleClause *tablesample; /* sampling info, or NULL */ /* * Fields valid for a subquery RTE (else NULL): */ Query *subquery; /* the sub-query */ - bool security_barrier; /* is from security_barrier view? */ + bool security_barrier; /* is from security_barrier view? */ /* * Fields valid for a join RTE (else NULL/zero): @@ -856,11 +999,15 @@ typedef struct RangeTblEntry List *functions; /* list of RangeTblFunction nodes */ bool funcordinality; /* is this called WITH ORDINALITY? */ + /* + * Fields valid for a TableFunc RTE (else NULL): + */ + TableFunc *tablefunc; + /* * Fields valid for a values RTE (else NIL): */ List *values_lists; /* list of expression lists */ - List *values_collations; /* OID list of column collation OIDs */ /* * Fields valid for a CTE RTE (else NULL/zero): @@ -868,9 +1015,27 @@ typedef struct RangeTblEntry char *ctename; /* name of the WITH list item */ Index ctelevelsup; /* number of query levels up */ bool self_reference; /* is this a recursive self-reference? */ - List *ctecoltypes; /* OID list of column type OIDs */ - List *ctecoltypmods; /* integer list of column typmods */ - List *ctecolcollations; /* OID list of column collation OIDs */ + + /* + * Fields valid for table functions, values, CTE and ENR RTEs (else NIL): + * + * We need these for CTE RTEs so that the types of self-referential + * columns are well-defined. For VALUES RTEs, storing these explicitly + * saves having to re-determine the info by scanning the values_lists. For + * ENRs, we store the types explicitly here (we could get the information + * from the catalogs if 'relid' was supplied, but we'd still need these + * for TupleDesc-based ENRs, so we might as well always store the type + * info here). + */ + List *coltypes; /* OID list of column type OIDs */ + List *coltypmods; /* integer list of column typmods */ + List *colcollations; /* OID list of column collation OIDs */ + + /* + * Fields valid for ENR RTEs (else NULL/zero): + */ + char *enrname; /* name of ephemeral named relation */ + double enrtuples; /* estimated or actual from caller */ /* * Fields valid in all RTEs: @@ -885,7 +1050,7 @@ typedef struct RangeTblEntry Bitmapset *selectedCols; /* columns needing SELECT permission */ Bitmapset *insertedCols; /* columns needing INSERT permission */ Bitmapset *updatedCols; /* columns needing UPDATE permission */ - List *securityQuals; /* any security barrier quals to apply */ + List *securityQuals; /* security barrier quals to apply, if any */ } RangeTblEntry; /* @@ -914,7 +1079,7 @@ typedef struct RangeTblFunction List *funccolnames; /* column names (list of String) */ List *funccoltypes; /* OID list of column type OIDs */ List *funccoltypmods; /* integer list of column typmods */ - List *funccolcollations; /* OID list of column collation OIDs */ + List *funccolcollations; /* OID list of column collation OIDs */ /* This is set during planning for use by the executor: */ Bitmapset *funcparams; /* PARAM_EXEC Param IDs affecting this func */ } RangeTblFunction; @@ -1207,7 +1372,7 @@ typedef struct CommonTableExpr List *ctecolnames; /* list of output column names */ List *ctecoltypes; /* OID list of output column type OIDs */ List *ctecoltypmods; /* integer list of output column typmods */ - List *ctecolcollations; /* OID list of column collation OIDs */ + List *ctecolcollations; /* OID list of column collation OIDs */ } CommonTableExpr; /* Convenience macro to get the output tlist of a CTE's query */ @@ -1217,6 +1382,45 @@ typedef struct CommonTableExpr ((Query *) (cte)->ctequery)->targetList : \ ((Query *) (cte)->ctequery)->returningList) +/* + * TriggerTransition - + * representation of transition row or table naming clause + * + * Only transition tables are initially supported in the syntax, and only for + * AFTER triggers, but other permutations are accepted by the parser so we can + * give a meaningful message from C code. + */ +typedef struct TriggerTransition +{ + NodeTag type; + char *name; + bool isNew; + bool isTable; +} TriggerTransition; + +/***************************************************************************** + * Raw Grammar Output Statements + *****************************************************************************/ + +/* + * RawStmt --- container for any one statement's raw parse tree + * + * Parse analysis converts a raw parse tree headed by a RawStmt node into + * an analyzed statement headed by a Query node. For optimizable statements, + * the conversion is complex. For utility statements, the parser usually just + * transfers the raw parse tree (sans RawStmt) into the utilityStmt field of + * the Query node, and all the useful work happens at execution time. + * + * stmt_location/stmt_len identify the portion of the source text string + * containing this raw statement (useful for multi-statement strings). + */ +typedef struct RawStmt +{ + NodeTag type; + Node *stmt; /* raw parse tree */ + int stmt_location; /* start location, or -1 if unknown */ + int stmt_len; /* length in bytes; 0 means "rest of string" */ +} RawStmt; /***************************************************************************** * Optimizable Statements @@ -1239,6 +1443,7 @@ typedef struct InsertStmt OnConflictClause *onConflictClause; /* ON CONFLICT clause */ List *returningList; /* list of expressions to return */ WithClause *withClause; /* WITH clause */ + OverridingKind override; /* OVERRIDING clause */ } InsertStmt; /* ---------------------- @@ -1385,6 +1590,9 @@ typedef struct SetOperationStmt * statements do need attention from parse analysis, and this is * done by routines in parser/parse_utilcmd.c after ProcessUtility * receives the command for execution. + * DECLARE CURSOR, EXPLAIN, and CREATE TABLE AS are special cases: + * they contain optimizable statements, which get processed normally + * by parser/analyze.c. *****************************************************************************/ /* @@ -1423,10 +1631,14 @@ typedef enum ObjectType OBJECT_OPERATOR, OBJECT_OPFAMILY, OBJECT_POLICY, + OBJECT_PUBLICATION, + OBJECT_PUBLICATION_REL, OBJECT_ROLE, OBJECT_RULE, OBJECT_SCHEMA, OBJECT_SEQUENCE, + OBJECT_SUBSCRIPTION, + OBJECT_STATISTIC_EXT, OBJECT_TABCONSTRAINT, OBJECT_TABLE, OBJECT_TABLESPACE, @@ -1453,7 +1665,7 @@ typedef struct CreateSchemaStmt { NodeTag type; char *schemaname; /* the name of the schema to create */ - Node *authrole; /* the owner of the created schema */ + RoleSpec *authrole; /* the owner of the created schema */ List *schemaElts; /* schema components (list of parsenodes) */ bool if_not_exists; /* just do nothing if schema already exists? */ } CreateSchemaStmt; @@ -1498,7 +1710,7 @@ typedef enum AlterTableType AT_ReAddConstraint, /* internal to commands/tablecmds.c */ AT_AlterConstraint, /* alter constraint */ AT_ValidateConstraint, /* validate constraint */ - AT_ValidateConstraintRecurse, /* internal to commands/tablecmds.c */ + AT_ValidateConstraintRecurse, /* internal to commands/tablecmds.c */ AT_ProcessedConstraint, /* pre-processed add constraint (local in * parser/parse_utilcmd.c) */ AT_AddIndexConstraint, /* add constraint using existing index */ @@ -1506,7 +1718,7 @@ typedef enum AlterTableType AT_DropConstraintRecurse, /* internal to commands/tablecmds.c */ AT_ReAddComment, /* internal to commands/tablecmds.c */ AT_AlterColumnType, /* alter column type */ - AT_AlterColumnGenericOptions, /* alter column OPTIONS (...) */ + AT_AlterColumnGenericOptions, /* alter column OPTIONS (...) */ AT_ChangeOwner, /* change owner */ AT_ClusterOn, /* CLUSTER ON */ AT_DropCluster, /* SET WITHOUT CLUSTER */ @@ -1540,7 +1752,12 @@ typedef enum AlterTableType AT_DisableRowSecurity, /* DISABLE ROW SECURITY */ AT_ForceRowSecurity, /* FORCE ROW SECURITY */ AT_NoForceRowSecurity, /* NO FORCE ROW SECURITY */ - AT_GenericOptions /* OPTIONS (...) */ + AT_GenericOptions, /* OPTIONS (...) */ + AT_AttachPartition, /* ATTACH PARTITION */ + AT_DetachPartition, /* DETACH PARTITION */ + AT_AddIdentity, /* ADD IDENTITY */ + AT_SetIdentity, /* SET identity column options */ + AT_DropIdentity /* DROP IDENTITY */ } AlterTableType; typedef struct ReplicaIdentityStmt @@ -1556,7 +1773,7 @@ typedef struct AlterTableCmd /* one subcommand of an ALTER TABLE */ AlterTableType subtype; /* Type of table alteration to apply */ char *name; /* column, constraint, or trigger to act on, * or tablespace */ - Node *newowner; /* RoleSpec */ + RoleSpec *newowner; Node *def; /* definition of new column, index, * constraint, or parent table */ DropBehavior behavior; /* RESTRICT or CASCADE for DROP cases */ @@ -1564,6 +1781,17 @@ typedef struct AlterTableCmd /* one subcommand of an ALTER TABLE */ } AlterTableCmd; +/* ---------------------- + * Alter Collation + * ---------------------- + */ +typedef struct AlterCollationStmt +{ + NodeTag type; + List *collname; +} AlterCollationStmt; + + /* ---------------------- * Alter Domain * @@ -1624,8 +1852,8 @@ typedef struct GrantStmt bool is_grant; /* true = GRANT, false = REVOKE */ GrantTargetType targtype; /* type of the grant target */ GrantObjectType objtype; /* kind of object being operated on */ - List *objects; /* list of RangeVar nodes, FuncWithArgs nodes, - * or plain names (as Value strings) */ + List *objects; /* list of RangeVar nodes, ObjectWithArgs + * nodes, or plain names (as Value strings) */ List *privileges; /* list of AccessPriv nodes */ /* privileges == NIL denotes ALL PRIVILEGES */ List *grantees; /* list of RoleSpec nodes */ @@ -1634,16 +1862,19 @@ typedef struct GrantStmt } GrantStmt; /* - * Note: FuncWithArgs carries only the types of the input parameters of the + * Note: ObjectWithArgs carries only the types of the input parameters of the * function. So it is sufficient to identify an existing function, but it * is not enough info to define a function nor to call it. */ -typedef struct FuncWithArgs +typedef struct ObjectWithArgs { NodeTag type; - List *funcname; /* qualified name of function */ - List *funcargs; /* list of Typename nodes */ -} FuncWithArgs; + List *objname; /* qualified name of function/operator */ + List *objargs; /* list of Typename nodes */ + bool args_unspecified; /* argument list was omitted, so name must + * be unique (note that objargs == NIL + * means zero args) */ +} ObjectWithArgs; /* * An access privilege, with optional list of column names @@ -1675,7 +1906,7 @@ typedef struct GrantRoleStmt List *grantee_roles; /* list of member roles to add/delete */ bool is_grant; /* true = GRANT, false = REVOKE */ bool admin_opt; /* with admin option */ - Node *grantor; /* set grantor to other than current role */ + RoleSpec *grantor; /* set grantor to other than current role */ DropBehavior behavior; /* drop behavior (for REVOKE) */ } GrantRoleStmt; @@ -1703,7 +1934,7 @@ typedef struct CopyStmt NodeTag type; RangeVar *relation; /* the relation to copy */ Node *query; /* the query (SELECT or DML statement with - * RETURNING) to copy */ + * RETURNING) to copy, as a raw parse tree */ List *attlist; /* List of column names (as Strings), or NIL * for all columns */ bool is_from; /* TO or FROM */ @@ -1766,6 +1997,8 @@ typedef struct CreateStmt List *tableElts; /* column definitions (list of ColumnDef) */ List *inhRelations; /* relations to inherit from (list of * inhRelation) */ + PartitionBoundSpec *partbound; /* FOR VALUES clause */ + PartitionSpec *partspec; /* PARTITION BY clause */ TypeName *ofTypename; /* OF typename */ List *constraints; /* constraints (list of Constraint nodes) */ List *options; /* options from WITH clause */ @@ -1811,6 +2044,7 @@ typedef enum ConstrType /* types of constraints */ * expect it */ CONSTR_NOTNULL, CONSTR_DEFAULT, + CONSTR_IDENTITY, CONSTR_CHECK, CONSTR_PRIMARY, CONSTR_UNIQUE, @@ -1849,6 +2083,7 @@ typedef struct Constraint bool is_no_inherit; /* is constraint non-inheritable? */ Node *raw_expr; /* expr, as untransformed parse tree */ char *cooked_expr; /* expr, as nodeToString representation */ + char generated_when; /* Fields used for unique constraints (UNIQUE and PRIMARY KEY): */ List *keys; /* String nodes naming referenced column(s) */ @@ -1872,7 +2107,8 @@ typedef struct Constraint char fk_upd_action; /* ON UPDATE action */ char fk_del_action; /* ON DELETE action */ List *old_conpfeqop; /* pg_constraint.conpfeqop of my former self */ - Oid old_pktable_oid; /* pg_constraint.confrelid of my former self */ + Oid old_pktable_oid; /* pg_constraint.confrelid of my former + * self */ /* Fields used for constraints that allow a NOT VALID specification */ bool skip_validation; /* skip validation of existing rows? */ @@ -1888,7 +2124,7 @@ typedef struct CreateTableSpaceStmt { NodeTag type; char *tablespacename; - Node *owner; + RoleSpec *owner; char *location; List *options; } CreateTableSpaceStmt; @@ -1945,8 +2181,7 @@ typedef struct AlterExtensionContentsStmt char *extname; /* Extension's name */ int action; /* +1 = add object, -1 = drop object */ ObjectType objtype; /* Object's type */ - List *objname; /* Qualified name of the object */ - List *objargs; /* Arguments if needed (eg, for functions) */ + Node *object; /* Qualified name of the object */ } AlterExtensionContentsStmt; /* ---------------------- @@ -1982,6 +2217,7 @@ typedef struct CreateForeignServerStmt char *servertype; /* optional server type */ char *version; /* optional server version */ char *fdwname; /* FDW name */ + bool if_not_exists; /* just do nothing if it already exists? */ List *options; /* generic options to server */ } CreateForeignServerStmt; @@ -2014,15 +2250,16 @@ typedef struct CreateForeignTableStmt typedef struct CreateUserMappingStmt { NodeTag type; - Node *user; /* user role */ + RoleSpec *user; /* user role */ char *servername; /* server name */ + bool if_not_exists; /* just do nothing if it already exists? */ List *options; /* generic options to server */ } CreateUserMappingStmt; typedef struct AlterUserMappingStmt { NodeTag type; - Node *user; /* user role */ + RoleSpec *user; /* user role */ char *servername; /* server name */ List *options; /* generic options to server */ } AlterUserMappingStmt; @@ -2030,7 +2267,7 @@ typedef struct AlterUserMappingStmt typedef struct DropUserMappingStmt { NodeTag type; - Node *user; /* user role */ + RoleSpec *user; /* user role */ char *servername; /* server name */ bool missing_ok; /* ignore missing mappings */ } DropUserMappingStmt; @@ -2068,6 +2305,7 @@ typedef struct CreatePolicyStmt char *policy_name; /* Policy's name */ RangeVar *table; /* the table name the policy applies to */ char *cmd_name; /* the command name the policy applies to */ + bool permissive; /* restrictive or permissive policy */ List *roles; /* the roles associated with the policy */ Node *qual; /* the policy's condition */ Node *with_check; /* the policy's WITH CHECK condition. */ @@ -2118,6 +2356,8 @@ typedef struct CreateTrigStmt List *columns; /* column names, or NIL for all columns */ Node *whenClause; /* qual expression, or NULL if none */ bool isconstraint; /* This is a constraint trigger */ + /* explicitly named transition data */ + List *transitionRels; /* TriggerTransition nodes, or NIL if none */ /* The remaining fields are only used for constraint triggers */ bool deferrable; /* [NOT] DEFERRABLE */ bool initdeferred; /* INITIALLY {DEFERRED|IMMEDIATE} */ @@ -2192,7 +2432,7 @@ typedef struct CreateRoleStmt typedef struct AlterRoleStmt { NodeTag type; - Node *role; /* role */ + RoleSpec *role; /* role */ List *options; /* List of DefElem nodes */ int action; /* +1 = add members, -1 = drop members */ } AlterRoleStmt; @@ -2200,7 +2440,7 @@ typedef struct AlterRoleStmt typedef struct AlterRoleSetStmt { NodeTag type; - Node *role; /* role */ + RoleSpec *role; /* role */ char *database; /* database name, or NULL */ VariableSetStmt *setstmt; /* SET or RESET subcommand */ } AlterRoleSetStmt; @@ -2223,6 +2463,7 @@ typedef struct CreateSeqStmt RangeVar *sequence; /* the sequence to create */ List *options; Oid ownerId; /* ID of owner, or InvalidOid for default */ + bool for_identity; bool if_not_exists; /* just do nothing if it already exists? */ } CreateSeqStmt; @@ -2231,6 +2472,7 @@ typedef struct AlterSeqStmt NodeTag type; RangeVar *sequence; /* the sequence to alter */ List *options; + bool for_identity; bool missing_ok; /* skip error if a role is missing? */ } AlterSeqStmt; @@ -2246,6 +2488,7 @@ typedef struct DefineStmt List *defnames; /* qualified name (list of Value strings) */ List *args; /* a list of TypeName (if needed) */ List *definition; /* a list of DefElem */ + bool if_not_exists; /* just do nothing if it already exists? */ } DefineStmt; /* ---------------------- @@ -2284,12 +2527,11 @@ typedef struct CreateOpClassItem { NodeTag type; int itemtype; /* see codes above */ - /* fields used for an operator or function item: */ - List *name; /* operator or function name */ - List *args; /* argument types */ + ObjectWithArgs *name; /* operator or function name and args */ int number; /* strategy num or support proc num */ List *order_family; /* only used for ordering operators */ - List *class_args; /* only used for functions */ + List *class_args; /* amproclefttype/amprocrighttype or + * amoplefttype/amoprighttype */ /* fields used for a storagetype item: */ TypeName *storedtype; /* datatype stored in index */ } CreateOpClassItem; @@ -2326,8 +2568,7 @@ typedef struct AlterOpFamilyStmt typedef struct DropStmt { NodeTag type; - List *objects; /* list of sublists of names (as Values) */ - List *arguments; /* list of sublists of arguments (as Values) */ + List *objects; /* list of names */ ObjectType removeType; /* object type */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */ bool missing_ok; /* skip error if object is missing? */ @@ -2354,8 +2595,7 @@ typedef struct CommentStmt { NodeTag type; ObjectType objtype; /* Object's type */ - List *objname; /* Qualified name of the object */ - List *objargs; /* Arguments if needed (eg, for functions) */ + Node *object; /* Qualified name of the object */ char *comment; /* Comment to insert, or NULL to remove */ } CommentStmt; @@ -2367,8 +2607,7 @@ typedef struct SecLabelStmt { NodeTag type; ObjectType objtype; /* Object's type */ - List *objname; /* Qualified name of the object */ - List *objargs; /* Arguments if needed (eg, for functions) */ + Node *object; /* Qualified name of the object */ char *provider; /* Label provider (or NULL) */ char *label; /* New security label to be assigned */ } SecLabelStmt; @@ -2376,9 +2615,9 @@ typedef struct SecLabelStmt /* ---------------------- * Declare Cursor Statement * - * Note: the "query" field of DeclareCursorStmt is only used in the raw grammar - * output. After parse analysis it's set to null, and the Query points to the - * DeclareCursorStmt, not vice versa. + * The "query" field is initially a raw parse tree, and is converted to a + * Query node during parse analysis. Note that rewriting and planning + * of the query are always postponed until execution. * ---------------------- */ #define CURSOR_OPT_BINARY 0x0001 /* BINARY */ @@ -2397,7 +2636,7 @@ typedef struct DeclareCursorStmt NodeTag type; char *portalname; /* name of the portal (cursor) */ int options; /* bitmask of options (see above) */ - Node *query; /* the raw SELECT query */ + Node *query; /* the query (see comments above) */ } DeclareCursorStmt; /* ---------------------- @@ -2471,6 +2710,20 @@ typedef struct IndexStmt bool if_not_exists; /* just do nothing if index already exists? */ } IndexStmt; +/* ---------------------- + * Create Statistics Statement + * ---------------------- + */ +typedef struct CreateStatsStmt +{ + NodeTag type; + List *defnames; /* qualified name (list of Value strings) */ + List *stat_types; /* stat types (list of Value strings) */ + List *exprs; /* expressions to build statistics on */ + List *relations; /* rels to build stats on (list of RangeVar) */ + bool if_not_exists; /* do nothing if stats name already exists */ +} CreateStatsStmt; + /* ---------------------- * Create Function Statement * ---------------------- @@ -2508,7 +2761,7 @@ typedef struct FunctionParameter typedef struct AlterFunctionStmt { NodeTag type; - FuncWithArgs *func; /* name and args of function */ + ObjectWithArgs *func; /* name and args of function */ List *actions; /* list of DefElem */ } AlterFunctionStmt; @@ -2542,8 +2795,7 @@ typedef struct RenameStmt ObjectType renameType; /* OBJECT_TABLE, OBJECT_COLUMN, etc */ ObjectType relationType; /* if column name, associated relation type */ RangeVar *relation; /* in case it's a table */ - List *object; /* in case it's some other object */ - List *objarg; /* argument types, if applicable */ + Node *object; /* in case it's some other object */ char *subname; /* name of contained object (column, rule, * trigger, etc) */ char *newname; /* the new name */ @@ -2560,8 +2812,7 @@ typedef struct AlterObjectDependsStmt NodeTag type; ObjectType objectType; /* OBJECT_FUNCTION, OBJECT_TRIGGER, etc */ RangeVar *relation; /* in case a table is involved */ - List *objname; /* name of the object */ - List *objargs; /* argument types, if applicable */ + Node *object; /* name of the object */ Value *extname; /* extension name */ } AlterObjectDependsStmt; @@ -2574,8 +2825,7 @@ typedef struct AlterObjectSchemaStmt NodeTag type; ObjectType objectType; /* OBJECT_TABLE, OBJECT_TYPE, etc */ RangeVar *relation; /* in case it's a table */ - List *object; /* in case it's some other object */ - List *objarg; /* argument types, if applicable */ + Node *object; /* in case it's some other object */ char *newschema; /* the new schema */ bool missing_ok; /* skip error if missing? */ } AlterObjectSchemaStmt; @@ -2589,9 +2839,8 @@ typedef struct AlterOwnerStmt NodeTag type; ObjectType objectType; /* OBJECT_TABLE, OBJECT_TYPE, etc */ RangeVar *relation; /* in case it's a table */ - List *object; /* in case it's some other object */ - List *objarg; /* argument types, if applicable */ - Node *newowner; /* the new owner */ + Node *object; /* in case it's some other object */ + RoleSpec *newowner; /* the new owner */ } AlterOwnerStmt; @@ -2602,8 +2851,7 @@ typedef struct AlterOwnerStmt typedef struct AlterOperatorStmt { NodeTag type; - List *opername; /* operator name */ - List *operargs; /* operator's argument TypeNames */ + ObjectWithArgs *opername; /* operator name and argument types */ List *options; /* List of DefElem nodes */ } AlterOperatorStmt; @@ -2722,10 +2970,11 @@ typedef struct AlterEnumStmt { NodeTag type; List *typeName; /* qualified name (list of Value strings) */ + char *oldVal; /* old enum value's name, if renaming */ char *newVal; /* new enum value's name */ char *newValNeighbor; /* neighboring enum value, if specified */ bool newValIsAfter; /* place new enum value after neighbor? */ - bool skipIfExists; /* no error if label already exists */ + bool skipIfNewValExists; /* no error if new already exists? */ } AlterEnumStmt; /* ---------------------- @@ -2744,7 +2993,7 @@ typedef struct ViewStmt NodeTag type; RangeVar *view; /* the view to be created */ List *aliases; /* target column names */ - Node *query; /* the SELECT query */ + Node *query; /* the SELECT query (as a raw parse tree) */ bool replace; /* replace an existing view? */ List *options; /* options from WITH clause */ ViewCheckOption withCheckOption; /* WITH CHECK OPTION */ @@ -2853,9 +3102,9 @@ typedef struct VacuumStmt /* ---------------------- * Explain Statement * - * The "query" field is either a raw parse tree (SelectStmt, InsertStmt, etc) - * or a Query node if parse analysis has been done. Note that rewriting and - * planning of the query are always postponed until execution of EXPLAIN. + * The "query" field is initially a raw parse tree, and is converted to a + * Query node during parse analysis. Note that rewriting and planning + * of the query are always postponed until execution. * ---------------------- */ typedef struct ExplainStmt @@ -2957,7 +3206,7 @@ typedef struct ConstraintsSetStmt */ /* Reindex options */ -#define REINDEXOPT_VERBOSE 1 << 0 /* print progress info */ +#define REINDEXOPT_VERBOSE 1 << 0 /* print progress info */ typedef enum ReindexObjectType { @@ -2986,8 +3235,8 @@ typedef struct CreateConversionStmt { NodeTag type; List *conversion_name; /* Name of the conversion */ - char *for_encoding_name; /* source encoding name */ - char *to_encoding_name; /* destination encoding name */ + char *for_encoding_name; /* source encoding name */ + char *to_encoding_name; /* destination encoding name */ List *func_name; /* qualified conversion function name */ bool def; /* is this a default conversion? */ } CreateConversionStmt; @@ -3001,7 +3250,7 @@ typedef struct CreateCastStmt NodeTag type; TypeName *sourcetype; TypeName *targettype; - FuncWithArgs *func; + ObjectWithArgs *func; CoercionContext context; bool inout; } CreateCastStmt; @@ -3016,8 +3265,8 @@ typedef struct CreateTransformStmt bool replace; TypeName *type_name; char *lang; - FuncWithArgs *fromsql; - FuncWithArgs *tosql; + ObjectWithArgs *fromsql; + ObjectWithArgs *tosql; } CreateTransformStmt; /* ---------------------- @@ -3074,7 +3323,7 @@ typedef struct ReassignOwnedStmt { NodeTag type; List *roles; - Node *newrole; + RoleSpec *newrole; } ReassignOwnedStmt; /* @@ -3116,4 +3365,64 @@ typedef struct AlterTSConfigurationStmt bool missing_ok; /* for DROP - skip error if missing? */ } AlterTSConfigurationStmt; -#endif /* PARSENODES_H */ + +typedef struct CreatePublicationStmt +{ + NodeTag type; + char *pubname; /* Name of of the publication */ + List *options; /* List of DefElem nodes */ + List *tables; /* Optional list of tables to add */ + bool for_all_tables; /* Special publication for all tables in db */ +} CreatePublicationStmt; + +typedef struct AlterPublicationStmt +{ + NodeTag type; + char *pubname; /* Name of of the publication */ + + /* parameters used for ALTER PUBLICATION ... WITH */ + List *options; /* List of DefElem nodes */ + + /* parameters used for ALTER PUBLICATION ... ADD/DROP TABLE */ + List *tables; /* List of tables to add/drop */ + bool for_all_tables; /* Special publication for all tables in db */ + DefElemAction tableAction; /* What action to perform with the tables */ +} AlterPublicationStmt; + +typedef struct CreateSubscriptionStmt +{ + NodeTag type; + char *subname; /* Name of of the subscription */ + char *conninfo; /* Connection string to publisher */ + List *publication; /* One or more publication to subscribe to */ + List *options; /* List of DefElem nodes */ +} CreateSubscriptionStmt; + +typedef enum AlterSubscriptionType +{ + ALTER_SUBSCRIPTION_OPTIONS, + ALTER_SUBSCRIPTION_CONNECTION, + ALTER_SUBSCRIPTION_PUBLICATION, + ALTER_SUBSCRIPTION_REFRESH, + ALTER_SUBSCRIPTION_ENABLED +} AlterSubscriptionType; + +typedef struct AlterSubscriptionStmt +{ + NodeTag type; + AlterSubscriptionType kind; /* ALTER_SUBSCRIPTION_OPTIONS, etc */ + char *subname; /* Name of of the subscription */ + char *conninfo; /* Connection string to publisher */ + List *publication; /* One or more publication to subscribe to */ + List *options; /* List of DefElem nodes */ +} AlterSubscriptionStmt; + +typedef struct DropSubscriptionStmt +{ + NodeTag type; + char *subname; /* Name of of the subscription */ + bool missing_ok; /* Skip error if missing? */ + DropBehavior behavior; /* RESTRICT or CASCADE behavior */ +} DropSubscriptionStmt; + +#endif /* PARSENODES_H */ diff --git a/src/include/parser/parser.h b/src/include/parser/parser.h index b7c6f9b06..2ac15f14b 100644 --- a/src/include/parser/parser.h +++ b/src/include/parser/parser.h @@ -5,8 +5,8 @@ * * This is the external API for the raw lexing/parsing functions. * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parser.h @@ -24,7 +24,7 @@ typedef enum BACKSLASH_QUOTE_OFF, BACKSLASH_QUOTE_ON, BACKSLASH_QUOTE_SAFE_ENCODING -} BackslashQuoteType; +} BackslashQuoteType; /* GUC variables in scan.l (every one of these is a bad idea :-() */ extern int backslash_quote; @@ -34,6 +34,7 @@ extern PGDLLIMPORT bool standard_conforming_strings; /* Primary entry point for the raw parsing functions */ extern List *raw_parser(const char *str, bool *error); +extern Node *raw_parser2(List *parse_tree_list); /* Utility functions exported by gram.y (perhaps these should be elsewhere) */ extern List *SystemFuncName(char *name); @@ -41,4 +42,8 @@ extern TypeName *SystemTypeName(char *name); extern void parser_set_param(const char *name, const char *value); -#endif /* PARSER_H */ +extern Node *makeTypeCast(Node *arg, TypeName *typename, int location); +extern Node *makeStringConstCast(char *str, int location, TypeName *typename); +extern Node *makeIntConst(int val, int location); + +#endif /* PARSER_H */ diff --git a/src/include/parser/pg_class.h b/src/include/parser/pg_class.h index d0ef919ed..b745d1639 100644 --- a/src/include/parser/pg_class.h +++ b/src/include/parser/pg_class.h @@ -5,8 +5,8 @@ * along with the relation's initial contents. * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_class.h @@ -73,6 +73,7 @@ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO * not */ bool relispopulated; /* matview currently holds query results */ char relreplident; /* see REPLICA_IDENTITY_xxx constants */ + bool relispartition; /* is relation a partition? */ TransactionId relfrozenxid; /* all Xids < this are frozen in this rel */ TransactionId relminmxid; /* all multixacts in this rel are >= this. * this is really a MultiXactId */ @@ -81,6 +82,7 @@ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO /* NOTE: These fields are not present in a relcache entry's rd_rel field. */ aclitem relacl[1]; /* access permissions */ text reloptions[1]; /* access-method-specific options */ + pg_node_tree relpartbound; /* partition bound node tree */ #endif } FormData_pg_class; @@ -100,7 +102,7 @@ typedef FormData_pg_class *Form_pg_class; * ---------------- */ -#define Natts_pg_class 31 +#define Natts_pg_class 33 #define Anum_pg_class_relname 1 #define Anum_pg_class_relnamespace 2 #define Anum_pg_class_reltype 3 @@ -119,7 +121,7 @@ typedef FormData_pg_class *Form_pg_class; #define Anum_pg_class_relkind 16 #define Anum_pg_class_relnatts 17 #define Anum_pg_class_relchecks 18 -#define Anum_pg_class_relhasoids 19 +edefine Anum_pg_class_relhasoids 19 #define Anum_pg_class_relhaspkey 20 #define Anum_pg_class_relhasrules 21 #define Anum_pg_class_relhastriggers 22 @@ -128,10 +130,12 @@ typedef FormData_pg_class *Form_pg_class; #define Anum_pg_class_relforcerowsecurity 25 #define Anum_pg_class_relispopulated 26 #define Anum_pg_class_relreplident 27 -#define Anum_pg_class_relfrozenxid 28 -#define Anum_pg_class_relminmxid 29 -#define Anum_pg_class_relacl 30 -#define Anum_pg_class_reloptions 31 +#define Anum_pg_class_relispartition 28 +#define Anum_pg_class_relfrozenxid 29 +#define Anum_pg_class_relminmxid 30 +#define Anum_pg_class_relacl 31 +#define Anum_pg_class_reloptions 32 +#define Anum_pg_class_relpartbound 33 /* ---------------- * initial contents of pg_class @@ -146,30 +150,31 @@ typedef FormData_pg_class *Form_pg_class; * Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId; * similarly, "1" in relminmxid stands for FirstMultiXactId */ -DATA(insert OID = 1247 ( pg_type PGNSP 71 0 PGUID 0 0 0 0 0 0 0 f f p r 30 0 t f f f f f f t n 3 1 _null_ _null_ )); +DATA(insert OID = 1247 ( pg_type PGNSP 71 0 PGUID 0 0 0 0 0 0 0 f f p r 30 0 t f f f f f f t n f 3 1 _null_ _null_ _null_)); DESCR(""); -DATA(insert OID = 1249 ( pg_attribute PGNSP 75 0 PGUID 0 0 0 0 0 0 0 f f p r 21 0 f f f f f f f t n 3 1 _null_ _null_ )); +DATA(insert OID = 1249 ( pg_attribute PGNSP 75 0 PGUID 0 0 0 0 0 0 0 f f p r 22 0 f f f f f f f t n f 3 1 _null_ _null_ _null_)); DESCR(""); -DATA(insert OID = 1255 ( pg_proc PGNSP 81 0 PGUID 0 0 0 0 0 0 0 f f p r 29 0 t f f f f f f t n 3 1 _null_ _null_ )); +DATA(insert OID = 1255 ( pg_proc PGNSP 81 0 PGUID 0 0 0 0 0 0 0 f f p r 29 0 t f f f f f f t n f 3 1 _null_ _null_ _null_)); DESCR(""); -DATA(insert OID = 1259 ( pg_class PGNSP 83 0 PGUID 0 0 0 0 0 0 0 f f p r 31 0 t f f f f f f t n 3 1 _null_ _null_ )); +DATA(insert OID = 1259 ( pg_class PGNSP 83 0 PGUID 0 0 0 0 0 0 0 f f p r 33 0 t f f f f f f t n f 3 1 _null_ _null_ _null_)); DESCR(""); -#define RELKIND_RELATION 'r' /* ordinary table */ -#define RELKIND_INDEX 'i' /* secondary index */ -#define RELKIND_SEQUENCE 'S' /* sequence object */ -#define RELKIND_TOASTVALUE 't' /* for out-of-line values */ -#define RELKIND_VIEW 'v' /* view */ -#define RELKIND_COMPOSITE_TYPE 'c' /* composite type */ -#define RELKIND_FOREIGN_TABLE 'f' /* foreign table */ -#define RELKIND_MATVIEW 'm' /* materialized view */ +#define RELKIND_RELATION 'r' /* ordinary table */ +#define RELKIND_INDEX 'i' /* secondary index */ +#define RELKIND_SEQUENCE 'S' /* sequence object */ +#define RELKIND_TOASTVALUE 't' /* for out-of-line values */ +#define RELKIND_VIEW 'v' /* view */ +#define RELKIND_MATVIEW 'm' /* materialized view */ +#define RELKIND_COMPOSITE_TYPE 'c' /* composite type */ +#define RELKIND_FOREIGN_TABLE 'f' /* foreign table */ +#define RELKIND_PARTITIONED_TABLE 'p' /* partitioned table */ #endif /*NOT_USED_IN_PGPOOL*/ -#define RELPERSISTENCE_PERMANENT 'p' /* regular table */ -#define RELPERSISTENCE_UNLOGGED 'u' /* unlogged permanent table */ -#define RELPERSISTENCE_TEMP 't' /* temporary table */ +#define RELPERSISTENCE_PERMANENT 'p' /* regular table */ +#define RELPERSISTENCE_UNLOGGED 'u' /* unlogged permanent table */ +#define RELPERSISTENCE_TEMP 't' /* temporary table */ #if 0 /*NOT_USED_IN_PGPOOL*/ @@ -180,12 +185,27 @@ DESCR(""); /* all columns are logged as replica identity */ #define REPLICA_IDENTITY_FULL 'f' /* - * an explicitly chosen candidate key's columns are used as identity; - * will still be set if the index has been dropped, in that case it - * has the same meaning as 'd' + * an explicitly chosen candidate key's columns are used as replica identity. + * Note this will still be set if the index has been dropped; in that case it + * has the same meaning as 'd'. */ #define REPLICA_IDENTITY_INDEX 'i' #endif /*NOT_USED_IN_PGPOOL*/ #endif /* PG_CLASS_H */ + + + +#define DATEOID 1082 +#define TIMEOID 1083 + +/* OIDS 1100 - 1199 */ +#define TIMESTAMPOID 1114 +#define TIMESTAMPTZOID 1184 +#define INTERVALOID 1186 + +/* OIDS 1200 - 1299 */ +#define TIMETZOID 1266 + +/* OIDS 1500 - 1599 */ diff --git a/src/include/parser/pg_config_manual.h b/src/include/parser/pg_config_manual.h index d7e153b2f..bac8023ee 100644 --- a/src/include/parser/pg_config_manual.h +++ b/src/include/parser/pg_config_manual.h @@ -6,8 +6,8 @@ * for developers. If you edit any of these, be sure to do a *full* * rebuild (and an initdb if noted). * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/pg_config_manual.h @@ -73,12 +73,9 @@ #define INDEX_MAX_KEYS 32 /* - * Set the upper and lower bounds of sequence values. + * Maximum number of columns in a partition key */ -#ifdef NOT_USED -#define SEQ_MAXVALUE PG_INT64_MAX -#endif -#define SEQ_MINVALUE (-SEQ_MAXVALUE) +#define PARTITION_MAX_KEYS 32 /* * When we don't have native spinlocks, we use semaphores to simulate them. @@ -176,6 +173,24 @@ #define USE_PREFETCH #endif +/* + * Default and maximum values for backend_flush_after, bgwriter_flush_after + * and checkpoint_flush_after; measured in blocks. Currently, these are + * enabled by default if sync_file_range() exists, ie, only on Linux. Perhaps + * we could also enable by default if we have mmap and msync(MS_ASYNC)? + */ +#ifdef HAVE_SYNC_FILE_RANGE +#define DEFAULT_BACKEND_FLUSH_AFTER 0 /* never enabled by default */ +#define DEFAULT_BGWRITER_FLUSH_AFTER 64 +#define DEFAULT_CHECKPOINT_FLUSH_AFTER 32 +#else +#define DEFAULT_BACKEND_FLUSH_AFTER 0 +#define DEFAULT_BGWRITER_FLUSH_AFTER 0 +#define DEFAULT_CHECKPOINT_FLUSH_AFTER 0 +#endif +/* upper limit for all three variables */ +#define WRITEBACK_MAX_PENDING_FLUSHES 256 + /* * USE_SSL code should be compiled only when compiling with an SSL * implementation. (Currently, only OpenSSL is supported, but we might add @@ -310,6 +325,13 @@ */ /* #define RAW_EXPRESSION_COVERAGE_TEST */ +/* + * Define this to force all raw parse trees for DML statements to be scanned + * by raw_expression_tree_walker(), to facilitate catching errors and + * omissions in that function. + */ +/* #define RAW_EXPRESSION_COVERAGE_TEST */ + /* * Enable debugging print statements for lock-related operations. */ diff --git a/src/include/parser/pg_list.h b/src/include/parser/pg_list.h index 23dec464e..ff5cfc862 100644 --- a/src/include/parser/pg_list.h +++ b/src/include/parser/pg_list.h @@ -27,8 +27,8 @@ * always be so; try to be careful to maintain the distinction.) * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/pg_list.h @@ -108,26 +108,32 @@ list_length(const List *l) #define lfirst(lc) ((lc)->data.ptr_value) #define lfirst_int(lc) ((lc)->data.int_value) #define lfirst_oid(lc) ((lc)->data.oid_value) +#define lfirst_node(type,lc) castNode(type, lfirst(lc)) #define linitial(l) lfirst(list_head(l)) #define linitial_int(l) lfirst_int(list_head(l)) #define linitial_oid(l) lfirst_oid(list_head(l)) +#define linitial_node(type,l) castNode(type, linitial(l)) #define lsecond(l) lfirst(lnext(list_head(l))) #define lsecond_int(l) lfirst_int(lnext(list_head(l))) #define lsecond_oid(l) lfirst_oid(lnext(list_head(l))) +#define lsecond_node(type,l) castNode(type, lsecond(l)) #define lthird(l) lfirst(lnext(lnext(list_head(l)))) #define lthird_int(l) lfirst_int(lnext(lnext(list_head(l)))) #define lthird_oid(l) lfirst_oid(lnext(lnext(list_head(l)))) +#define lthird_node(type,l) castNode(type, lthird(l)) #define lfourth(l) lfirst(lnext(lnext(lnext(list_head(l))))) #define lfourth_int(l) lfirst_int(lnext(lnext(lnext(list_head(l))))) #define lfourth_oid(l) lfirst_oid(lnext(lnext(lnext(list_head(l))))) +#define lfourth_node(type,l) castNode(type, lfourth(l)) #define llast(l) lfirst(list_tail(l)) #define llast_int(l) lfirst_int(list_tail(l)) #define llast_oid(l) lfirst_oid(list_tail(l)) +#define llast_node(type,l) castNode(type, llast(l)) /* * Convenience macros for building fixed-length lists @@ -178,6 +184,20 @@ list_length(const List *l) (cell1) != NULL && (cell2) != NULL; \ (cell1) = lnext(cell1), (cell2) = lnext(cell2)) +/* + * for_both_cell - + * a convenience macro which loops through two lists starting from the + * specified cells of each. This macro loops through both lists at the same + * time, stopping when either list runs out of elements. Depending on the + * requirements of the call site, it may also be wise to assert that the + * lengths of the two lists are equal, and initcell1 and initcell2 are at + * the same position in the respective lists. + */ +#define for_both_cell(cell1, initcell1, cell2, initcell2) \ + for ((cell1) = (initcell1), (cell2) = (initcell2); \ + (cell1) != NULL && (cell2) != NULL; \ + (cell1) = lnext(cell1), (cell2) = lnext(cell2)) + /* * forthree - * the same for three lists @@ -206,6 +226,7 @@ extern ListCell *list_nth_cell(const List *list, int n); extern void *list_nth(const List *list, int n); extern int list_nth_int(const List *list, int n); extern Oid list_nth_oid(const List *list, int n); +#define list_nth_node(type,list,n) castNode(type, list_nth(list, n)) extern bool list_member(const List *list, const void *datum); extern bool list_member_ptr(const List *list, const void *datum); @@ -317,6 +338,6 @@ extern List *list_copy_tail(const List *list, int nskip); #define listCopy(list) list_copy(list) extern int length(List *list); -#endif /* ENABLE_LIST_COMPAT */ +#endif /* ENABLE_LIST_COMPAT */ -#endif /* PG_LIST_H */ +#endif /* PG_LIST_H */ diff --git a/src/include/parser/pg_trigger.h b/src/include/parser/pg_trigger.h index a0420eccc..8b3ac4a6e 100644 --- a/src/include/parser/pg_trigger.h +++ b/src/include/parser/pg_trigger.h @@ -5,8 +5,8 @@ * along with the relation's initial contents. * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_trigger.h @@ -59,8 +59,10 @@ CATALOG(pg_trigger,2620) int2vector tgattr; /* column numbers, if trigger is on columns */ #ifdef CATALOG_VARLEN - bytea tgargs BKI_FORCE_NOT_NULL; /* first\000second\000tgnargs\000 */ + bytea tgargs BKI_FORCE_NOT_NULL; /* first\000second\000tgnargs\000 */ pg_node_tree tgqual; /* WHEN expression, or NULL if none */ + NameData tgoldtable; /* old transition table, or NULL if none */ + NameData tgnewtable; /* new transition table, or NULL if none */ #endif } FormData_pg_trigger; @@ -76,7 +78,7 @@ typedef FormData_pg_trigger *Form_pg_trigger; * compiler constants for pg_trigger * ---------------- */ -#define Natts_pg_trigger 15 +#define Natts_pg_trigger 17 #define Anum_pg_trigger_tgrelid 1 #define Anum_pg_trigger_tgname 2 #define Anum_pg_trigger_tgfoid 3 @@ -92,6 +94,8 @@ typedef FormData_pg_trigger *Form_pg_trigger; #define Anum_pg_trigger_tgattr 13 #define Anum_pg_trigger_tgargs 14 #define Anum_pg_trigger_tgqual 15 +#define Anum_pg_trigger_tgoldtable 16 +#define Anum_pg_trigger_tgnewtable 17 /* Bits within tgtype */ #define TRIGGER_TYPE_ROW (1 << 0) @@ -145,4 +149,11 @@ typedef FormData_pg_trigger *Form_pg_trigger; #define TRIGGER_TYPE_MATCHES(type, level, timing, event) \ (((type) & (TRIGGER_TYPE_LEVEL_MASK | TRIGGER_TYPE_TIMING_MASK | (event))) == ((level) | (timing) | (event))) -#endif /* PG_TRIGGER_H */ +/* + * Macro to determine whether tgnewtable or tgoldtable has been specified for + * a trigger. + */ +#define TRIGGER_USES_TRANSITION_TABLE(namepointer) \ + ((namepointer) != (char *) NULL) + +#endif /* PG_TRIGGER_H */ diff --git a/src/include/parser/pg_wchar.h b/src/include/parser/pg_wchar.h index fee4516ec..3f262b4ab 100644 --- a/src/include/parser/pg_wchar.h +++ b/src/include/parser/pg_wchar.h @@ -3,8 +3,8 @@ * pg_wchar.h * multibyte-character support * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/mb/pg_wchar.h @@ -134,10 +134,12 @@ typedef unsigned int pg_wchar; #define LC_JISX0212 0x94 /* Japanese Kanji (JIS X 0212) */ #define LC_CNS11643_1 0x95 /* CNS 11643-1992 Plane 1 */ #define LC_CNS11643_2 0x96 /* CNS 11643-1992 Plane 2 */ -#define LC_JISX0213_1 0x97/* Japanese Kanji (JIS X 0213 Plane 1) (not - * supported) */ -#define LC_BIG5_1 0x98 /* Plane 1 Chinese traditional (not supported) */ -#define LC_BIG5_2 0x99 /* Plane 1 Chinese traditional (not supported) */ +#define LC_JISX0213_1 0x97 /* Japanese Kanji (JIS X 0213 Plane 1) + * (not supported) */ +#define LC_BIG5_1 0x98 /* Plane 1 Chinese traditional (not + * supported) */ +#define LC_BIG5_2 0x99 /* Plane 1 Chinese traditional (not + * supported) */ /* Is a leading byte for "official" multibyte encodings? */ #define IS_LC2(c) ((unsigned char)(c) >= 0x90 && (unsigned char)(c) <= 0x99) @@ -169,44 +171,44 @@ typedef unsigned int pg_wchar; /* * Charset IDs for private single byte encodings (0xa0-0xef) */ -#define LC_SISHENG 0xa0/* Chinese SiSheng characters for - * PinYin/ZhuYin (not supported) */ -#define LC_IPA 0xa1/* IPA (International Phonetic Association) - * (not supported) */ -#define LC_VISCII_LOWER 0xa2/* Vietnamese VISCII1.1 lower-case (not - * supported) */ -#define LC_VISCII_UPPER 0xa3/* Vietnamese VISCII1.1 upper-case (not - * supported) */ +#define LC_SISHENG 0xa0 /* Chinese SiSheng characters for + * PinYin/ZhuYin (not supported) */ +#define LC_IPA 0xa1 /* IPA (International Phonetic + * Association) (not supported) */ +#define LC_VISCII_LOWER 0xa2 /* Vietnamese VISCII1.1 lower-case (not + * supported) */ +#define LC_VISCII_UPPER 0xa3 /* Vietnamese VISCII1.1 upper-case (not + * supported) */ #define LC_ARABIC_DIGIT 0xa4 /* Arabic digit (not supported) */ #define LC_ARABIC_1_COLUMN 0xa5 /* Arabic 1-column (not supported) */ #define LC_ASCII_RIGHT_TO_LEFT 0xa6 /* ASCII (left half of ISO8859-1) with * right-to-left direction (not * supported) */ -#define LC_LAO 0xa7/* Lao characters (ISO10646 0E80..0EDF) (not - * supported) */ +#define LC_LAO 0xa7 /* Lao characters (ISO10646 0E80..0EDF) + * (not supported) */ #define LC_ARABIC_2_COLUMN 0xa8 /* Arabic 1-column (not supported) */ /* * Charset IDs for private multibyte encodings (0xf0-0xff) */ -#define LC_INDIAN_1_COLUMN 0xf0/* Indian charset for 1-column width glyphs - * (not supported) */ -#define LC_TIBETAN_1_COLUMN 0xf1/* Tibetan 1-column width glyphs (not - * supported) */ -#define LC_UNICODE_SUBSET_2 0xf2/* Unicode characters of the range - * U+2500..U+33FF. (not supported) */ -#define LC_UNICODE_SUBSET_3 0xf3/* Unicode characters of the range - * U+E000..U+FFFF. (not supported) */ -#define LC_UNICODE_SUBSET 0xf4/* Unicode characters of the range - * U+0100..U+24FF. (not supported) */ +#define LC_INDIAN_1_COLUMN 0xf0 /* Indian charset for 1-column width + * glyphs (not supported) */ +#define LC_TIBETAN_1_COLUMN 0xf1 /* Tibetan 1-column width glyphs (not + * supported) */ +#define LC_UNICODE_SUBSET_2 0xf2 /* Unicode characters of the range + * U+2500..U+33FF. (not supported) */ +#define LC_UNICODE_SUBSET_3 0xf3 /* Unicode characters of the range + * U+E000..U+FFFF. (not supported) */ +#define LC_UNICODE_SUBSET 0xf4 /* Unicode characters of the range + * U+0100..U+24FF. (not supported) */ #define LC_ETHIOPIC 0xf5 /* Ethiopic characters (not supported) */ #define LC_CNS11643_3 0xf6 /* CNS 11643-1992 Plane 3 */ #define LC_CNS11643_4 0xf7 /* CNS 11643-1992 Plane 4 */ #define LC_CNS11643_5 0xf8 /* CNS 11643-1992 Plane 5 */ #define LC_CNS11643_6 0xf9 /* CNS 11643-1992 Plane 6 */ #define LC_CNS11643_7 0xfa /* CNS 11643-1992 Plane 7 */ -#define LC_INDIAN_2_COLUMN 0xfb/* Indian charset for 2-column width glyphs - * (not supported) */ +#define LC_INDIAN_2_COLUMN 0xfb /* Indian charset for 2-column width + * glyphs (not supported) */ #define LC_TIBETAN 0xfc /* Tibetan (not supported) */ /* #define FREE 0xfd free (unused) */ /* #define FREE 0xfe free (unused) */ @@ -333,16 +335,22 @@ typedef struct pg_enc2gettext extern const pg_enc2gettext pg_enc2gettext_tbl[]; +/* + * Encoding names for ICU + */ +extern bool is_encoding_supported_by_icu(int encoding); +extern const char *get_encoding_name_for_icu(int encoding); + /* * pg_wchar stuff */ typedef int (*mb2wchar_with_len_converter) (const unsigned char *from, - pg_wchar *to, - int len); + pg_wchar *to, + int len); typedef int (*wchar2mb_with_len_converter) (const pg_wchar *from, - unsigned char *to, - int len); + unsigned char *to, + int len); typedef int (*mblen_converter) (const unsigned char *mbstr); @@ -354,12 +362,12 @@ typedef int (*mbverifier) (const unsigned char *mbstr, int len); typedef struct { - mb2wchar_with_len_converter mb2wchar_with_len; /* convert a multibyte - * string to a wchar */ - wchar2mb_with_len_converter wchar2mb_with_len; /* convert a wchar - * string to a multibyte */ + mb2wchar_with_len_converter mb2wchar_with_len; /* convert a multibyte + * string to a wchar */ + wchar2mb_with_len_converter wchar2mb_with_len; /* convert a wchar string + * to a multibyte */ mblen_converter mblen; /* get byte length of a char */ - mbdisplaylen_converter dsplen; /* get display width of a char */ + mbdisplaylen_converter dsplen; /* get display width of a char */ mbverifier mbverify; /* verify multibyte sequence */ int maxmblen; /* max bytes for a char in this encoding */ } pg_wchar_tbl; @@ -373,25 +381,81 @@ extern const pg_wchar_tbl pg_wchar_table[]; * characters up to 4 bytes long. For example, the byte sequence 0xC2 0x89 * would be represented by 0x0000C289, and 0xE8 0xA2 0xB4 by 0x00E8A2B4. * - * Maps are arrays of these structs, which must be in order by the lookup key - * (so that bsearch() can be used). + * There are three possible ways a character can be mapped: * - * UTF-8 to local code conversion map + * 1. Using a radix tree, from source to destination code. + * 2. Using a sorted array of source -> destination code pairs. This + * method is used for "combining" characters. There are so few of + * them that building a radix tree would be wasteful. + * 3. Using a conversion function. */ -typedef struct -{ - uint32 utf; /* UTF-8 */ - uint32 code; /* local code */ -} pg_utf_to_local; /* - * local code to UTF-8 conversion map + * Radix tree for character conversion. + * + * Logically, this is actually four different radix trees, for 1-byte, + * 2-byte, 3-byte and 4-byte inputs. The 1-byte tree is a simple lookup + * table from source to target code. The 2-byte tree consists of two levels: + * one lookup table for the first byte, where the value in the lookup table + * points to a lookup table for the second byte. And so on. + * + * Physically, all the trees are stored in one big array, in 'chars16' or + * 'chars32', depending on the maximum value that needs to be reprented. For + * each level in each tree, we also store lower and upper bound of allowed + * values - values outside those bounds are considered invalid, and are left + * out of the tables. + * + * In the intermediate levels of the trees, the values stored are offsets + * into the chars[16|32] array. + * + * In the beginning of the chars[16|32] array, there is always a number of + * zeros, so that you safely follow an index from an intermediate table + * without explicitly checking for a zero. Following a zero any number of + * times will always bring you to the dummy, all-zeros table in the + * beginning. This helps to shave some cycles when looking up values. */ typedef struct { - uint32 code; /* local code */ - uint32 utf; /* UTF-8 */ -} pg_local_to_utf; + /* + * Array containing all the values. Only one of chars16 or chars32 is + * used, depending on how wide the values we need to represent are. + */ + const uint16 *chars16; + const uint32 *chars32; + + /* Radix tree for 1-byte inputs */ + uint32 b1root; /* offset of table in the chars[16|32] array */ + uint8 b1_lower; /* min allowed value for a single byte input */ + uint8 b1_upper; /* max allowed value for a single byte input */ + + /* Radix tree for 2-byte inputs */ + uint32 b2root; /* offset of 1st byte's table */ + uint8 b2_1_lower; /* min/max allowed value for 1st input byte */ + uint8 b2_1_upper; + uint8 b2_2_lower; /* min/max allowed value for 2nd input byte */ + uint8 b2_2_upper; + + /* Radix tree for 3-byte inputs */ + uint32 b3root; /* offset of 1st byte's table */ + uint8 b3_1_lower; /* min/max allowed value for 1st input byte */ + uint8 b3_1_upper; + uint8 b3_2_lower; /* min/max allowed value for 2nd input byte */ + uint8 b3_2_upper; + uint8 b3_3_lower; /* min/max allowed value for 3rd input byte */ + uint8 b3_3_upper; + + /* Radix tree for 4-byte inputs */ + uint32 b4root; /* offset of 1st byte's table */ + uint8 b4_1_lower; /* min/max allowed value for 1st input byte */ + uint8 b4_1_upper; + uint8 b4_2_lower; /* min/max allowed value for 2nd input byte */ + uint8 b4_2_upper; + uint8 b4_3_lower; /* min/max allowed value for 3rd input byte */ + uint8 b4_3_upper; + uint8 b4_4_lower; /* min/max allowed value for 4th input byte */ + uint8 b4_4_upper; + +} pg_mb_radix_tree; /* * UTF-8 to local code conversion map (for combined characters) @@ -511,13 +575,13 @@ extern unsigned short CNStoBIG5(unsigned short cns, unsigned char lc); extern void UtfToLocal(const unsigned char *utf, int len, unsigned char *iso, - const pg_utf_to_local *map, int mapsize, + const pg_mb_radix_tree *map, const pg_utf_to_local_combined *cmap, int cmapsize, utf_local_conversion_func conv_func, int encoding); extern void LocalToUtf(const unsigned char *iso, int len, unsigned char *utf, - const pg_local_to_utf *map, int mapsize, + const pg_mb_radix_tree *map, const pg_local_to_utf_combined *cmap, int cmapsize, utf_local_conversion_func conv_func, int encoding); @@ -536,7 +600,7 @@ extern void check_encoding_conversion_args(int src_encoding, extern void report_invalid_encoding(int encoding, const char *mbstr, int len) pg_attribute_noreturn(); extern void report_untranslatable_char(int src_encoding, int dest_encoding, - const char *mbstr, int len) pg_attribute_noreturn(); + const char *mbstr, int len) pg_attribute_noreturn(); extern void local2local(const unsigned char *l, unsigned char *p, int len, int src_encoding, int dest_encoding, const unsigned char *tab); @@ -559,4 +623,4 @@ extern bool pg_utf8_islegal(const unsigned char *source, int length); extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len); #endif -#endif /* PG_WCHAR_H */ +#endif /* PG_WCHAR_H */ diff --git a/src/include/parser/primnodes.h b/src/include/parser/primnodes.h index 18439df86..a2138dee8 100644 --- a/src/include/parser/primnodes.h +++ b/src/include/parser/primnodes.h @@ -6,8 +6,8 @@ * Currently, these are mostly nodes for executable expressions * and join trees. * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group * - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group * + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/primnodes.h @@ -25,6 +25,20 @@ * ---------------------------------------------------------------- */ +/* + * include/nodes/bitmapset.h start + */ +typedef uint32 bitmapword; /* must be an unsigned type */ + +typedef struct Bitmapset +{ + int nwords; /* number of words in array */ + bitmapword words[1]; /* really [nwords] */ +} Bitmapset; /* VARIABLE LENGTH STRUCT */ + +extern Bitmapset *bms_copy(const Bitmapset *a); +/* include/nodes/bitmapset.h end */ + /* * Alias - * specifies an alias for a range variable; the alias might also @@ -41,13 +55,6 @@ typedef struct Alias List *colnames; /* optional list of column aliases */ } Alias; -typedef enum InhOption -{ - INH_NO, /* Do NOT scan child tables */ - INH_YES, /* DO scan child tables */ - INH_DEFAULT /* Use current SQL_inheritance option */ -} InhOption; - /* What to do at commit time for temporary relations */ typedef enum OnCommitAction { @@ -61,7 +68,7 @@ typedef enum OnCommitAction * RangeVar - range variable, used in FROM clauses * * Also used to represent table names in utility statements; there, the alias - * field is not used, and inhOpt shows whether to apply the operation + * field is not used, and inh tells whether to apply the operation * recursively to child tables. In some contexts it is also useful to carry * a TEMP table indication here. */ @@ -71,13 +78,34 @@ typedef struct RangeVar char *catalogname; /* the catalog (database) name, or NULL */ char *schemaname; /* the schema name, or NULL */ char *relname; /* the relation/sequence name */ - InhOption inhOpt; /* expand rel by inheritance? recursively act + bool inh; /* expand rel by inheritance? recursively act * on children? */ char relpersistence; /* see RELPERSISTENCE_* in pg_class.h */ Alias *alias; /* table alias & optional column aliases */ int location; /* token location, or -1 if unknown */ } RangeVar; +/* + * TableFunc - node for a table function, such as XMLTABLE. + */ +typedef struct TableFunc +{ + NodeTag type; + List *ns_uris; /* list of namespace uri */ + List *ns_names; /* list of namespace names */ + Node *docexpr; /* input document expression */ + Node *rowexpr; /* row filter expression */ + List *colnames; /* column names (list of String) */ + List *coltypes; /* OID list of column type OIDs */ + List *coltypmods; /* integer list of column typmods */ + List *colcollations; /* OID list of column collation OIDs */ + List *colexprs; /* list of column filter expressions */ + List *coldefexprs; /* list of column default expressions */ + Bitmapset *notnulls; /* nullability flag for each output column */ + int ordinalitycol; /* counts from 0; -1 if none specified */ + int location; /* token location, or -1 if unknown */ +} TableFunc; + /* * IntoClause - target information for SELECT INTO, CREATE TABLE AS, and * CREATE MATERIALIZED VIEW @@ -134,9 +162,9 @@ typedef struct Expr * are very useful for debugging and interpreting completed plans, so we keep * them around. */ -#define INNER_VAR 65000 /* reference to inner subplan */ -#define OUTER_VAR 65001 /* reference to outer subplan */ -#define INDEX_VAR 65002 /* reference to index column */ +#define INNER_VAR 65000 /* reference to inner subplan */ +#define OUTER_VAR 65001 /* reference to outer subplan */ +#define INDEX_VAR 65002 /* reference to index column */ #define IS_SPECIAL_VARNO(varno) ((varno) >= INNER_VAR) @@ -384,10 +412,11 @@ typedef struct ArrayRef Oid refelemtype; /* type of the array elements */ int32 reftypmod; /* typmod of the array (and elements too) */ Oid refcollid; /* OID of collation, or InvalidOid if none */ - List *refupperindexpr;/* expressions that evaluate to upper array - * indexes */ - List *reflowerindexpr;/* expressions that evaluate to lower array - * indexes, or NIL for single array element */ + List *refupperindexpr; /* expressions that evaluate to upper + * array indexes */ + List *reflowerindexpr; /* expressions that evaluate to lower + * array indexes, or NIL for single array + * element */ Expr *refexpr; /* the expression that evaluates to an array * value */ Expr *refassgnexpr; /* expression for the source value, or NULL if @@ -675,14 +704,16 @@ typedef struct SubPlan /* Extra data useful for determining subplan's output type: */ Oid firstColType; /* Type of first column of subplan result */ int32 firstColTypmod; /* Typmod of first column of subplan result */ - Oid firstColCollation; /* Collation of first column of - * subplan result */ + Oid firstColCollation; /* Collation of first column of subplan + * result */ /* Information about execution strategy: */ bool useHashTable; /* TRUE to store subselect output in a hash * table (implies we are doing "IN") */ bool unknownEqFalse; /* TRUE if it's okay to return FALSE when the * spec result is UNKNOWN; this allows much * simpler handling of null values */ + bool parallel_safe; /* is the subplan parallel-safe? */ + /* Note: parallel_safe does not consider contents of testexpr or args */ /* Information for passing params into and out of the subselect: */ /* setParam and parParam are lists of integers (param IDs) */ List *setParam; /* initplan subqueries have to set these @@ -1049,6 +1080,45 @@ typedef struct MinMaxExpr int location; /* token location, or -1 if unknown */ } MinMaxExpr; +/* + * SQLValueFunction - parameterless functions with special grammar productions + * + * The SQL standard categorizes some of these as + * and others as . We call 'em SQLValueFunctions + * for lack of a better term. We store type and typmod of the result so that + * some code doesn't need to know each function individually, and because + * we would need to store typmod anyway for some of the datetime functions. + * Note that currently, all variants return non-collating datatypes, so we do + * not need a collation field; also, all these functions are stable. + */ +typedef enum SQLValueFunctionOp +{ + SVFOP_CURRENT_DATE, + SVFOP_CURRENT_TIME, + SVFOP_CURRENT_TIME_N, + SVFOP_CURRENT_TIMESTAMP, + SVFOP_CURRENT_TIMESTAMP_N, + SVFOP_LOCALTIME, + SVFOP_LOCALTIME_N, + SVFOP_LOCALTIMESTAMP, + SVFOP_LOCALTIMESTAMP_N, + SVFOP_CURRENT_ROLE, + SVFOP_CURRENT_USER, + SVFOP_USER, + SVFOP_SESSION_USER, + SVFOP_CURRENT_CATALOG, + SVFOP_CURRENT_SCHEMA +} SQLValueFunctionOp; + +typedef struct SQLValueFunction +{ + Expr xpr; + SQLValueFunctionOp op; /* which function this is */ + Oid type; /* result type/typmod */ + int32 typmod; + int location; /* token location, or -1 if unknown */ +} SQLValueFunction; + /* * XmlExpr - various SQL/XML functions requiring special grammar productions * @@ -1221,6 +1291,20 @@ typedef struct CurrentOfExpr int cursor_param; /* refcursor parameter number, or 0 */ } CurrentOfExpr; +/* + * NextValueExpr - get next value from sequence + * + * This has the same effect as calling the nextval() function, but it does not + * check permissions on the sequence. This is used for identity columns, + * where the sequence is an implicit dependency without its own permissions. + */ +typedef struct NextValueExpr +{ + Expr xpr; + Oid seqid; + Oid typeId; +} NextValueExpr; + /* * InferenceElem - an element of a unique index inference specification * @@ -1296,8 +1380,8 @@ typedef struct TargetEntry Expr *expr; /* expression to evaluate */ AttrNumber resno; /* attribute number (see notes above) */ char *resname; /* name of the column (could be NULL) */ - Index ressortgroupref;/* nonzero if referenced by a sort/group - * clause */ + Index ressortgroupref; /* nonzero if referenced by a sort/group + * clause */ Oid resorigtbl; /* OID of column's source table */ AttrNumber resorigcol; /* column's number in source table */ bool resjunk; /* set to true to eliminate the attribute from @@ -1427,4 +1511,4 @@ typedef struct OnConflictExpr List *exclRelTlist; /* tlist of the EXCLUDED pseudo relation */ } OnConflictExpr; -#endif /* PRIMNODES_H */ +#endif /* PRIMNODES_H */ diff --git a/src/include/parser/scanner.h b/src/include/parser/scanner.h index 5281bada1..49b8d1673 100644 --- a/src/include/parser/scanner.h +++ b/src/include/parser/scanner.h @@ -3,13 +3,13 @@ * scanner.h * API for the core scanner (flex machine) * - * The core scanner is also used by PL/pgsql, so we provide a public API + * The core scanner is also used by PL/pgSQL, so we provide a public API * for it. However, the rest of the backend is only expected to use the * higher-level API provided by parser.h. * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/scanner.h @@ -128,4 +128,4 @@ extern int core_yylex(core_YYSTYPE *lvalp, YYLTYPE *llocp, extern int scanner_errposition(int location, core_yyscan_t yyscanner); extern void scanner_yyerror(const char *message, core_yyscan_t yyscanner) pg_attribute_noreturn(); -#endif /* SCANNER_H */ +#endif /* SCANNER_H */ diff --git a/src/include/parser/scansup.h b/src/include/parser/scansup.h index db601d5db..40f3d9c49 100644 --- a/src/include/parser/scansup.h +++ b/src/include/parser/scansup.h @@ -4,8 +4,8 @@ * scanner support routines. used by both the bootstrap lexer * as well as the normal lexer * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/scansup.h diff --git a/src/include/parser/stringinfo.h b/src/include/parser/stringinfo.h index 6fa3ec189..f678b1ee2 100644 --- a/src/include/parser/stringinfo.h +++ b/src/include/parser/stringinfo.h @@ -7,8 +7,8 @@ * It can be used to buffer either ordinary C strings (null-terminated text) * or arbitrary binary data. All storage is allocated with palloc(). * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/lib/stringinfo.h @@ -198,4 +198,4 @@ extern void appendBinaryStringInfo(StringInfo str, */ extern void enlargeStringInfo(StringInfo str, int needed); -#endif /* STRINGINFO_H */ +#endif /* STRINGINFO_H */ diff --git a/src/include/parser/value.h b/src/include/parser/value.h index 69c0103bb..082bcb248 100644 --- a/src/include/parser/value.h +++ b/src/include/parser/value.h @@ -4,8 +4,8 @@ * interface for Value nodes * * - * Copyright (c) 2003-2016, PgPool Global Development Group - * Copyright (c) 2003-2016, PostgreSQL Global Development Group + * Copyright (c) 2003-2017, PgPool Global Development Group + * Copyright (c) 2003-2017, PostgreSQL Global Development Group * * src/include/nodes/value.h * @@ -59,4 +59,4 @@ extern Value *makeFloat(char *numericStr); extern Value *makeString(char *str); extern Value *makeBitString(char *str); -#endif /* VALUE_H */ +#endif /* VALUE_H */ diff --git a/src/parser/Makefile.am b/src/parser/Makefile.am index be1cac5c1..fc4935def 100644 --- a/src/parser/Makefile.am +++ b/src/parser/Makefile.am @@ -6,7 +6,6 @@ libsql_parser_a_SOURCES = \ copyfuncs.c \ gram.y \ keywords.c \ - kwlookup.c \ list.c \ makefuncs.c \ nodes.c \ diff --git a/src/parser/Makefile.in b/src/parser/Makefile.in index e76d397fd..1b37c041a 100644 --- a/src/parser/Makefile.in +++ b/src/parser/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,17 +15,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -90,6 +80,9 @@ build_triplet = @build@ host_triplet = @host@ @use_repl_snprintf_TRUE@am__append_1 = snprintf.c subdir = src/parser +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs gram.h gram.c \ + $(top_srcdir)/depcomp $(top_srcdir)/ylwrap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -100,7 +93,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -114,19 +106,18 @@ am__v_AR_1 = libsql_parser_a_AR = $(AR) $(ARFLAGS) libsql_parser_a_LIBADD = am__libsql_parser_a_SOURCES_DIST = copyfuncs.c gram.y keywords.c \ - kwlookup.c list.c makefuncs.c nodes.c outfuncs.c parser.c \ - pool_string.c scansup.c stringinfo.c value.c \ + list.c makefuncs.c nodes.c outfuncs.c parser.c pool_string.c \ + scansup.c stringinfo.c value.c \ $(top_srcdir)/src/utils/mmgr/mcxt.c \ $(top_srcdir)/src/utils/mmgr/aset.c \ $(top_srcdir)/src/utils/error/elog.c wchar.c scan.c snprintf.c am__dirstamp = $(am__leading_dot)dirstamp @use_repl_snprintf_TRUE@am__objects_1 = snprintf.$(OBJEXT) am_libsql_parser_a_OBJECTS = copyfuncs.$(OBJEXT) gram.$(OBJEXT) \ - keywords.$(OBJEXT) kwlookup.$(OBJEXT) list.$(OBJEXT) \ - makefuncs.$(OBJEXT) nodes.$(OBJEXT) outfuncs.$(OBJEXT) \ - parser.$(OBJEXT) pool_string.$(OBJEXT) scansup.$(OBJEXT) \ - stringinfo.$(OBJEXT) value.$(OBJEXT) \ - $(top_srcdir)/src/utils/mmgr/mcxt.$(OBJEXT) \ + keywords.$(OBJEXT) list.$(OBJEXT) makefuncs.$(OBJEXT) \ + nodes.$(OBJEXT) outfuncs.$(OBJEXT) parser.$(OBJEXT) \ + pool_string.$(OBJEXT) scansup.$(OBJEXT) stringinfo.$(OBJEXT) \ + value.$(OBJEXT) $(top_srcdir)/src/utils/mmgr/mcxt.$(OBJEXT) \ $(top_srcdir)/src/utils/mmgr/aset.$(OBJEXT) \ $(top_srcdir)/src/utils/error/elog.$(OBJEXT) wchar.$(OBJEXT) \ scan.$(OBJEXT) $(am__objects_1) @@ -206,8 +197,6 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/mkinstalldirs $(top_srcdir)/ylwrap gram.c gram.h DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -341,7 +330,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -353,8 +341,8 @@ top_srcdir = @top_srcdir@ parser_incdir = $(top_srcdir)/src/include/parser AM_CPPFLAGS = -D_GNU_SOURCE -I $(parser_incdir) -I @PGSQL_INCLUDE_DIR@ noinst_LIBRARIES = libsql-parser.a -libsql_parser_a_SOURCES = copyfuncs.c gram.y keywords.c kwlookup.c \ - list.c makefuncs.c nodes.c outfuncs.c parser.c pool_string.c \ +libsql_parser_a_SOURCES = copyfuncs.c gram.y keywords.c list.c \ + makefuncs.c nodes.c outfuncs.c parser.c pool_string.c \ scansup.c stringinfo.c value.c \ $(top_srcdir)/src/utils/mmgr/mcxt.c \ $(top_srcdir)/src/utils/mmgr/aset.c \ @@ -378,6 +366,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/parser/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/parser/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -442,7 +431,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copyfuncs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gram.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keywords.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kwlookup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/makefuncs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nodes.Po@am__quote@ @@ -698,8 +686,6 @@ uninstall-am: mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am -.PRECIOUS: Makefile - gram.c: gram.y scan.c scan.c: scan.l diff --git a/src/parser/copyfuncs.c b/src/parser/copyfuncs.c index 6d50fd394..b2596fd56 100644 --- a/src/parser/copyfuncs.c +++ b/src/parser/copyfuncs.c @@ -11,8 +11,8 @@ * be handled easily in a simple depth-first traversal. * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -44,7 +44,7 @@ /* Copy a field that is a pointer to some kind of Node or Node tree */ #define COPY_NODE_FIELD(fldname) \ - (newnode->fldname = copyObject(from->fldname)) + (newnode->fldname = copyObjectImpl(from->fldname)) /* Copy a field that is a pointer to a Bitmapset */ #define COPY_BITMAPSET_FIELD(fldname) \ @@ -92,13 +92,17 @@ _copyPlannedStmt(const PlannedStmt *from) COPY_NODE_FIELD(planTree); COPY_NODE_FIELD(rtable); COPY_NODE_FIELD(resultRelations); - COPY_NODE_FIELD(utilityStmt); + COPY_NODE_FIELD(nonleafResultRelations); + COPY_NODE_FIELD(rootResultRelations); COPY_NODE_FIELD(subplans); COPY_BITMAPSET_FIELD(rewindPlanIDs); COPY_NODE_FIELD(rowMarks); COPY_NODE_FIELD(relationOids); COPY_NODE_FIELD(invalItems); COPY_SCALAR_FIELD(nParamExec); + COPY_NODE_FIELD(utilityStmt); + COPY_LOCATION_FIELD(stmt_location); + COPY_LOCATION_FIELD(stmt_len); return newnode; } @@ -117,6 +121,7 @@ CopyPlanFields(const Plan *from, Plan *newnode) COPY_SCALAR_FIELD(plan_rows); COPY_SCALAR_FIELD(plan_width); COPY_SCALAR_FIELD(parallel_aware); + COPY_SCALAR_FIELD(parallel_safe); COPY_SCALAR_FIELD(plan_node_id); COPY_NODE_FIELD(targetlist); COPY_NODE_FIELD(qual); @@ -165,6 +170,22 @@ _copyResult(const Result *from) return newnode; } +/* + * _copyProjectSet + */ +static ProjectSet * +_copyProjectSet(const ProjectSet *from) +{ + ProjectSet *newnode = makeNode(ProjectSet); + + /* + * copy node superclass fields + */ + CopyPlanFields((const Plan *) from, (Plan *) newnode); + + return newnode; +} + /* * _copyModifyTable */ @@ -184,8 +205,10 @@ _copyModifyTable(const ModifyTable *from) COPY_SCALAR_FIELD(operation); COPY_SCALAR_FIELD(canSetTag); COPY_SCALAR_FIELD(nominalRelation); + COPY_NODE_FIELD(partitioned_rels); COPY_NODE_FIELD(resultRelations); COPY_SCALAR_FIELD(resultRelIndex); + COPY_SCALAR_FIELD(rootResultRelIndex); COPY_NODE_FIELD(plans); COPY_NODE_FIELD(withCheckOptionLists); COPY_NODE_FIELD(returningLists); @@ -219,6 +242,7 @@ _copyAppend(const Append *from) /* * copy remainder of node */ + COPY_NODE_FIELD(partitioned_rels); COPY_NODE_FIELD(appendplans); return newnode; @@ -240,6 +264,7 @@ _copyMergeAppend(const MergeAppend *from) /* * copy remainder of node */ + COPY_NODE_FIELD(partitioned_rels); COPY_NODE_FIELD(mergeplans); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); @@ -315,6 +340,7 @@ _copyBitmapOr(const BitmapOr *from) /* * copy remainder of node */ + COPY_SCALAR_FIELD(isshared); COPY_NODE_FIELD(bitmapplans); return newnode; @@ -337,6 +363,7 @@ _copyGather(const Gather *from) * copy remainder of node */ COPY_SCALAR_FIELD(num_workers); + COPY_SCALAR_FIELD(rescan_param); COPY_SCALAR_FIELD(single_copy); COPY_SCALAR_FIELD(invisible); @@ -570,6 +597,27 @@ _copyFunctionScan(const FunctionScan *from) return newnode; } +/* + * _copyTableFuncScan + */ +static TableFuncScan * +_copyTableFuncScan(const TableFuncScan *from) +{ + TableFuncScan *newnode = makeNode(TableFuncScan); + + /* + * copy node superclass fields + */ + CopyScanFields((const Scan *) from, (Scan *) newnode); + + /* + * copy remainder of node + */ + COPY_NODE_FIELD(tablefunc); + + return newnode; +} + /* * _copyValuesScan */ @@ -613,6 +661,27 @@ _copyCteScan(const CteScan *from) return newnode; } +/* + * _copyNamedTuplestoreScan + */ +static NamedTuplestoreScan * +_copyNamedTuplestoreScan(const NamedTuplestoreScan *from) +{ + NamedTuplestoreScan *newnode = makeNode(NamedTuplestoreScan); + + /* + * copy node superclass fields + */ + CopyScanFields((const Scan *) from, (Scan *) newnode); + + /* + * copy remainder of node + */ + COPY_STRING_FIELD(enrname); + + return newnode; +} + /* * _copyWorkTableScan */ @@ -707,9 +776,36 @@ CopyJoinFields(const Join *from, Join *newnode) CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(jointype); + COPY_SCALAR_FIELD(inner_unique); COPY_NODE_FIELD(joinqual); } +/* + * _copyGatherMerge + */ +static GatherMerge * +_copyGatherMerge(const GatherMerge *from) +{ + GatherMerge *newnode = makeNode(GatherMerge); + + /* + * copy node superclass fields + */ + CopyPlanFields((const Plan *) from, (Plan *) newnode); + + /* + * copy remainder of node + */ + COPY_SCALAR_FIELD(num_workers); + COPY_SCALAR_FIELD(rescan_param); + COPY_SCALAR_FIELD(numCols); + COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); + COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); + COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); + COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); + + return newnode; +} /* * _copyJoin @@ -767,6 +863,7 @@ _copyMergeJoin(const MergeJoin *from) /* * copy remainder of node */ + COPY_SCALAR_FIELD(skip_mark_restore); COPY_NODE_FIELD(mergeclauses); numCols = list_length(from->mergeclauses); if (numCols > 0) @@ -878,6 +975,7 @@ _copyAgg(const Agg *from) COPY_POINTER_FIELD(grpOperators, from->numCols * sizeof(Oid)); } COPY_SCALAR_FIELD(numGroups); + COPY_BITMAPSET_FIELD(aggParams); COPY_NODE_FIELD(groupingSets); COPY_NODE_FIELD(chain); @@ -956,8 +1054,6 @@ _copyHash(const Hash *from) COPY_SCALAR_FIELD(skewTable); COPY_SCALAR_FIELD(skewColumn); COPY_SCALAR_FIELD(skewInherit); - COPY_SCALAR_FIELD(skewColType); - COPY_SCALAR_FIELD(skewColTypmod); return newnode; } @@ -1113,7 +1209,7 @@ _copyRangeVar(const RangeVar *from) COPY_STRING_FIELD(catalogname); COPY_STRING_FIELD(schemaname); COPY_STRING_FIELD(relname); - COPY_SCALAR_FIELD(inhOpt); + COPY_SCALAR_FIELD(inh); COPY_SCALAR_FIELD(relpersistence); COPY_NODE_FIELD(alias); COPY_LOCATION_FIELD(location); @@ -1121,6 +1217,31 @@ _copyRangeVar(const RangeVar *from) return newnode; } +/* + * _copyTableFunc + */ +static TableFunc * +_copyTableFunc(const TableFunc *from) +{ + TableFunc *newnode = makeNode(TableFunc); + + COPY_NODE_FIELD(ns_uris); + COPY_NODE_FIELD(ns_names); + COPY_NODE_FIELD(docexpr); + COPY_NODE_FIELD(rowexpr); + COPY_NODE_FIELD(colnames); + COPY_NODE_FIELD(coltypes); + COPY_NODE_FIELD(coltypmods); + COPY_NODE_FIELD(colcollations); + COPY_NODE_FIELD(colexprs); + COPY_NODE_FIELD(coldefexprs); + COPY_BITMAPSET_FIELD(notnulls); + COPY_SCALAR_FIELD(ordinalitycol); + COPY_LOCATION_FIELD(location); + + return newnode; +} + /* * _copyIntoClause */ @@ -1480,6 +1601,7 @@ _copySubPlan(const SubPlan *from) COPY_SCALAR_FIELD(firstColCollation); COPY_SCALAR_FIELD(useHashTable); COPY_SCALAR_FIELD(unknownEqFalse); + COPY_SCALAR_FIELD(parallel_safe); COPY_NODE_FIELD(setParam); COPY_NODE_FIELD(parParam); COPY_NODE_FIELD(args); @@ -1756,6 +1878,22 @@ _copyMinMaxExpr(const MinMaxExpr *from) return newnode; } +/* + * _copySQLValueFunction + */ +static SQLValueFunction * +_copySQLValueFunction(const SQLValueFunction *from) +{ + SQLValueFunction *newnode = makeNode(SQLValueFunction); + + COPY_SCALAR_FIELD(op); + COPY_SCALAR_FIELD(type); + COPY_SCALAR_FIELD(typmod); + COPY_LOCATION_FIELD(location); + + return newnode; +} + /* * _copyXmlExpr */ @@ -1873,6 +2011,20 @@ _copyCurrentOfExpr(const CurrentOfExpr *from) return newnode; } + /* + * _copyNextValueExpr + */ +static NextValueExpr * +_copyNextValueExpr(const NextValueExpr *from) +{ + NextValueExpr *newnode = makeNode(NextValueExpr); + + COPY_SCALAR_FIELD(seqid); + COPY_SCALAR_FIELD(typeId); + + return newnode; +} + /* * _copyInferenceElem */ @@ -2013,6 +2165,8 @@ _copyRestrictInfo(const RestrictInfo *from) COPY_SCALAR_FIELD(outerjoin_delayed); COPY_SCALAR_FIELD(can_join); COPY_SCALAR_FIELD(pseudoconstant); + COPY_SCALAR_FIELD(leakproof); + COPY_SCALAR_FIELD(security_level); COPY_BITMAPSET_FIELD(clause_relids); COPY_BITMAPSET_FIELD(required_relids); COPY_BITMAPSET_FIELD(outer_relids); @@ -2098,6 +2252,20 @@ _copyAppendRelInfo(const AppendRelInfo *from) return newnode; } +/* + * _copyPartitionedChildRelInfo + */ +static PartitionedChildRelInfo * +_copyPartitionedChildRelInfo(const PartitionedChildRelInfo *from) +{ + PartitionedChildRelInfo *newnode = makeNode(PartitionedChildRelInfo); + + COPY_SCALAR_FIELD(parent_relid); + COPY_NODE_FIELD(child_rels); + + return newnode; +} + /* * _copyPlaceHolderInfo */ @@ -2137,14 +2305,16 @@ _copyRangeTblEntry(const RangeTblEntry *from) COPY_NODE_FIELD(joinaliasvars); COPY_NODE_FIELD(functions); COPY_SCALAR_FIELD(funcordinality); + COPY_NODE_FIELD(tablefunc); COPY_NODE_FIELD(values_lists); - COPY_NODE_FIELD(values_collations); COPY_STRING_FIELD(ctename); COPY_SCALAR_FIELD(ctelevelsup); COPY_SCALAR_FIELD(self_reference); - COPY_NODE_FIELD(ctecoltypes); - COPY_NODE_FIELD(ctecoltypmods); - COPY_NODE_FIELD(ctecolcollations); + COPY_NODE_FIELD(coltypes); + COPY_NODE_FIELD(coltypmods); + COPY_NODE_FIELD(colcollations); + COPY_STRING_FIELD(enrname); + COPY_SCALAR_FIELD(enrtuples); COPY_NODE_FIELD(alias); COPY_NODE_FIELD(eref); COPY_SCALAR_FIELD(lateral); @@ -2559,6 +2729,38 @@ _copyRangeTableSample(const RangeTableSample *from) return newnode; } +static RangeTableFunc * +_copyRangeTableFunc(const RangeTableFunc *from) +{ + RangeTableFunc *newnode = makeNode(RangeTableFunc); + + COPY_SCALAR_FIELD(lateral); + COPY_NODE_FIELD(docexpr); + COPY_NODE_FIELD(rowexpr); + COPY_NODE_FIELD(namespaces); + COPY_NODE_FIELD(columns); + COPY_NODE_FIELD(alias); + COPY_LOCATION_FIELD(location); + + return newnode; +} + +static RangeTableFuncCol * +_copyRangeTableFuncCol(const RangeTableFuncCol *from) +{ + RangeTableFuncCol *newnode = makeNode(RangeTableFuncCol); + + COPY_STRING_FIELD(colname); + COPY_NODE_FIELD(typeName); + COPY_SCALAR_FIELD(for_ordinality); + COPY_SCALAR_FIELD(is_not_null); + COPY_NODE_FIELD(colexpr); + COPY_NODE_FIELD(coldefexpr); + COPY_LOCATION_FIELD(location); + + return newnode; +} + static TypeCast * _copyTypeCast(const TypeCast *from) { @@ -2610,9 +2812,11 @@ _copyColumnDef(const ColumnDef *from) COPY_SCALAR_FIELD(is_local); COPY_SCALAR_FIELD(is_not_null); COPY_SCALAR_FIELD(is_from_type); + COPY_SCALAR_FIELD(is_from_parent); COPY_SCALAR_FIELD(storage); COPY_NODE_FIELD(raw_default); COPY_NODE_FIELD(cooked_default); + COPY_SCALAR_FIELD(identity); COPY_NODE_FIELD(collClause); COPY_SCALAR_FIELD(collOid); COPY_NODE_FIELD(constraints); @@ -2635,6 +2839,7 @@ _copyConstraint(const Constraint *from) COPY_SCALAR_FIELD(is_no_inherit); COPY_NODE_FIELD(raw_expr); COPY_STRING_FIELD(cooked_expr); + COPY_SCALAR_FIELD(generated_when); COPY_NODE_FIELD(keys); COPY_NODE_FIELD(exclusions); COPY_NODE_FIELD(options); @@ -2665,6 +2870,7 @@ _copyDefElem(const DefElem *from) COPY_STRING_FIELD(defname); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(defaction); + COPY_LOCATION_FIELD(location); return newnode; } @@ -2706,6 +2912,18 @@ _copyRoleSpec(const RoleSpec *from) return newnode; } +static TriggerTransition * +_copyTriggerTransition(const TriggerTransition *from) +{ + TriggerTransition *newnode = makeNode(TriggerTransition); + + COPY_STRING_FIELD(name); + COPY_SCALAR_FIELD(isNew); + COPY_SCALAR_FIELD(isTable); + + return newnode; +} + static Query * _copyQuery(const Query *from) { @@ -2719,6 +2937,7 @@ _copyQuery(const Query *from) COPY_SCALAR_FIELD(resultRelation); COPY_SCALAR_FIELD(hasAggs); COPY_SCALAR_FIELD(hasWindowFuncs); + COPY_SCALAR_FIELD(hasTargetSRFs); COPY_SCALAR_FIELD(hasSubLinks); COPY_SCALAR_FIELD(hasDistinctOn); COPY_SCALAR_FIELD(hasRecursive); @@ -2729,6 +2948,7 @@ _copyQuery(const Query *from) COPY_NODE_FIELD(rtable); COPY_NODE_FIELD(jointree); COPY_NODE_FIELD(targetList); + COPY_SCALAR_FIELD(override); COPY_NODE_FIELD(onConflict); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(groupClause); @@ -2743,6 +2963,20 @@ _copyQuery(const Query *from) COPY_NODE_FIELD(setOperations); COPY_NODE_FIELD(constraintDeps); COPY_NODE_FIELD(withCheckOptions); + COPY_LOCATION_FIELD(stmt_location); + COPY_LOCATION_FIELD(stmt_len); + + return newnode; +} + +static RawStmt * +_copyRawStmt(const RawStmt *from) +{ + RawStmt *newnode = makeNode(RawStmt); + + COPY_NODE_FIELD(stmt); + COPY_LOCATION_FIELD(stmt_location); + COPY_LOCATION_FIELD(stmt_len); return newnode; } @@ -2758,6 +2992,7 @@ _copyInsertStmt(const InsertStmt *from) COPY_NODE_FIELD(onConflictClause); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(withClause); + COPY_SCALAR_FIELD(override); return newnode; } @@ -2863,6 +3098,16 @@ _copyAlterTableCmd(const AlterTableCmd *from) return newnode; } +static AlterCollationStmt * +_copyAlterCollationStmt(const AlterCollationStmt *from) +{ + AlterCollationStmt *newnode = makeNode(AlterCollationStmt); + + COPY_NODE_FIELD(collname); + + return newnode; +} + static AlterDomainStmt * _copyAlterDomainStmt(const AlterDomainStmt *from) { @@ -2895,13 +3140,14 @@ _copyGrantStmt(const GrantStmt *from) return newnode; } -static FuncWithArgs * -_copyFuncWithArgs(const FuncWithArgs *from) +static ObjectWithArgs * +_copyObjectWithArgs(const ObjectWithArgs *from) { - FuncWithArgs *newnode = makeNode(FuncWithArgs); + ObjectWithArgs *newnode = makeNode(ObjectWithArgs); - COPY_NODE_FIELD(funcname); - COPY_NODE_FIELD(funcargs); + COPY_NODE_FIELD(objname); + COPY_NODE_FIELD(objargs); + COPY_SCALAR_FIELD(args_unspecified); return newnode; } @@ -3005,6 +3251,8 @@ CopyCreateStmtFields(const CreateStmt *from, CreateStmt *newnode) COPY_NODE_FIELD(relation); COPY_NODE_FIELD(tableElts); COPY_NODE_FIELD(inhRelations); + COPY_NODE_FIELD(partspec); + COPY_NODE_FIELD(partbound); COPY_NODE_FIELD(ofTypename); COPY_NODE_FIELD(constraints); COPY_NODE_FIELD(options); @@ -3044,6 +3292,7 @@ _copyDefineStmt(const DefineStmt *from) COPY_NODE_FIELD(defnames); COPY_NODE_FIELD(args); COPY_NODE_FIELD(definition); + COPY_SCALAR_FIELD(if_not_exists); return newnode; } @@ -3054,7 +3303,6 @@ _copyDropStmt(const DropStmt *from) DropStmt *newnode = makeNode(DropStmt); COPY_NODE_FIELD(objects); - COPY_NODE_FIELD(arguments); COPY_SCALAR_FIELD(removeType); COPY_SCALAR_FIELD(behavior); COPY_SCALAR_FIELD(missing_ok); @@ -3081,8 +3329,7 @@ _copyCommentStmt(const CommentStmt *from) CommentStmt *newnode = makeNode(CommentStmt); COPY_SCALAR_FIELD(objtype); - COPY_NODE_FIELD(objname); - COPY_NODE_FIELD(objargs); + COPY_NODE_FIELD(object); COPY_STRING_FIELD(comment); return newnode; @@ -3094,8 +3341,7 @@ _copySecLabelStmt(const SecLabelStmt *from) SecLabelStmt *newnode = makeNode(SecLabelStmt); COPY_SCALAR_FIELD(objtype); - COPY_NODE_FIELD(objname); - COPY_NODE_FIELD(objargs); + COPY_NODE_FIELD(object); COPY_STRING_FIELD(provider); COPY_STRING_FIELD(label); @@ -3143,6 +3389,20 @@ _copyIndexStmt(const IndexStmt *from) return newnode; } +static CreateStatsStmt * +_copyCreateStatsStmt(const CreateStatsStmt *from) +{ + CreateStatsStmt *newnode = makeNode(CreateStatsStmt); + + COPY_NODE_FIELD(defnames); + COPY_NODE_FIELD(stat_types); + COPY_NODE_FIELD(exprs); + COPY_NODE_FIELD(relations); + COPY_SCALAR_FIELD(if_not_exists); + + return newnode; +} + static CreateFunctionStmt * _copyCreateFunctionStmt(const CreateFunctionStmt *from) { @@ -3201,7 +3461,6 @@ _copyRenameStmt(const RenameStmt *from) COPY_SCALAR_FIELD(relationType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); - COPY_NODE_FIELD(objarg); COPY_STRING_FIELD(subname); COPY_STRING_FIELD(newname); COPY_SCALAR_FIELD(behavior); @@ -3217,8 +3476,7 @@ _copyAlterObjectDependsStmt(const AlterObjectDependsStmt *from) COPY_SCALAR_FIELD(objectType); COPY_NODE_FIELD(relation); - COPY_NODE_FIELD(objname); - COPY_NODE_FIELD(objargs); + COPY_NODE_FIELD(object); COPY_NODE_FIELD(extname); return newnode; @@ -3232,7 +3490,6 @@ _copyAlterObjectSchemaStmt(const AlterObjectSchemaStmt *from) COPY_SCALAR_FIELD(objectType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); - COPY_NODE_FIELD(objarg); COPY_STRING_FIELD(newschema); COPY_SCALAR_FIELD(missing_ok); @@ -3247,7 +3504,6 @@ _copyAlterOwnerStmt(const AlterOwnerStmt *from) COPY_SCALAR_FIELD(objectType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); - COPY_NODE_FIELD(objarg); COPY_NODE_FIELD(newowner); return newnode; @@ -3259,7 +3515,6 @@ _copyAlterOperatorStmt(const AlterOperatorStmt *from) AlterOperatorStmt *newnode = makeNode(AlterOperatorStmt); COPY_NODE_FIELD(opername); - COPY_NODE_FIELD(operargs); COPY_NODE_FIELD(options); return newnode; @@ -3363,10 +3618,11 @@ _copyAlterEnumStmt(const AlterEnumStmt *from) AlterEnumStmt *newnode = makeNode(AlterEnumStmt); COPY_NODE_FIELD(typeName); + COPY_STRING_FIELD(oldVal); COPY_STRING_FIELD(newVal); COPY_STRING_FIELD(newValNeighbor); COPY_SCALAR_FIELD(newValIsAfter); - COPY_SCALAR_FIELD(skipIfExists); + COPY_SCALAR_FIELD(skipIfNewValExists); return newnode; } @@ -3431,7 +3687,6 @@ _copyCreateOpClassItem(const CreateOpClassItem *from) COPY_SCALAR_FIELD(itemtype); COPY_NODE_FIELD(name); - COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(number); COPY_NODE_FIELD(order_family); COPY_NODE_FIELD(class_args); @@ -3586,6 +3841,7 @@ _copyCreateSeqStmt(const CreateSeqStmt *from) COPY_NODE_FIELD(sequence); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(ownerId); + COPY_SCALAR_FIELD(for_identity); COPY_SCALAR_FIELD(if_not_exists); return newnode; @@ -3598,6 +3854,7 @@ _copyAlterSeqStmt(const AlterSeqStmt *from) COPY_NODE_FIELD(sequence); COPY_NODE_FIELD(options); + COPY_SCALAR_FIELD(for_identity); COPY_SCALAR_FIELD(missing_ok); return newnode; @@ -3717,8 +3974,7 @@ _copyAlterExtensionContentsStmt(const AlterExtensionContentsStmt *from) COPY_STRING_FIELD(extname); COPY_SCALAR_FIELD(action); COPY_SCALAR_FIELD(objtype); - COPY_NODE_FIELD(objname); - COPY_NODE_FIELD(objargs); + COPY_NODE_FIELD(object); return newnode; } @@ -3756,6 +4012,7 @@ _copyCreateForeignServerStmt(const CreateForeignServerStmt *from) COPY_STRING_FIELD(servertype); COPY_STRING_FIELD(version); COPY_STRING_FIELD(fdwname); + COPY_SCALAR_FIELD(if_not_exists); COPY_NODE_FIELD(options); return newnode; @@ -3781,6 +4038,7 @@ _copyCreateUserMappingStmt(const CreateUserMappingStmt *from) COPY_NODE_FIELD(user); COPY_STRING_FIELD(servername); + COPY_SCALAR_FIELD(if_not_exists); COPY_NODE_FIELD(options); return newnode; @@ -3879,6 +4137,7 @@ _copyCreateTrigStmt(const CreateTrigStmt *from) COPY_NODE_FIELD(columns); COPY_NODE_FIELD(whenClause); COPY_SCALAR_FIELD(isconstraint); + COPY_NODE_FIELD(transitionRels); COPY_SCALAR_FIELD(deferrable); COPY_SCALAR_FIELD(initdeferred); COPY_NODE_FIELD(constrrel); @@ -4139,6 +4398,7 @@ _copyCreatePolicyStmt(const CreatePolicyStmt *from) COPY_STRING_FIELD(policy_name); COPY_NODE_FIELD(table); COPY_STRING_FIELD(cmd_name); + COPY_SCALAR_FIELD(permissive); COPY_NODE_FIELD(roles); COPY_NODE_FIELD(qual); COPY_NODE_FIELD(with_check); @@ -4160,6 +4420,135 @@ _copyAlterPolicyStmt(const AlterPolicyStmt *from) return newnode; } +static PartitionElem * +_copyPartitionElem(const PartitionElem *from) +{ + PartitionElem *newnode = makeNode(PartitionElem); + + COPY_STRING_FIELD(name); + COPY_NODE_FIELD(expr); + COPY_NODE_FIELD(collation); + COPY_NODE_FIELD(opclass); + COPY_LOCATION_FIELD(location); + + return newnode; +} + +static PartitionSpec * +_copyPartitionSpec(const PartitionSpec *from) +{ + PartitionSpec *newnode = makeNode(PartitionSpec); + + COPY_STRING_FIELD(strategy); + COPY_NODE_FIELD(partParams); + COPY_LOCATION_FIELD(location); + + return newnode; +} + +static PartitionBoundSpec * +_copyPartitionBoundSpec(const PartitionBoundSpec *from) +{ + PartitionBoundSpec *newnode = makeNode(PartitionBoundSpec); + + COPY_SCALAR_FIELD(strategy); + COPY_NODE_FIELD(listdatums); + COPY_NODE_FIELD(lowerdatums); + COPY_NODE_FIELD(upperdatums); + COPY_LOCATION_FIELD(location); + + return newnode; +} + +static PartitionRangeDatum * +_copyPartitionRangeDatum(const PartitionRangeDatum *from) +{ + PartitionRangeDatum *newnode = makeNode(PartitionRangeDatum); + + COPY_SCALAR_FIELD(kind); + COPY_NODE_FIELD(value); + COPY_LOCATION_FIELD(location); + + return newnode; +} + +static PartitionCmd * +_copyPartitionCmd(const PartitionCmd *from) +{ + PartitionCmd *newnode = makeNode(PartitionCmd); + + COPY_NODE_FIELD(name); + COPY_NODE_FIELD(bound); + + return newnode; +} + +static CreatePublicationStmt * +_copyCreatePublicationStmt(const CreatePublicationStmt *from) +{ + CreatePublicationStmt *newnode = makeNode(CreatePublicationStmt); + + COPY_STRING_FIELD(pubname); + COPY_NODE_FIELD(options); + COPY_NODE_FIELD(tables); + COPY_SCALAR_FIELD(for_all_tables); + + return newnode; +} + +static AlterPublicationStmt * +_copyAlterPublicationStmt(const AlterPublicationStmt *from) +{ + AlterPublicationStmt *newnode = makeNode(AlterPublicationStmt); + + COPY_STRING_FIELD(pubname); + COPY_NODE_FIELD(options); + COPY_NODE_FIELD(tables); + COPY_SCALAR_FIELD(for_all_tables); + COPY_SCALAR_FIELD(tableAction); + + return newnode; +} + +static CreateSubscriptionStmt * +_copyCreateSubscriptionStmt(const CreateSubscriptionStmt *from) +{ + CreateSubscriptionStmt *newnode = makeNode(CreateSubscriptionStmt); + + COPY_STRING_FIELD(subname); + COPY_STRING_FIELD(conninfo); + COPY_NODE_FIELD(publication); + COPY_NODE_FIELD(options); + + return newnode; +} + +static AlterSubscriptionStmt * +_copyAlterSubscriptionStmt(const AlterSubscriptionStmt *from) +{ + AlterSubscriptionStmt *newnode = makeNode(AlterSubscriptionStmt); + + COPY_SCALAR_FIELD(kind); + COPY_STRING_FIELD(subname); + COPY_STRING_FIELD(conninfo); + COPY_NODE_FIELD(publication); + COPY_NODE_FIELD(options); + + return newnode; +} + +static DropSubscriptionStmt * +_copyDropSubscriptionStmt(const DropSubscriptionStmt *from) +{ + DropSubscriptionStmt *newnode = makeNode(DropSubscriptionStmt); + + COPY_STRING_FIELD(subname); + COPY_SCALAR_FIELD(missing_ok); + COPY_SCALAR_FIELD(behavior); + + return newnode; +} + /* **************************************************************** * pg_list.h copy functions * **************************************************************** @@ -4172,7 +4561,7 @@ _copyAlterPolicyStmt(const AlterPolicyStmt *from) */ #define COPY_NODE_CELL(new, old) \ (new) = (ListCell *) palloc(sizeof(ListCell)); \ - lfirst(new) = copyObject(lfirst(old)); + lfirst(new) = copyObjectImpl(lfirst(old)); static List * _copyList(const List *from) @@ -4277,15 +4666,14 @@ _copyForeignKeyCacheInfo(const ForeignKeyCacheInfo *from) } #endif - /* - * copyObject + * copyObjectImpl -- implementation of copyObject(); see nodes/nodes.h * * Create a copy of a Node tree or list. This is a "deep" copy: all * substructure is copied too, recursively. */ void * -copyObject(const void *from) +copyObjectImpl(const void *from) { void *retval; @@ -4312,6 +4700,9 @@ copyObject(const void *from) case T_Result: retval = _copyResult(from); break; + case T_ProjectSet: + retval = _copyProjectSet(from); + break; case T_ModifyTable: retval = _copyModifyTable(from); break; @@ -4336,6 +4727,9 @@ copyObject(const void *from) case T_Gather: retval = _copyGather(from); break; + case T_GatherMerge: + retval = _copyGatherMerge(from); + break; case T_SeqScan: retval = _copySeqScan(from); break; @@ -4363,12 +4757,18 @@ copyObject(const void *from) case T_FunctionScan: retval = _copyFunctionScan(from); break; + case T_TableFuncScan: + retval = _copyTableFuncScan(from); + break; case T_ValuesScan: retval = _copyValuesScan(from); break; case T_CteScan: retval = _copyCteScan(from); break; + case T_NamedTuplestoreScan: + retval = _copyNamedTuplestoreScan(from); + break; case T_WorkTableScan: retval = _copyWorkTableScan(from); break; @@ -4440,6 +4840,9 @@ copyObject(const void *from) case T_RangeVar: retval = _copyRangeVar(from); break; + case T_TableFunc: + retval = _copyTableFunc(from); + break; case T_IntoClause: retval = _copyIntoClause(from); break; @@ -4541,6 +4944,9 @@ copyObject(const void *from) case T_MinMaxExpr: retval = _copyMinMaxExpr(from); break; + case T_SQLValueFunction: + retval = _copySQLValueFunction(from); + break; case T_XmlExpr: retval = _copyXmlExpr(from); break; @@ -4562,6 +4968,9 @@ copyObject(const void *from) case T_CurrentOfExpr: retval = _copyCurrentOfExpr(from); break; + case T_NextValueExpr: + retval = _copyNextValueExpr(from); + break; case T_InferenceElem: retval = _copyInferenceElem(from); break; @@ -4600,6 +5009,9 @@ copyObject(const void *from) case T_AppendRelInfo: retval = _copyAppendRelInfo(from); break; + case T_PartitionedChildRelInfo: + retval = _copyPartitionedChildRelInfo(from); + break; case T_PlaceHolderInfo: retval = _copyPlaceHolderInfo(from); break; @@ -4647,6 +5059,9 @@ copyObject(const void *from) case T_Query: retval = _copyQuery(from); break; + case T_RawStmt: + retval = _copyRawStmt(from); + break; case T_InsertStmt: retval = _copyInsertStmt(from); break; @@ -4668,6 +5083,9 @@ copyObject(const void *from) case T_AlterTableCmd: retval = _copyAlterTableCmd(from); break; + case T_AlterCollationStmt: + retval = _copyAlterCollationStmt(from); + break; case T_AlterDomainStmt: retval = _copyAlterDomainStmt(from); break; @@ -4719,6 +5137,9 @@ copyObject(const void *from) case T_IndexStmt: retval = _copyIndexStmt(from); break; + case T_CreateStatsStmt: + retval = _copyCreateStatsStmt(from); + break; case T_CreateFunctionStmt: retval = _copyCreateFunctionStmt(from); break; @@ -4965,6 +5386,21 @@ copyObject(const void *from) case T_AlterPolicyStmt: retval = _copyAlterPolicyStmt(from); break; + case T_CreatePublicationStmt: + retval = _copyCreatePublicationStmt(from); + break; + case T_AlterPublicationStmt: + retval = _copyAlterPublicationStmt(from); + break; + case T_CreateSubscriptionStmt: + retval = _copyCreateSubscriptionStmt(from); + break; + case T_AlterSubscriptionStmt: + retval = _copyAlterSubscriptionStmt(from); + break; + case T_DropSubscriptionStmt: + retval = _copyDropSubscriptionStmt(from); + break; case T_A_Expr: retval = _copyAExpr(from); break; @@ -5019,6 +5455,12 @@ copyObject(const void *from) case T_RangeTableSample: retval = _copyRangeTableSample(from); break; + case T_RangeTableFunc: + retval = _copyRangeTableFunc(from); + break; + case T_RangeTableFuncCol: + retval = _copyRangeTableFuncCol(from); + break; case T_TypeName: retval = _copyTypeName(from); break; @@ -5073,8 +5515,8 @@ copyObject(const void *from) case T_CommonTableExpr: retval = _copyCommonTableExpr(from); break; - case T_FuncWithArgs: - retval = _copyFuncWithArgs(from); + case T_ObjectWithArgs: + retval = _copyObjectWithArgs(from); break; case T_AccessPriv: retval = _copyAccessPriv(from); @@ -5085,6 +5527,24 @@ copyObject(const void *from) case T_RoleSpec: retval = _copyRoleSpec(from); break; + case T_TriggerTransition: + retval = _copyTriggerTransition(from); + break; + case T_PartitionElem: + retval = _copyPartitionElem(from); + break; + case T_PartitionSpec: + retval = _copyPartitionSpec(from); + break; + case T_PartitionBoundSpec: + retval = _copyPartitionBoundSpec(from); + break; + case T_PartitionRangeDatum: + retval = _copyPartitionRangeDatum(from); + break; + case T_PartitionCmd: + retval = _copyPartitionCmd(from); + break; #ifdef NOT_USED_IN_PGPOOL /* diff --git a/src/parser/gram.c b/src/parser/gram.c index 49f271848..7f3f57dfb 100644 --- a/src/parser/gram.c +++ b/src/parser/gram.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "2.7" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -63,12 +63,15 @@ #define yyparse base_yyparse #define yylex base_yylex #define yyerror base_yyerror +#define yylval base_yylval +#define yychar base_yychar #define yydebug base_yydebug #define yynerrs base_yynerrs - +#define yylloc base_yylloc /* Copy the first part of user declarations. */ -#line 1 "gram.y" /* yacc.c:339 */ +/* Line 371 of yacc.c */ +#line 1 "gram.y" /*#define YYDEBUG 1*/ @@ -77,8 +80,8 @@ * gram.y * POSTGRESQL BISON rules/actions * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -100,12 +103,11 @@ * current transaction and are just parsing commands to find the next * ROLLBACK or COMMIT. If you make use of SET variables, then you * will do the wrong thing in multi-query strings like this: - * SET SQL_inheritance TO off; SELECT * FROM foo; + * SET constraint_exclusion TO off; SELECT * FROM foo; * because the entire string is parsed by gram.y before the SET gets * executed. Anything that depends on the database or changeable state * should be handled during parse analysis so that it happens at the - * right time not the wrong time. The handling of SQL_inheritance is - * a good example. + * right time not the wrong time. * * WARNINGS * If you use a list, make sure the datum is a node so that the printing @@ -159,6 +161,13 @@ bool operator_precedence_warning = false; #define REPLICA_IDENTITY_FULL 'f' #define REPLICA_IDENTITY_INDEX 'i' +/* + * Definition taken from + * postgreSQL source code file: src/include/catalog/pg_attribute.h + */ +#define ATTRIBUTE_IDENTITY_ALWAYS 'a' +#define ATTRIBUTE_IDENTITY_BY_DEFAULT 'd' + /* * Definition taken from * postgreSQL source code file: src/include/utils/xml.h @@ -171,7 +180,6 @@ typedef enum XML_STANDALONE_OMITTED } XmlStandaloneType; -static DefElem *defWithOids(bool value); /* * Location tracking support --- simpler than bison's default, since we only * want to track the start position not the end position of each nonterminal. @@ -186,7 +194,8 @@ static DefElem *defWithOids(bool value); /* * The above macro assigns -1 (unknown) as the parse location of any - * nonterminal that was reduced from an empty rule. This is problematic + * nonterminal that was reduced from an empty rule, or whose leftmost + * component was reduced from an empty rule. This is problematic * for nonterminals defined like * OptFooList: / * EMPTY * / { ... } | OptFooList Foo { ... } ; * because we'll set -1 as the location during the first reduction and then @@ -197,6 +206,12 @@ static DefElem *defWithOids(bool value); * (Although we have many nonterminals that follow this pattern, we only * bother with fixing @$ like this when the nonterminal's parse location * is actually referenced in some rule.) + * + * A cleaner answer would be to make YYLLOC_DEFAULT scan all the Rhs + * locations until it's found one that's not -1. Then we'd get a correct + * location for any nonterminal that isn't entirely empty. But this way + * would add overhead to every rule reduction, and so far there's not been + * a compelling reason to pay that overhead. */ /* @@ -239,18 +254,17 @@ typedef struct ImportQual static void base_yyerror(YYLTYPE *yylloc, core_yyscan_t yyscanner, const char *msg); +static RawStmt *makeRawStmt(Node *stmt, int stmt_location); +static void updateRawStmtEnd(RawStmt *rs, int end_location); static Node *makeColumnRef(char *colname, List *indirection, int location, core_yyscan_t yyscanner); -static Node *makeTypeCast(Node *arg, TypeName *typename, int location); static Node *makeStringConst(char *str, int location); -static Node *makeStringConstCast(char *str, int location, TypeName *typename); -static Node *makeIntConst(int val, int location); static Node *makeFloatConst(char *str, int location); static Node *makeBitStringConst(char *str, int location); static Node *makeNullAConst(int location); static Node *makeAConst(Value *v, int location); static Node *makeBoolAConst(bool state, int location); -static Node *makeRoleSpec(RoleSpecType type, int location); +static RoleSpec *makeRoleSpec(RoleSpecType type, int location); static void check_qualified_name(List *names, core_yyscan_t yyscanner); static List *check_func_name(List *names, core_yyscan_t yyscanner); static List *check_indirection(List *indirection, core_yyscan_t yyscanner); @@ -270,6 +284,8 @@ static Node *makeAndExpr(Node *lexpr, Node *rexpr, int location); static Node *makeOrExpr(Node *lexpr, Node *rexpr, int location); static Node *makeNotExpr(Node *expr, int location); static Node *makeAArrayExpr(List *elements, int location); +static Node *makeSQLValueFunction(SQLValueFunctionOp op, int32 typmod, + int location); static Node *makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args, int location); static List *mergeTableFuncParameters(List *func_args, List *columns); @@ -284,13 +300,14 @@ static void processCASbits(int cas_bits, int location, const char *constrType, static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); -#line 288 "gram.c" /* yacc.c:339 */ +/* Line 371 of yacc.c */ +#line 305 "gram.c" -# ifndef YY_NULLPTR +# ifndef YY_NULL # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr +# define YY_NULL nullptr # else -# define YY_NULLPTR 0 +# define YY_NULL 0 # endif # endif @@ -306,7 +323,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); by #include "y.tab.h". */ #ifndef YY_BASE_YY_Y_TAB_H_INCLUDED # define YY_BASE_YY_Y_TAB_H_INCLUDED -/* Debug traces. */ +/* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -314,452 +331,466 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); extern int base_yydebug; #endif -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - LESS_EQUALS = 270, - GREATER_EQUALS = 271, - NOT_EQUALS = 272, - ABORT_P = 273, - ABSOLUTE_P = 274, - ACCESS = 275, - ACTION = 276, - ADD_P = 277, - ADMIN = 278, - AFTER = 279, - AGGREGATE = 280, - ALL = 281, - ALSO = 282, - ALTER = 283, - ALWAYS = 284, - ANALYSE = 285, - ANALYZE = 286, - AND = 287, - ANY = 288, - ARRAY = 289, - AS = 290, - ASC = 291, - ASSERTION = 292, - ASSIGNMENT = 293, - ASYMMETRIC = 294, - AT = 295, - ATTRIBUTE = 296, - AUTHORIZATION = 297, - BACKWARD = 298, - BEFORE = 299, - BEGIN_P = 300, - BETWEEN = 301, - BIGINT = 302, - BINARY = 303, - BIT = 304, - BOOLEAN_P = 305, - BOTH = 306, - BY = 307, - CACHE = 308, - CALLED = 309, - CASCADE = 310, - CASCADED = 311, - CASE = 312, - CAST = 313, - CATALOG_P = 314, - CHAIN = 315, - CHAR_P = 316, - CHARACTER = 317, - CHARACTERISTICS = 318, - CHECK = 319, - CHECKPOINT = 320, - CLASS = 321, - CLOSE = 322, - CLUSTER = 323, - COALESCE = 324, - COLLATE = 325, - COLLATION = 326, - COLUMN = 327, - COMMENT = 328, - COMMENTS = 329, - COMMIT = 330, - COMMITTED = 331, - CONCURRENTLY = 332, - CONFIGURATION = 333, - CONFLICT = 334, - CONNECTION = 335, - CONSTRAINT = 336, - CONSTRAINTS = 337, - CONTENT_P = 338, - CONTINUE_P = 339, - CONVERSION_P = 340, - COPY = 341, - COST = 342, - CREATE = 343, - CROSS = 344, - CSV = 345, - CUBE = 346, - CURRENT_P = 347, - CURRENT_CATALOG = 348, - CURRENT_DATE = 349, - CURRENT_ROLE = 350, - CURRENT_SCHEMA = 351, - CURRENT_TIME = 352, - CURRENT_TIMESTAMP = 353, - CURRENT_USER = 354, - CURSOR = 355, - CYCLE = 356, - DATA_P = 357, - DATABASE = 358, - DAY_P = 359, - DEALLOCATE = 360, - DEC = 361, - DECIMAL_P = 362, - DECLARE = 363, - DEFAULT = 364, - DEFAULTS = 365, - DEFERRABLE = 366, - DEFERRED = 367, - DEFINER = 368, - DELETE_P = 369, - DELIMITER = 370, - DELIMITERS = 371, - DEPENDS = 372, - DESC = 373, - DICTIONARY = 374, - DISABLE_P = 375, - DISCARD = 376, - DISTINCT = 377, - DO = 378, - DOCUMENT_P = 379, - DOMAIN_P = 380, - DOUBLE_P = 381, - DROP = 382, - EACH = 383, - ELSE = 384, - ENABLE_P = 385, - ENCODING = 386, - ENCRYPTED = 387, - END_P = 388, - ENUM_P = 389, - ESCAPE = 390, - EVENT = 391, - EXCEPT = 392, - EXCLUDE = 393, - EXCLUDING = 394, - EXCLUSIVE = 395, - EXECUTE = 396, - EXISTS = 397, - EXPLAIN = 398, - EXTENSION = 399, - EXTERNAL = 400, - EXTRACT = 401, - FALSE_P = 402, - FAMILY = 403, - FETCH = 404, - FILTER = 405, - FIRST_P = 406, - FLOAT_P = 407, - FOLLOWING = 408, - FOR = 409, - FORCE = 410, - FOREIGN = 411, - FORWARD = 412, - FREEZE = 413, - FROM = 414, - FULL = 415, - FUNCTION = 416, - FUNCTIONS = 417, - GLOBAL = 418, - GRANT = 419, - GRANTED = 420, - GREATEST = 421, - GROUP_P = 422, - GROUPING = 423, - HANDLER = 424, - HAVING = 425, - HEADER_P = 426, - HOLD = 427, - HOUR_P = 428, - IDENTITY_P = 429, - IF_P = 430, - ILIKE = 431, - IMMEDIATE = 432, - IMMUTABLE = 433, - IMPLICIT_P = 434, - IMPORT_P = 435, - IN_P = 436, - INCLUDING = 437, - INCREMENT = 438, - INDEX = 439, - INDEXES = 440, - INHERIT = 441, - INHERITS = 442, - INITIALLY = 443, - INLINE_P = 444, - INNER_P = 445, - INOUT = 446, - INPUT_P = 447, - INSENSITIVE = 448, - INSERT = 449, - INSTEAD = 450, - INT_P = 451, - INTEGER = 452, - INTERSECT = 453, - INTERVAL = 454, - INTO = 455, - INVOKER = 456, - IS = 457, - ISNULL = 458, - ISOLATION = 459, - JOIN = 460, - KEY = 461, - LABEL = 462, - LANGUAGE = 463, - LARGE_P = 464, - LAST_P = 465, - LATERAL_P = 466, - LEADING = 467, - LEAKPROOF = 468, - LEAST = 469, - LEFT = 470, - LEVEL = 471, - LIKE = 472, - LIMIT = 473, - LISTEN = 474, - LOAD = 475, - LOCAL = 476, - LOCALTIME = 477, - LOCALTIMESTAMP = 478, - LOCATION = 479, - LOCK_P = 480, - LOCKED = 481, - LOGGED = 482, - MAPPING = 483, - MATCH = 484, - MATERIALIZED = 485, - MAXVALUE = 486, - METHOD = 487, - MINUTE_P = 488, - MINVALUE = 489, - MODE = 490, - MONTH_P = 491, - MOVE = 492, - NAME_P = 493, - NAMES = 494, - NATIONAL = 495, - NATURAL = 496, - NCHAR = 497, - NEXT = 498, - NO = 499, - NONE = 500, - NOT = 501, - NOTHING = 502, - NOTIFY = 503, - NOTNULL = 504, - NOWAIT = 505, - NULL_P = 506, - NULLIF = 507, - NULLS_P = 508, - NUMERIC = 509, - OBJECT_P = 510, - OF = 511, - OFF = 512, - OFFSET = 513, - OIDS = 514, - ON = 515, - ONLY = 516, - OPERATOR = 517, - OPTION = 518, - OPTIONS = 519, - OR = 520, - ORDER = 521, - ORDINALITY = 522, - OUT_P = 523, - OUTER_P = 524, - OVER = 525, - OVERLAPS = 526, - OVERLAY = 527, - OWNED = 528, - OWNER = 529, - PARALLEL = 530, - PARSER = 531, - PARTIAL = 532, - PARTITION = 533, - PASSING = 534, - PASSWORD = 535, - PGPOOL = 536, - PLACING = 537, - PLANS = 538, - POLICY = 539, - POSITION = 540, - PRECEDING = 541, - PRECISION = 542, - PRESERVE = 543, - PREPARE = 544, - PREPARED = 545, - PRIMARY = 546, - PRIOR = 547, - PRIVILEGES = 548, - PROCEDURAL = 549, - PROCEDURE = 550, - PROGRAM = 551, - QUOTE = 552, - RANGE = 553, - READ = 554, - REAL = 555, - REASSIGN = 556, - RECHECK = 557, - RECURSIVE = 558, - REF = 559, - REFERENCES = 560, - REFRESH = 561, - REINDEX = 562, - RELATIVE_P = 563, - RELEASE = 564, - RENAME = 565, - REPEATABLE = 566, - REPLACE = 567, - REPLICA = 568, - RESET = 569, - RESTART = 570, - RESTRICT = 571, - RETURNING = 572, - RETURNS = 573, - REVOKE = 574, - RIGHT = 575, - ROLE = 576, - ROLLBACK = 577, - ROLLUP = 578, - ROW = 579, - ROWS = 580, - RULE = 581, - SAVEPOINT = 582, - SCHEMA = 583, - SCROLL = 584, - SEARCH = 585, - SECOND_P = 586, - SECURITY = 587, - SELECT = 588, - SEQUENCE = 589, - SEQUENCES = 590, - SERIALIZABLE = 591, - SERVER = 592, - SESSION = 593, - SESSION_USER = 594, - SET = 595, - SETS = 596, - SETOF = 597, - SHARE = 598, - SHOW = 599, - SIMILAR = 600, - SIMPLE = 601, - SKIP = 602, - SMALLINT = 603, - SNAPSHOT = 604, - SOME = 605, - SQL_P = 606, - STABLE = 607, - STANDALONE_P = 608, - START = 609, - STATEMENT = 610, - STATISTICS = 611, - STDIN = 612, - STDOUT = 613, - STORAGE = 614, - STRICT_P = 615, - STRIP_P = 616, - SUBSTRING = 617, - SYMMETRIC = 618, - SYSID = 619, - SYSTEM_P = 620, - TABLE = 621, - TABLES = 622, - TABLESAMPLE = 623, - TABLESPACE = 624, - TEMP = 625, - TEMPLATE = 626, - TEMPORARY = 627, - TEXT_P = 628, - THEN = 629, - TIME = 630, - TIMESTAMP = 631, - TO = 632, - TRAILING = 633, - TRANSACTION = 634, - TRANSFORM = 635, - TREAT = 636, - TRIGGER = 637, - TRIM = 638, - TRUE_P = 639, - TRUNCATE = 640, - TRUSTED = 641, - TYPE_P = 642, - TYPES_P = 643, - UNBOUNDED = 644, - UNCOMMITTED = 645, - UNENCRYPTED = 646, - UNION = 647, - UNIQUE = 648, - UNKNOWN = 649, - UNLISTEN = 650, - UNLOGGED = 651, - UNTIL = 652, - UPDATE = 653, - USER = 654, - USING = 655, - VACUUM = 656, - VALID = 657, - VALIDATE = 658, - VALIDATOR = 659, - VALUE_P = 660, - VALUES = 661, - VARCHAR = 662, - VARIADIC = 663, - VARYING = 664, - VERBOSE = 665, - VERSION_P = 666, - VIEW = 667, - VIEWS = 668, - VOLATILE = 669, - WHEN = 670, - WHERE = 671, - WHITESPACE_P = 672, - WINDOW = 673, - WITH = 674, - WITHIN = 675, - WITHOUT = 676, - WORK = 677, - WRAPPER = 678, - WRITE = 679, - XML_P = 680, - XMLATTRIBUTES = 681, - XMLCONCAT = 682, - XMLELEMENT = 683, - XMLEXISTS = 684, - XMLFOREST = 685, - XMLPARSE = 686, - XMLPI = 687, - XMLROOT = 688, - XMLSERIALIZE = 689, - YEAR_P = 690, - YES_P = 691, - ZONE = 692, - NOT_LA = 693, - NULLS_LA = 694, - WITH_LA = 695, - POSTFIXOP = 696, - UMINUS = 697 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IDENT = 258, + FCONST = 259, + SCONST = 260, + BCONST = 261, + XCONST = 262, + Op = 263, + ICONST = 264, + PARAM = 265, + TYPECAST = 266, + DOT_DOT = 267, + COLON_EQUALS = 268, + EQUALS_GREATER = 269, + LESS_EQUALS = 270, + GREATER_EQUALS = 271, + NOT_EQUALS = 272, + ABORT_P = 273, + ABSOLUTE_P = 274, + ACCESS = 275, + ACTION = 276, + ADD_P = 277, + ADMIN = 278, + AFTER = 279, + AGGREGATE = 280, + ALL = 281, + ALSO = 282, + ALTER = 283, + ALWAYS = 284, + ANALYSE = 285, + ANALYZE = 286, + AND = 287, + ANY = 288, + ARRAY = 289, + AS = 290, + ASC = 291, + ASSERTION = 292, + ASSIGNMENT = 293, + ASYMMETRIC = 294, + AT = 295, + ATTACH = 296, + ATTRIBUTE = 297, + AUTHORIZATION = 298, + BACKWARD = 299, + BEFORE = 300, + BEGIN_P = 301, + BETWEEN = 302, + BIGINT = 303, + BINARY = 304, + BIT = 305, + BOOLEAN_P = 306, + BOTH = 307, + BY = 308, + CACHE = 309, + CALLED = 310, + CASCADE = 311, + CASCADED = 312, + CASE = 313, + CAST = 314, + CATALOG_P = 315, + CHAIN = 316, + CHAR_P = 317, + CHARACTER = 318, + CHARACTERISTICS = 319, + CHECK = 320, + CHECKPOINT = 321, + CLASS = 322, + CLOSE = 323, + CLUSTER = 324, + COALESCE = 325, + COLLATE = 326, + COLLATION = 327, + COLUMN = 328, + COLUMNS = 329, + COMMENT = 330, + COMMENTS = 331, + COMMIT = 332, + COMMITTED = 333, + CONCURRENTLY = 334, + CONFIGURATION = 335, + CONFLICT = 336, + CONNECTION = 337, + CONSTRAINT = 338, + CONSTRAINTS = 339, + CONTENT_P = 340, + CONTINUE_P = 341, + CONVERSION_P = 342, + COPY = 343, + COST = 344, + CREATE = 345, + CROSS = 346, + CSV = 347, + CUBE = 348, + CURRENT_P = 349, + CURRENT_CATALOG = 350, + CURRENT_DATE = 351, + CURRENT_ROLE = 352, + CURRENT_SCHEMA = 353, + CURRENT_TIME = 354, + CURRENT_TIMESTAMP = 355, + CURRENT_USER = 356, + CURSOR = 357, + CYCLE = 358, + DATA_P = 359, + DATABASE = 360, + DAY_P = 361, + DEALLOCATE = 362, + DEC = 363, + DECIMAL_P = 364, + DECLARE = 365, + DEFAULT = 366, + DEFAULTS = 367, + DEFERRABLE = 368, + DEFERRED = 369, + DEFINER = 370, + DELETE_P = 371, + DELIMITER = 372, + DELIMITERS = 373, + DEPENDS = 374, + DESC = 375, + DETACH = 376, + DICTIONARY = 377, + DISABLE_P = 378, + DISCARD = 379, + DISTINCT = 380, + DO = 381, + DOCUMENT_P = 382, + DOMAIN_P = 383, + DOUBLE_P = 384, + DROP = 385, + EACH = 386, + ELSE = 387, + ENABLE_P = 388, + ENCODING = 389, + ENCRYPTED = 390, + END_P = 391, + ENUM_P = 392, + ESCAPE = 393, + EVENT = 394, + EXCEPT = 395, + EXCLUDE = 396, + EXCLUDING = 397, + EXCLUSIVE = 398, + EXECUTE = 399, + EXISTS = 400, + EXPLAIN = 401, + EXTENSION = 402, + EXTERNAL = 403, + EXTRACT = 404, + FALSE_P = 405, + FAMILY = 406, + FETCH = 407, + FILTER = 408, + FIRST_P = 409, + FLOAT_P = 410, + FOLLOWING = 411, + FOR = 412, + FORCE = 413, + FOREIGN = 414, + FORWARD = 415, + FREEZE = 416, + FROM = 417, + FULL = 418, + FUNCTION = 419, + FUNCTIONS = 420, + GENERATED = 421, + GLOBAL = 422, + GRANT = 423, + GRANTED = 424, + GREATEST = 425, + GROUP_P = 426, + GROUPING = 427, + HANDLER = 428, + HAVING = 429, + HEADER_P = 430, + HOLD = 431, + HOUR_P = 432, + IDENTITY_P = 433, + IF_P = 434, + ILIKE = 435, + IMMEDIATE = 436, + IMMUTABLE = 437, + IMPLICIT_P = 438, + IMPORT_P = 439, + IN_P = 440, + INCLUDING = 441, + INCREMENT = 442, + INDEX = 443, + INDEXES = 444, + INHERIT = 445, + INHERITS = 446, + INITIALLY = 447, + INLINE_P = 448, + INNER_P = 449, + INOUT = 450, + INPUT_P = 451, + INSENSITIVE = 452, + INSERT = 453, + INSTEAD = 454, + INT_P = 455, + INTEGER = 456, + INTERSECT = 457, + INTERVAL = 458, + INTO = 459, + INVOKER = 460, + IS = 461, + ISNULL = 462, + ISOLATION = 463, + JOIN = 464, + KEY = 465, + LABEL = 466, + LANGUAGE = 467, + LARGE_P = 468, + LAST_P = 469, + LATERAL_P = 470, + LEADING = 471, + LEAKPROOF = 472, + LEAST = 473, + LEFT = 474, + LEVEL = 475, + LIKE = 476, + LIMIT = 477, + LISTEN = 478, + LOAD = 479, + LOCAL = 480, + LOCALTIME = 481, + LOCALTIMESTAMP = 482, + LOCATION = 483, + LOCK_P = 484, + LOCKED = 485, + LOGGED = 486, + MAPPING = 487, + MATCH = 488, + MATERIALIZED = 489, + MAXVALUE = 490, + METHOD = 491, + MINUTE_P = 492, + MINVALUE = 493, + MODE = 494, + MONTH_P = 495, + MOVE = 496, + NAME_P = 497, + NAMES = 498, + NATIONAL = 499, + NATURAL = 500, + NCHAR = 501, + NEW = 502, + NEXT = 503, + NO = 504, + NONE = 505, + NOT = 506, + NOTHING = 507, + NOTIFY = 508, + NOTNULL = 509, + NOWAIT = 510, + NULL_P = 511, + NULLIF = 512, + NULLS_P = 513, + NUMERIC = 514, + OBJECT_P = 515, + OF = 516, + OFF = 517, + OFFSET = 518, + OIDS = 519, + OLD = 520, + ON = 521, + ONLY = 522, + OPERATOR = 523, + OPTION = 524, + OPTIONS = 525, + OR = 526, + ORDER = 527, + ORDINALITY = 528, + OUT_P = 529, + OUTER_P = 530, + OVER = 531, + OVERLAPS = 532, + OVERLAY = 533, + OVERRIDING = 534, + OWNED = 535, + OWNER = 536, + PARALLEL = 537, + PARSER = 538, + PARTIAL = 539, + PARTITION = 540, + PASSING = 541, + PASSWORD = 542, + PGPOOL = 543, + PLACING = 544, + PLANS = 545, + POLICY = 546, + POSITION = 547, + PRECEDING = 548, + PRECISION = 549, + PRESERVE = 550, + PREPARE = 551, + PREPARED = 552, + PRIMARY = 553, + PRIOR = 554, + PRIVILEGES = 555, + PROCEDURAL = 556, + PROCEDURE = 557, + PROGRAM = 558, + PUBLICATION = 559, + QUOTE = 560, + RANGE = 561, + READ = 562, + REAL = 563, + REASSIGN = 564, + RECHECK = 565, + RECURSIVE = 566, + REF = 567, + REFERENCES = 568, + REFERENCING = 569, + REFRESH = 570, + REINDEX = 571, + RELATIVE_P = 572, + RELEASE = 573, + RENAME = 574, + REPEATABLE = 575, + REPLACE = 576, + REPLICA = 577, + RESET = 578, + RESTART = 579, + RESTRICT = 580, + RETURNING = 581, + RETURNS = 582, + REVOKE = 583, + RIGHT = 584, + ROLE = 585, + ROLLBACK = 586, + ROLLUP = 587, + ROW = 588, + ROWS = 589, + RULE = 590, + SAVEPOINT = 591, + SCHEMA = 592, + SCHEMAS = 593, + SCROLL = 594, + SEARCH = 595, + SECOND_P = 596, + SECURITY = 597, + SELECT = 598, + SEQUENCE = 599, + SEQUENCES = 600, + SERIALIZABLE = 601, + SERVER = 602, + SESSION = 603, + SESSION_USER = 604, + SET = 605, + SETS = 606, + SETOF = 607, + SHARE = 608, + SHOW = 609, + SIMILAR = 610, + SIMPLE = 611, + SKIP = 612, + SMALLINT = 613, + SNAPSHOT = 614, + SOME = 615, + SQL_P = 616, + STABLE = 617, + STANDALONE_P = 618, + START = 619, + STATEMENT = 620, + STATISTICS = 621, + STDIN = 622, + STDOUT = 623, + STORAGE = 624, + STRICT_P = 625, + STRIP_P = 626, + SUBSCRIPTION = 627, + SUBSTRING = 628, + SYMMETRIC = 629, + SYSID = 630, + SYSTEM_P = 631, + TABLE = 632, + TABLES = 633, + TABLESAMPLE = 634, + TABLESPACE = 635, + TEMP = 636, + TEMPLATE = 637, + TEMPORARY = 638, + TEXT_P = 639, + THEN = 640, + TIME = 641, + TIMESTAMP = 642, + TO = 643, + TRAILING = 644, + TRANSACTION = 645, + TRANSFORM = 646, + TREAT = 647, + TRIGGER = 648, + TRIM = 649, + TRUE_P = 650, + TRUNCATE = 651, + TRUSTED = 652, + TYPE_P = 653, + TYPES_P = 654, + UNBOUNDED = 655, + UNCOMMITTED = 656, + UNENCRYPTED = 657, + UNION = 658, + UNIQUE = 659, + UNKNOWN = 660, + UNLISTEN = 661, + UNLOGGED = 662, + UNTIL = 663, + UPDATE = 664, + USER = 665, + USING = 666, + VACUUM = 667, + VALID = 668, + VALIDATE = 669, + VALIDATOR = 670, + VALUE_P = 671, + VALUES = 672, + VARCHAR = 673, + VARIADIC = 674, + VARYING = 675, + VERBOSE = 676, + VERSION_P = 677, + VIEW = 678, + VIEWS = 679, + VOLATILE = 680, + WHEN = 681, + WHERE = 682, + WHITESPACE_P = 683, + WINDOW = 684, + WITH = 685, + WITHIN = 686, + WITHOUT = 687, + WORK = 688, + WRAPPER = 689, + WRITE = 690, + XML_P = 691, + XMLATTRIBUTES = 692, + XMLCONCAT = 693, + XMLELEMENT = 694, + XMLEXISTS = 695, + XMLFOREST = 696, + XMLNAMESPACES = 697, + XMLPARSE = 698, + XMLPI = 699, + XMLROOT = 700, + XMLSERIALIZE = 701, + XMLTABLE = 702, + YEAR_P = 703, + YES_P = 704, + ZONE = 705, + NOT_LA = 706, + NULLS_LA = 707, + WITH_LA = 708, + POSTFIXOP = 709, + UMINUS = 710 + }; #endif /* Tokens. */ #define IDENT 258 @@ -800,415 +831,429 @@ extern int base_yydebug; #define ASSIGNMENT 293 #define ASYMMETRIC 294 #define AT 295 -#define ATTRIBUTE 296 -#define AUTHORIZATION 297 -#define BACKWARD 298 -#define BEFORE 299 -#define BEGIN_P 300 -#define BETWEEN 301 -#define BIGINT 302 -#define BINARY 303 -#define BIT 304 -#define BOOLEAN_P 305 -#define BOTH 306 -#define BY 307 -#define CACHE 308 -#define CALLED 309 -#define CASCADE 310 -#define CASCADED 311 -#define CASE 312 -#define CAST 313 -#define CATALOG_P 314 -#define CHAIN 315 -#define CHAR_P 316 -#define CHARACTER 317 -#define CHARACTERISTICS 318 -#define CHECK 319 -#define CHECKPOINT 320 -#define CLASS 321 -#define CLOSE 322 -#define CLUSTER 323 -#define COALESCE 324 -#define COLLATE 325 -#define COLLATION 326 -#define COLUMN 327 -#define COMMENT 328 -#define COMMENTS 329 -#define COMMIT 330 -#define COMMITTED 331 -#define CONCURRENTLY 332 -#define CONFIGURATION 333 -#define CONFLICT 334 -#define CONNECTION 335 -#define CONSTRAINT 336 -#define CONSTRAINTS 337 -#define CONTENT_P 338 -#define CONTINUE_P 339 -#define CONVERSION_P 340 -#define COPY 341 -#define COST 342 -#define CREATE 343 -#define CROSS 344 -#define CSV 345 -#define CUBE 346 -#define CURRENT_P 347 -#define CURRENT_CATALOG 348 -#define CURRENT_DATE 349 -#define CURRENT_ROLE 350 -#define CURRENT_SCHEMA 351 -#define CURRENT_TIME 352 -#define CURRENT_TIMESTAMP 353 -#define CURRENT_USER 354 -#define CURSOR 355 -#define CYCLE 356 -#define DATA_P 357 -#define DATABASE 358 -#define DAY_P 359 -#define DEALLOCATE 360 -#define DEC 361 -#define DECIMAL_P 362 -#define DECLARE 363 -#define DEFAULT 364 -#define DEFAULTS 365 -#define DEFERRABLE 366 -#define DEFERRED 367 -#define DEFINER 368 -#define DELETE_P 369 -#define DELIMITER 370 -#define DELIMITERS 371 -#define DEPENDS 372 -#define DESC 373 -#define DICTIONARY 374 -#define DISABLE_P 375 -#define DISCARD 376 -#define DISTINCT 377 -#define DO 378 -#define DOCUMENT_P 379 -#define DOMAIN_P 380 -#define DOUBLE_P 381 -#define DROP 382 -#define EACH 383 -#define ELSE 384 -#define ENABLE_P 385 -#define ENCODING 386 -#define ENCRYPTED 387 -#define END_P 388 -#define ENUM_P 389 -#define ESCAPE 390 -#define EVENT 391 -#define EXCEPT 392 -#define EXCLUDE 393 -#define EXCLUDING 394 -#define EXCLUSIVE 395 -#define EXECUTE 396 -#define EXISTS 397 -#define EXPLAIN 398 -#define EXTENSION 399 -#define EXTERNAL 400 -#define EXTRACT 401 -#define FALSE_P 402 -#define FAMILY 403 -#define FETCH 404 -#define FILTER 405 -#define FIRST_P 406 -#define FLOAT_P 407 -#define FOLLOWING 408 -#define FOR 409 -#define FORCE 410 -#define FOREIGN 411 -#define FORWARD 412 -#define FREEZE 413 -#define FROM 414 -#define FULL 415 -#define FUNCTION 416 -#define FUNCTIONS 417 -#define GLOBAL 418 -#define GRANT 419 -#define GRANTED 420 -#define GREATEST 421 -#define GROUP_P 422 -#define GROUPING 423 -#define HANDLER 424 -#define HAVING 425 -#define HEADER_P 426 -#define HOLD 427 -#define HOUR_P 428 -#define IDENTITY_P 429 -#define IF_P 430 -#define ILIKE 431 -#define IMMEDIATE 432 -#define IMMUTABLE 433 -#define IMPLICIT_P 434 -#define IMPORT_P 435 -#define IN_P 436 -#define INCLUDING 437 -#define INCREMENT 438 -#define INDEX 439 -#define INDEXES 440 -#define INHERIT 441 -#define INHERITS 442 -#define INITIALLY 443 -#define INLINE_P 444 -#define INNER_P 445 -#define INOUT 446 -#define INPUT_P 447 -#define INSENSITIVE 448 -#define INSERT 449 -#define INSTEAD 450 -#define INT_P 451 -#define INTEGER 452 -#define INTERSECT 453 -#define INTERVAL 454 -#define INTO 455 -#define INVOKER 456 -#define IS 457 -#define ISNULL 458 -#define ISOLATION 459 -#define JOIN 460 -#define KEY 461 -#define LABEL 462 -#define LANGUAGE 463 -#define LARGE_P 464 -#define LAST_P 465 -#define LATERAL_P 466 -#define LEADING 467 -#define LEAKPROOF 468 -#define LEAST 469 -#define LEFT 470 -#define LEVEL 471 -#define LIKE 472 -#define LIMIT 473 -#define LISTEN 474 -#define LOAD 475 -#define LOCAL 476 -#define LOCALTIME 477 -#define LOCALTIMESTAMP 478 -#define LOCATION 479 -#define LOCK_P 480 -#define LOCKED 481 -#define LOGGED 482 -#define MAPPING 483 -#define MATCH 484 -#define MATERIALIZED 485 -#define MAXVALUE 486 -#define METHOD 487 -#define MINUTE_P 488 -#define MINVALUE 489 -#define MODE 490 -#define MONTH_P 491 -#define MOVE 492 -#define NAME_P 493 -#define NAMES 494 -#define NATIONAL 495 -#define NATURAL 496 -#define NCHAR 497 -#define NEXT 498 -#define NO 499 -#define NONE 500 -#define NOT 501 -#define NOTHING 502 -#define NOTIFY 503 -#define NOTNULL 504 -#define NOWAIT 505 -#define NULL_P 506 -#define NULLIF 507 -#define NULLS_P 508 -#define NUMERIC 509 -#define OBJECT_P 510 -#define OF 511 -#define OFF 512 -#define OFFSET 513 -#define OIDS 514 -#define ON 515 -#define ONLY 516 -#define OPERATOR 517 -#define OPTION 518 -#define OPTIONS 519 -#define OR 520 -#define ORDER 521 -#define ORDINALITY 522 -#define OUT_P 523 -#define OUTER_P 524 -#define OVER 525 -#define OVERLAPS 526 -#define OVERLAY 527 -#define OWNED 528 -#define OWNER 529 -#define PARALLEL 530 -#define PARSER 531 -#define PARTIAL 532 -#define PARTITION 533 -#define PASSING 534 -#define PASSWORD 535 -#define PGPOOL 536 -#define PLACING 537 -#define PLANS 538 -#define POLICY 539 -#define POSITION 540 -#define PRECEDING 541 -#define PRECISION 542 -#define PRESERVE 543 -#define PREPARE 544 -#define PREPARED 545 -#define PRIMARY 546 -#define PRIOR 547 -#define PRIVILEGES 548 -#define PROCEDURAL 549 -#define PROCEDURE 550 -#define PROGRAM 551 -#define QUOTE 552 -#define RANGE 553 -#define READ 554 -#define REAL 555 -#define REASSIGN 556 -#define RECHECK 557 -#define RECURSIVE 558 -#define REF 559 -#define REFERENCES 560 -#define REFRESH 561 -#define REINDEX 562 -#define RELATIVE_P 563 -#define RELEASE 564 -#define RENAME 565 -#define REPEATABLE 566 -#define REPLACE 567 -#define REPLICA 568 -#define RESET 569 -#define RESTART 570 -#define RESTRICT 571 -#define RETURNING 572 -#define RETURNS 573 -#define REVOKE 574 -#define RIGHT 575 -#define ROLE 576 -#define ROLLBACK 577 -#define ROLLUP 578 -#define ROW 579 -#define ROWS 580 -#define RULE 581 -#define SAVEPOINT 582 -#define SCHEMA 583 -#define SCROLL 584 -#define SEARCH 585 -#define SECOND_P 586 -#define SECURITY 587 -#define SELECT 588 -#define SEQUENCE 589 -#define SEQUENCES 590 -#define SERIALIZABLE 591 -#define SERVER 592 -#define SESSION 593 -#define SESSION_USER 594 -#define SET 595 -#define SETS 596 -#define SETOF 597 -#define SHARE 598 -#define SHOW 599 -#define SIMILAR 600 -#define SIMPLE 601 -#define SKIP 602 -#define SMALLINT 603 -#define SNAPSHOT 604 -#define SOME 605 -#define SQL_P 606 -#define STABLE 607 -#define STANDALONE_P 608 -#define START 609 -#define STATEMENT 610 -#define STATISTICS 611 -#define STDIN 612 -#define STDOUT 613 -#define STORAGE 614 -#define STRICT_P 615 -#define STRIP_P 616 -#define SUBSTRING 617 -#define SYMMETRIC 618 -#define SYSID 619 -#define SYSTEM_P 620 -#define TABLE 621 -#define TABLES 622 -#define TABLESAMPLE 623 -#define TABLESPACE 624 -#define TEMP 625 -#define TEMPLATE 626 -#define TEMPORARY 627 -#define TEXT_P 628 -#define THEN 629 -#define TIME 630 -#define TIMESTAMP 631 -#define TO 632 -#define TRAILING 633 -#define TRANSACTION 634 -#define TRANSFORM 635 -#define TREAT 636 -#define TRIGGER 637 -#define TRIM 638 -#define TRUE_P 639 -#define TRUNCATE 640 -#define TRUSTED 641 -#define TYPE_P 642 -#define TYPES_P 643 -#define UNBOUNDED 644 -#define UNCOMMITTED 645 -#define UNENCRYPTED 646 -#define UNION 647 -#define UNIQUE 648 -#define UNKNOWN 649 -#define UNLISTEN 650 -#define UNLOGGED 651 -#define UNTIL 652 -#define UPDATE 653 -#define USER 654 -#define USING 655 -#define VACUUM 656 -#define VALID 657 -#define VALIDATE 658 -#define VALIDATOR 659 -#define VALUE_P 660 -#define VALUES 661 -#define VARCHAR 662 -#define VARIADIC 663 -#define VARYING 664 -#define VERBOSE 665 -#define VERSION_P 666 -#define VIEW 667 -#define VIEWS 668 -#define VOLATILE 669 -#define WHEN 670 -#define WHERE 671 -#define WHITESPACE_P 672 -#define WINDOW 673 -#define WITH 674 -#define WITHIN 675 -#define WITHOUT 676 -#define WORK 677 -#define WRAPPER 678 -#define WRITE 679 -#define XML_P 680 -#define XMLATTRIBUTES 681 -#define XMLCONCAT 682 -#define XMLELEMENT 683 -#define XMLEXISTS 684 -#define XMLFOREST 685 -#define XMLPARSE 686 -#define XMLPI 687 -#define XMLROOT 688 -#define XMLSERIALIZE 689 -#define YEAR_P 690 -#define YES_P 691 -#define ZONE 692 -#define NOT_LA 693 -#define NULLS_LA 694 -#define WITH_LA 695 -#define POSTFIXOP 696 -#define UMINUS 697 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +#define ATTACH 296 +#define ATTRIBUTE 297 +#define AUTHORIZATION 298 +#define BACKWARD 299 +#define BEFORE 300 +#define BEGIN_P 301 +#define BETWEEN 302 +#define BIGINT 303 +#define BINARY 304 +#define BIT 305 +#define BOOLEAN_P 306 +#define BOTH 307 +#define BY 308 +#define CACHE 309 +#define CALLED 310 +#define CASCADE 311 +#define CASCADED 312 +#define CASE 313 +#define CAST 314 +#define CATALOG_P 315 +#define CHAIN 316 +#define CHAR_P 317 +#define CHARACTER 318 +#define CHARACTERISTICS 319 +#define CHECK 320 +#define CHECKPOINT 321 +#define CLASS 322 +#define CLOSE 323 +#define CLUSTER 324 +#define COALESCE 325 +#define COLLATE 326 +#define COLLATION 327 +#define COLUMN 328 +#define COLUMNS 329 +#define COMMENT 330 +#define COMMENTS 331 +#define COMMIT 332 +#define COMMITTED 333 +#define CONCURRENTLY 334 +#define CONFIGURATION 335 +#define CONFLICT 336 +#define CONNECTION 337 +#define CONSTRAINT 338 +#define CONSTRAINTS 339 +#define CONTENT_P 340 +#define CONTINUE_P 341 +#define CONVERSION_P 342 +#define COPY 343 +#define COST 344 +#define CREATE 345 +#define CROSS 346 +#define CSV 347 +#define CUBE 348 +#define CURRENT_P 349 +#define CURRENT_CATALOG 350 +#define CURRENT_DATE 351 +#define CURRENT_ROLE 352 +#define CURRENT_SCHEMA 353 +#define CURRENT_TIME 354 +#define CURRENT_TIMESTAMP 355 +#define CURRENT_USER 356 +#define CURSOR 357 +#define CYCLE 358 +#define DATA_P 359 +#define DATABASE 360 +#define DAY_P 361 +#define DEALLOCATE 362 +#define DEC 363 +#define DECIMAL_P 364 +#define DECLARE 365 +#define DEFAULT 366 +#define DEFAULTS 367 +#define DEFERRABLE 368 +#define DEFERRED 369 +#define DEFINER 370 +#define DELETE_P 371 +#define DELIMITER 372 +#define DELIMITERS 373 +#define DEPENDS 374 +#define DESC 375 +#define DETACH 376 +#define DICTIONARY 377 +#define DISABLE_P 378 +#define DISCARD 379 +#define DISTINCT 380 +#define DO 381 +#define DOCUMENT_P 382 +#define DOMAIN_P 383 +#define DOUBLE_P 384 +#define DROP 385 +#define EACH 386 +#define ELSE 387 +#define ENABLE_P 388 +#define ENCODING 389 +#define ENCRYPTED 390 +#define END_P 391 +#define ENUM_P 392 +#define ESCAPE 393 +#define EVENT 394 +#define EXCEPT 395 +#define EXCLUDE 396 +#define EXCLUDING 397 +#define EXCLUSIVE 398 +#define EXECUTE 399 +#define EXISTS 400 +#define EXPLAIN 401 +#define EXTENSION 402 +#define EXTERNAL 403 +#define EXTRACT 404 +#define FALSE_P 405 +#define FAMILY 406 +#define FETCH 407 +#define FILTER 408 +#define FIRST_P 409 +#define FLOAT_P 410 +#define FOLLOWING 411 +#define FOR 412 +#define FORCE 413 +#define FOREIGN 414 +#define FORWARD 415 +#define FREEZE 416 +#define FROM 417 +#define FULL 418 +#define FUNCTION 419 +#define FUNCTIONS 420 +#define GENERATED 421 +#define GLOBAL 422 +#define GRANT 423 +#define GRANTED 424 +#define GREATEST 425 +#define GROUP_P 426 +#define GROUPING 427 +#define HANDLER 428 +#define HAVING 429 +#define HEADER_P 430 +#define HOLD 431 +#define HOUR_P 432 +#define IDENTITY_P 433 +#define IF_P 434 +#define ILIKE 435 +#define IMMEDIATE 436 +#define IMMUTABLE 437 +#define IMPLICIT_P 438 +#define IMPORT_P 439 +#define IN_P 440 +#define INCLUDING 441 +#define INCREMENT 442 +#define INDEX 443 +#define INDEXES 444 +#define INHERIT 445 +#define INHERITS 446 +#define INITIALLY 447 +#define INLINE_P 448 +#define INNER_P 449 +#define INOUT 450 +#define INPUT_P 451 +#define INSENSITIVE 452 +#define INSERT 453 +#define INSTEAD 454 +#define INT_P 455 +#define INTEGER 456 +#define INTERSECT 457 +#define INTERVAL 458 +#define INTO 459 +#define INVOKER 460 +#define IS 461 +#define ISNULL 462 +#define ISOLATION 463 +#define JOIN 464 +#define KEY 465 +#define LABEL 466 +#define LANGUAGE 467 +#define LARGE_P 468 +#define LAST_P 469 +#define LATERAL_P 470 +#define LEADING 471 +#define LEAKPROOF 472 +#define LEAST 473 +#define LEFT 474 +#define LEVEL 475 +#define LIKE 476 +#define LIMIT 477 +#define LISTEN 478 +#define LOAD 479 +#define LOCAL 480 +#define LOCALTIME 481 +#define LOCALTIMESTAMP 482 +#define LOCATION 483 +#define LOCK_P 484 +#define LOCKED 485 +#define LOGGED 486 +#define MAPPING 487 +#define MATCH 488 +#define MATERIALIZED 489 +#define MAXVALUE 490 +#define METHOD 491 +#define MINUTE_P 492 +#define MINVALUE 493 +#define MODE 494 +#define MONTH_P 495 +#define MOVE 496 +#define NAME_P 497 +#define NAMES 498 +#define NATIONAL 499 +#define NATURAL 500 +#define NCHAR 501 +#define NEW 502 +#define NEXT 503 +#define NO 504 +#define NONE 505 +#define NOT 506 +#define NOTHING 507 +#define NOTIFY 508 +#define NOTNULL 509 +#define NOWAIT 510 +#define NULL_P 511 +#define NULLIF 512 +#define NULLS_P 513 +#define NUMERIC 514 +#define OBJECT_P 515 +#define OF 516 +#define OFF 517 +#define OFFSET 518 +#define OIDS 519 +#define OLD 520 +#define ON 521 +#define ONLY 522 +#define OPERATOR 523 +#define OPTION 524 +#define OPTIONS 525 +#define OR 526 +#define ORDER 527 +#define ORDINALITY 528 +#define OUT_P 529 +#define OUTER_P 530 +#define OVER 531 +#define OVERLAPS 532 +#define OVERLAY 533 +#define OVERRIDING 534 +#define OWNED 535 +#define OWNER 536 +#define PARALLEL 537 +#define PARSER 538 +#define PARTIAL 539 +#define PARTITION 540 +#define PASSING 541 +#define PASSWORD 542 +#define PGPOOL 543 +#define PLACING 544 +#define PLANS 545 +#define POLICY 546 +#define POSITION 547 +#define PRECEDING 548 +#define PRECISION 549 +#define PRESERVE 550 +#define PREPARE 551 +#define PREPARED 552 +#define PRIMARY 553 +#define PRIOR 554 +#define PRIVILEGES 555 +#define PROCEDURAL 556 +#define PROCEDURE 557 +#define PROGRAM 558 +#define PUBLICATION 559 +#define QUOTE 560 +#define RANGE 561 +#define READ 562 +#define REAL 563 +#define REASSIGN 564 +#define RECHECK 565 +#define RECURSIVE 566 +#define REF 567 +#define REFERENCES 568 +#define REFERENCING 569 +#define REFRESH 570 +#define REINDEX 571 +#define RELATIVE_P 572 +#define RELEASE 573 +#define RENAME 574 +#define REPEATABLE 575 +#define REPLACE 576 +#define REPLICA 577 +#define RESET 578 +#define RESTART 579 +#define RESTRICT 580 +#define RETURNING 581 +#define RETURNS 582 +#define REVOKE 583 +#define RIGHT 584 +#define ROLE 585 +#define ROLLBACK 586 +#define ROLLUP 587 +#define ROW 588 +#define ROWS 589 +#define RULE 590 +#define SAVEPOINT 591 +#define SCHEMA 592 +#define SCHEMAS 593 +#define SCROLL 594 +#define SEARCH 595 +#define SECOND_P 596 +#define SECURITY 597 +#define SELECT 598 +#define SEQUENCE 599 +#define SEQUENCES 600 +#define SERIALIZABLE 601 +#define SERVER 602 +#define SESSION 603 +#define SESSION_USER 604 +#define SET 605 +#define SETS 606 +#define SETOF 607 +#define SHARE 608 +#define SHOW 609 +#define SIMILAR 610 +#define SIMPLE 611 +#define SKIP 612 +#define SMALLINT 613 +#define SNAPSHOT 614 +#define SOME 615 +#define SQL_P 616 +#define STABLE 617 +#define STANDALONE_P 618 +#define START 619 +#define STATEMENT 620 +#define STATISTICS 621 +#define STDIN 622 +#define STDOUT 623 +#define STORAGE 624 +#define STRICT_P 625 +#define STRIP_P 626 +#define SUBSCRIPTION 627 +#define SUBSTRING 628 +#define SYMMETRIC 629 +#define SYSID 630 +#define SYSTEM_P 631 +#define TABLE 632 +#define TABLES 633 +#define TABLESAMPLE 634 +#define TABLESPACE 635 +#define TEMP 636 +#define TEMPLATE 637 +#define TEMPORARY 638 +#define TEXT_P 639 +#define THEN 640 +#define TIME 641 +#define TIMESTAMP 642 +#define TO 643 +#define TRAILING 644 +#define TRANSACTION 645 +#define TRANSFORM 646 +#define TREAT 647 +#define TRIGGER 648 +#define TRIM 649 +#define TRUE_P 650 +#define TRUNCATE 651 +#define TRUSTED 652 +#define TYPE_P 653 +#define TYPES_P 654 +#define UNBOUNDED 655 +#define UNCOMMITTED 656 +#define UNENCRYPTED 657 +#define UNION 658 +#define UNIQUE 659 +#define UNKNOWN 660 +#define UNLISTEN 661 +#define UNLOGGED 662 +#define UNTIL 663 +#define UPDATE 664 +#define USER 665 +#define USING 666 +#define VACUUM 667 +#define VALID 668 +#define VALIDATE 669 +#define VALIDATOR 670 +#define VALUE_P 671 +#define VALUES 672 +#define VARCHAR 673 +#define VARIADIC 674 +#define VARYING 675 +#define VERBOSE 676 +#define VERSION_P 677 +#define VIEW 678 +#define VIEWS 679 +#define VOLATILE 680 +#define WHEN 681 +#define WHERE 682 +#define WHITESPACE_P 683 +#define WINDOW 684 +#define WITH 685 +#define WITHIN 686 +#define WITHOUT 687 +#define WORK 688 +#define WRAPPER 689 +#define WRITE 690 +#define XML_P 691 +#define XMLATTRIBUTES 692 +#define XMLCONCAT 693 +#define XMLELEMENT 694 +#define XMLEXISTS 695 +#define XMLFOREST 696 +#define XMLNAMESPACES 697 +#define XMLPARSE 698 +#define XMLPI 699 +#define XMLROOT 700 +#define XMLSERIALIZE 701 +#define XMLTABLE 702 +#define YEAR_P 703 +#define YES_P 704 +#define ZONE 705 +#define NOT_LA 706 +#define NULLS_LA 707 +#define WITH_LA 708 +#define POSTFIXOP 709 +#define UMINUS 710 + -union YYSTYPE + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE { -#line 226 "gram.y" /* yacc.c:355 */ +/* Line 387 of yacc.c */ +#line 239 "gram.y" core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ @@ -1228,7 +1273,7 @@ union YYSTYPE TypeName *typnam; FunctionParameter *fun_param; FunctionParameterMode fun_param_mode; - FuncWithArgs *funwithargs; + ObjectWithArgs *objwithargs; DefElem *defelt; SortBy *sortby; WindowDef *windef; @@ -1247,38 +1292,54 @@ union YYSTYPE struct ImportQual *importqual; InsertStmt *istmt; VariableSetStmt *vsetstmt; + PartitionElem *partelem; + PartitionSpec *partspec; + PartitionBoundSpec *partboundspec; + RoleSpec *rolespec; -#line 1252 "gram.c" /* yacc.c:355 */ -}; -typedef union YYSTYPE YYSTYPE; +/* Line 387 of yacc.c */ +#line 1303 "gram.c" +} YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif -/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE YYLTYPE; -struct YYLTYPE +typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -}; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif - +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int base_yyparse (void *YYPARSE_PARAM); +#else +int base_yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus int base_yyparse (core_yyscan_t yyscanner); +#else +int base_yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ #endif /* !YY_BASE_YY_Y_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 1282 "gram.c" /* yacc.c:358 */ +/* Line 390 of yacc.c */ +#line 1343 "gram.c" #ifdef short # undef short @@ -1292,8 +1353,11 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#else +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; +#else +typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -1313,7 +1377,8 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -1335,33 +1400,6 @@ typedef short int yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -1369,26 +1407,24 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(N) (N) #else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; #endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ +{ + return yyi; +} #endif - #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -1406,7 +1442,8 @@ typedef short int yytype_int16; # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -1418,8 +1455,8 @@ typedef short int yytype_int16; # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -1435,7 +1472,7 @@ typedef short int yytype_int16; # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -1443,13 +1480,15 @@ typedef short int yytype_int16; # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -1459,8 +1498,8 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ - && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -1486,16 +1525,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) #endif @@ -1514,47 +1553,45 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (0) + while (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 767 +#define YYFINAL 788 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 92941 +#define YYLAST 97207 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 460 +#define YYNTOKENS 473 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 618 +#define YYNNTS 653 /* YYNRULES -- Number of rules. */ -#define YYNRULES 2513 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 4991 +#define YYNRULES 2661 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 5314 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 697 +#define YYMAXUTOK 710 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 449, 2, 2, - 454, 455, 447, 445, 458, 446, 456, 448, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 459, 457, - 441, 443, 442, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 462, 2, 2, + 467, 468, 460, 458, 471, 459, 469, 461, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 472, 470, + 454, 456, 455, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 452, 2, 453, 450, 2, 2, 2, 2, 2, + 2, 465, 2, 466, 463, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1614,265 +1651,1527 @@ static const yytype_uint16 yytranslate[] = 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 444, 451 + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 457, + 464 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 9, 11, 13, 15, 17, 19, + 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, + 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, + 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, + 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, + 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, + 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, + 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, + 161, 163, 165, 167, 169, 171, 173, 175, 177, 179, + 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, + 201, 203, 205, 207, 209, 211, 213, 215, 217, 219, + 221, 223, 225, 227, 229, 231, 233, 235, 237, 239, + 241, 243, 245, 247, 249, 251, 253, 255, 257, 258, + 264, 266, 268, 269, 272, 273, 276, 277, 280, 283, + 287, 291, 293, 297, 301, 304, 306, 308, 311, 314, + 317, 321, 325, 331, 337, 343, 344, 348, 354, 360, + 366, 372, 376, 382, 386, 392, 396, 402, 408, 415, + 417, 419, 426, 431, 441, 449, 451, 452, 455, 456, + 458, 460, 462, 464, 466, 468, 472, 475, 479, 483, + 486, 492, 494, 498, 502, 506, 510, 512, 516, 520, + 523, 526, 529, 532, 536, 540, 544, 548, 550, 554, + 556, 560, 562, 564, 567, 570, 573, 575, 577, 579, + 581, 583, 585, 587, 591, 597, 599, 601, 603, 605, + 607, 608, 610, 612, 615, 619, 621, 624, 628, 631, + 633, 635, 638, 640, 643, 645, 649, 653, 656, 660, + 665, 669, 672, 677, 679, 681, 683, 685, 687, 690, + 693, 696, 699, 702, 707, 714, 719, 726, 737, 751, + 756, 763, 774, 788, 793, 800, 805, 812, 818, 826, + 838, 853, 855, 859, 864, 868, 871, 877, 881, 888, + 893, 900, 907, 914, 920, 926, 933, 943, 948, 954, + 962, 969, 974, 983, 988, 991, 996, 1000, 1007, 1012, + 1016, 1020, 1024, 1028, 1031, 1034, 1038, 1043, 1048, 1052, + 1056, 1060, 1064, 1068, 1072, 1077, 1082, 1086, 1089, 1093, + 1096, 1099, 1103, 1107, 1110, 1113, 1117, 1122, 1127, 1132, + 1138, 1140, 1144, 1147, 1149, 1151, 1152, 1155, 1156, 1159, + 1160, 1162, 1164, 1166, 1170, 1174, 1177, 1178, 1180, 1184, + 1188, 1190, 1196, 1200, 1202, 1205, 1207, 1211, 1214, 1218, + 1225, 1236, 1238, 1240, 1242, 1244, 1248, 1250, 1254, 1256, + 1258, 1260, 1265, 1267, 1271, 1276, 1283, 1288, 1297, 1300, + 1303, 1315, 1325, 1327, 1329, 1331, 1332, 1334, 1336, 1338, + 1340, 1344, 1347, 1348, 1350, 1352, 1354, 1358, 1362, 1364, + 1366, 1370, 1374, 1378, 1382, 1387, 1391, 1394, 1396, 1397, + 1400, 1401, 1405, 1406, 1408, 1409, 1411, 1415, 1418, 1420, + 1422, 1424, 1428, 1429, 1431, 1435, 1437, 1450, 1466, 1478, + 1493, 1507, 1524, 1526, 1528, 1531, 1534, 1537, 1540, 1542, + 1543, 1545, 1546, 1550, 1551, 1553, 1557, 1559, 1563, 1565, + 1567, 1569, 1571, 1573, 1578, 1581, 1586, 1589, 1590, 1594, + 1596, 1598, 1601, 1604, 1606, 1610, 1615, 1621, 1624, 1630, + 1636, 1638, 1641, 1643, 1646, 1649, 1652, 1656, 1660, 1664, + 1665, 1667, 1669, 1671, 1673, 1675, 1677, 1679, 1683, 1685, + 1691, 1699, 1703, 1712, 1717, 1727, 1739, 1742, 1743, 1747, + 1748, 1750, 1754, 1756, 1759, 1762, 1765, 1766, 1768, 1772, + 1776, 1783, 1788, 1789, 1791, 1793, 1796, 1799, 1800, 1804, + 1808, 1811, 1813, 1815, 1818, 1821, 1826, 1827, 1829, 1830, + 1837, 1839, 1841, 1843, 1847, 1851, 1855, 1861, 1864, 1867, + 1870, 1871, 1875, 1880, 1885, 1886, 1889, 1890, 1895, 1896, + 1900, 1909, 1921, 1929, 1940, 1946, 1949, 1953, 1954, 1963, + 1975, 1980, 1982, 1983, 1990, 1996, 2005, 2010, 2017, 2019, + 2020, 2024, 2025, 2027, 2030, 2033, 2036, 2038, 2041, 2045, + 2048, 2051, 2054, 2057, 2061, 2065, 2069, 2071, 2075, 2077, + 2078, 2080, 2083, 2086, 2088, 2090, 2094, 2101, 2112, 2114, + 2115, 2117, 2120, 2123, 2124, 2127, 2130, 2132, 2133, 2139, + 2147, 2149, 2150, 2158, 2161, 2162, 2166, 2172, 2178, 2187, + 2190, 2191, 2194, 2197, 2200, 2202, 2208, 2211, 2212, 2215, + 2223, 2230, 2241, 2248, 2255, 2262, 2269, 2277, 2284, 2294, + 2304, 2311, 2319, 2326, 2335, 2344, 2353, 2362, 2369, 2376, + 2384, 2392, 2401, 2408, 2418, 2425, 2433, 2436, 2439, 2442, + 2445, 2447, 2450, 2452, 2453, 2461, 2468, 2473, 2474, 2476, + 2480, 2485, 2487, 2491, 2493, 2496, 2499, 2502, 2505, 2507, + 2509, 2520, 2534, 2537, 2538, 2541, 2544, 2546, 2547, 2553, + 2558, 2563, 2575, 2590, 2603, 2619, 2625, 2633, 2645, 2648, + 2650, 2655, 2656, 2665, 2677, 2679, 2681, 2689, 2699, 2708, + 2719, 2728, 2733, 2734, 2740, 2741, 2744, 2745, 2748, 2749, + 2752, 2753, 2756, 2757, 2759, 2761, 2763, 2765, 2767, 2776, + 2793, 2814, 2816, 2818, 2821, 2823, 2827, 2829, 2831, 2833, + 2837, 2839, 2842, 2843, 2845, 2848, 2853, 2855, 2857, 2859, + 2861, 2863, 2867, 2868, 2870, 2871, 2873, 2875, 2880, 2881, + 2883, 2887, 2888, 2890, 2892, 2894, 2896, 2899, 2900, 2901, + 2904, 2907, 2909, 2912, 2915, 2918, 2921, 2933, 2947, 2949, + 2953, 2959, 2961, 2965, 2971, 2973, 2976, 2979, 2981, 2990, + 2995, 3001, 3006, 3011, 3016, 3020, 3028, 3037, 3044, 3051, + 3058, 3065, 3072, 3077, 3085, 3091, 3100, 3104, 3106, 3110, + 3114, 3116, 3118, 3120, 3122, 3124, 3126, 3128, 3132, 3134, + 3138, 3142, 3144, 3145, 3147, 3151, 3159, 3169, 3179, 3188, + 3192, 3193, 3207, 3209, 3213, 3219, 3225, 3229, 3236, 3239, + 3241, 3242, 3245, 3246, 3249, 3254, 3255, 3257, 3258, 3265, + 3274, 3283, 3285, 3289, 3295, 3301, 3309, 3319, 3327, 3337, + 3343, 3350, 3357, 3362, 3369, 3374, 3381, 3390, 3395, 3402, + 3407, 3414, 3420, 3428, 3430, 3432, 3434, 3437, 3439, 3442, + 3444, 3446, 3448, 3452, 3456, 3460, 3464, 3467, 3470, 3472, + 3476, 3478, 3480, 3482, 3484, 3486, 3488, 3490, 3494, 3496, + 3499, 3502, 3506, 3508, 3512, 3518, 3521, 3524, 3525, 3532, + 3539, 3546, 3553, 3560, 3567, 3574, 3583, 3593, 3602, 3611, + 3621, 3630, 3640, 3650, 3658, 3669, 3671, 3673, 3675, 3677, + 3679, 3681, 3684, 3686, 3688, 3691, 3695, 3699, 3703, 3707, + 3710, 3712, 3715, 3717, 3721, 3724, 3726, 3728, 3730, 3732, + 3734, 3736, 3738, 3740, 3749, 3758, 3767, 3776, 3785, 3794, + 3804, 3807, 3808, 3810, 3813, 3815, 3817, 3819, 3822, 3824, + 3827, 3830, 3832, 3834, 3836, 3838, 3840, 3842, 3844, 3847, + 3850, 3852, 3855, 3859, 3863, 3867, 3871, 3876, 3881, 3885, + 3889, 3893, 3898, 3903, 3907, 3912, 3917, 3919, 3921, 3923, + 3924, 3932, 3940, 3951, 3953, 3955, 3958, 3963, 3969, 3971, + 3975, 3978, 3981, 3984, 3987, 3989, 3992, 3995, 4000, 4004, + 4007, 4010, 4013, 4016, 4020, 4023, 4026, 4029, 4035, 4041, + 4047, 4049, 4053, 4055, 4058, 4062, 4063, 4070, 4077, 4087, + 4091, 4092, 4096, 4097, 4103, 4106, 4107, 4111, 4115, 4119, + 4127, 4135, 4146, 4148, 4150, 4152, 4154, 4156, 4171, 4189, + 4191, 4192, 4194, 4195, 4197, 4198, 4201, 4202, 4204, 4208, + 4214, 4220, 4228, 4231, 4232, 4234, 4235, 4237, 4239, 4240, + 4243, 4246, 4247, 4257, 4270, 4278, 4281, 4282, 4286, 4289, + 4291, 4295, 4297, 4301, 4304, 4306, 4308, 4311, 4315, 4318, + 4320, 4324, 4328, 4332, 4335, 4338, 4340, 4342, 4344, 4346, + 4349, 4351, 4353, 4355, 4357, 4362, 4368, 4370, 4374, 4378, + 4380, 4384, 4388, 4394, 4401, 4403, 4407, 4410, 4412, 4416, + 4418, 4421, 4426, 4432, 4434, 4436, 4438, 4440, 4444, 4448, + 4451, 4454, 4456, 4459, 4462, 4465, 4467, 4470, 4473, 4476, + 4479, 4481, 4483, 4485, 4489, 4493, 4499, 4502, 4503, 4506, + 4508, 4512, 4518, 4520, 4523, 4525, 4526, 4531, 4538, 4543, + 4550, 4555, 4562, 4566, 4572, 4578, 4584, 4586, 4590, 4592, + 4596, 4599, 4602, 4604, 4607, 4609, 4612, 4624, 4635, 4646, + 4649, 4652, 4653, 4663, 4666, 4667, 4678, 4690, 4702, 4708, + 4714, 4723, 4727, 4731, 4738, 4745, 4747, 4749, 4751, 4753, + 4755, 4757, 4761, 4763, 4769, 4775, 4782, 4789, 4796, 4803, + 4810, 4819, 4828, 4835, 4842, 4850, 4860, 4870, 4879, 4890, + 4897, 4904, 4911, 4918, 4925, 4934, 4941, 4950, 4957, 4966, + 4974, 4984, 4991, 5000, 5008, 5018, 5027, 5038, 5048, 5060, + 5069, 5080, 5090, 5102, 5111, 5120, 5128, 5135, 5142, 5149, + 5156, 5165, 5174, 5183, 5192, 5199, 5209, 5211, 5212, 5215, + 5216, 5224, 5234, 5243, 5251, 5258, 5265, 5272, 5279, 5286, + 5293, 5300, 5310, 5320, 5327, 5336, 5343, 5352, 5361, 5370, + 5379, 5386, 5395, 5402, 5411, 5419, 5429, 5437, 5447, 5454, + 5462, 5464, 5468, 5472, 5476, 5478, 5480, 5482, 5484, 5486, + 5493, 5500, 5507, 5514, 5521, 5528, 5536, 5544, 5551, 5561, + 5571, 5578, 5585, 5592, 5599, 5608, 5617, 5626, 5633, 5641, + 5648, 5655, 5661, 5663, 5664, 5668, 5672, 5678, 5685, 5692, + 5699, 5708, 5710, 5714, 5716, 5722, 5728, 5735, 5743, 5748, + 5753, 5758, 5765, 5779, 5781, 5783, 5787, 5791, 5793, 5795, + 5797, 5799, 5801, 5803, 5805, 5806, 5808, 5810, 5812, 5814, + 5816, 5818, 5819, 5823, 5826, 5827, 5830, 5833, 5836, 5839, + 5843, 5847, 5850, 5853, 5856, 5859, 5863, 5866, 5872, 5877, + 5881, 5885, 5889, 5891, 5893, 5894, 5898, 5901, 5904, 5906, + 5909, 5911, 5915, 5918, 5920, 5921, 5931, 5943, 5956, 5971, + 5975, 5980, 5985, 5986, 5989, 5995, 5997, 5998, 6000, 6003, + 6007, 6011, 6015, 6017, 6020, 6022, 6024, 6026, 6028, 6030, + 6032, 6033, 6039, 6044, 6051, 6056, 6060, 6066, 6072, 6077, + 6082, 6089, 6094, 6101, 6108, 6114, 6122, 6132, 6139, 6141, + 6142, 6149, 6161, 6173, 6185, 6199, 6209, 6221, 6223, 6225, + 6236, 6241, 6244, 6250, 6253, 6254, 6259, 6265, 6271, 6276, + 6283, 6285, 6289, 6291, 6293, 6295, 6297, 6299, 6302, 6307, + 6309, 6311, 6313, 6314, 6316, 6317, 6319, 6320, 6324, 6325, + 6328, 6333, 6337, 6343, 6345, 6347, 6349, 6351, 6353, 6355, + 6357, 6359, 6361, 6363, 6367, 6370, 6372, 6374, 6376, 6378, + 6379, 6385, 6389, 6390, 6392, 6394, 6396, 6398, 6402, 6412, + 6416, 6417, 6420, 6424, 6427, 6431, 6439, 6441, 6445, 6447, + 6452, 6457, 6465, 6468, 6470, 6472, 6474, 6478, 6481, 6490, + 6496, 6497, 6502, 6506, 6507, 6510, 6511, 6519, 6522, 6523, + 6529, 6533, 6534, 6537, 6540, 6543, 6547, 6549, 6553, 6555, + 6558, 6560, 6561, 6563, 6566, 6567, 6576, 6578, 6582, 6586, + 6592, 6595, 6597, 6601, 6609, 6611, 6612, 6616, 6619, 6622, + 6625, 6626, 6629, 6632, 6634, 6636, 6640, 6644, 6646, 6649, + 6654, 6659, 6662, 6666, 6672, 6678, 6680, 6682, 6692, 6702, + 6704, 6707, 6712, 6717, 6722, 6725, 6728, 6732, 6734, 6738, + 6745, 6747, 6748, 6751, 6752, 6756, 6760, 6765, 6770, 6775, + 6780, 6784, 6787, 6789, 6791, 6792, 6794, 6796, 6797, 6799, + 6805, 6807, 6808, 6810, 6811, 6815, 6817, 6821, 6826, 6830, + 6833, 6836, 6838, 6840, 6842, 6843, 6846, 6851, 6857, 6860, + 6864, 6866, 6868, 6870, 6872, 6876, 6877, 6879, 6881, 6883, + 6885, 6887, 6891, 6892, 6894, 6898, 6900, 6902, 6904, 6906, + 6908, 6911, 6916, 6921, 6927, 6930, 6931, 6933, 6937, 6939, + 6940, 6942, 6945, 6949, 6952, 6957, 6960, 6964, 6967, 6968, + 6973, 6979, 6982, 6983, 6985, 6989, 6992, 6996, 6999, 7003, + 7006, 7010, 7013, 7017, 7019, 7024, 7028, 7033, 7039, 7044, + 7050, 7055, 7061, 7064, 7069, 7071, 7073, 7074, 7076, 7081, + 7087, 7092, 7093, 7096, 7099, 7102, 7104, 7106, 7107, 7112, + 7115, 7117, 7120, 7123, 7128, 7130, 7134, 7136, 7139, 7143, + 7150, 7155, 7156, 7159, 7166, 7169, 7171, 7175, 7180, 7181, + 7184, 7185, 7188, 7189, 7192, 7197, 7198, 7200, 7201, 7203, + 7207, 7211, 7219, 7232, 7234, 7238, 7241, 7245, 7249, 7251, + 7254, 7257, 7260, 7263, 7265, 7267, 7271, 7275, 7278, 7281, + 7285, 7291, 7298, 7301, 7305, 7309, 7314, 7315, 7317, 7319, + 7321, 7323, 7325, 7328, 7333, 7335, 7337, 7339, 7341, 7344, + 7348, 7352, 7353, 7355, 7357, 7359, 7361, 7363, 7366, 7369, + 7372, 7375, 7378, 7380, 7384, 7385, 7387, 7389, 7391, 7393, + 7399, 7402, 7404, 7406, 7408, 7410, 7415, 7417, 7420, 7423, + 7425, 7429, 7433, 7436, 7438, 7439, 7445, 7448, 7454, 7457, + 7459, 7463, 7467, 7468, 7470, 7472, 7474, 7476, 7478, 7480, + 7484, 7488, 7492, 7496, 7500, 7504, 7508, 7509, 7511, 7516, + 7518, 7522, 7526, 7532, 7535, 7538, 7542, 7546, 7550, 7554, + 7558, 7562, 7566, 7570, 7574, 7578, 7582, 7586, 7590, 7593, + 7596, 7600, 7604, 7607, 7610, 7614, 7620, 7625, 7632, 7636, + 7642, 7647, 7654, 7659, 7666, 7672, 7680, 7684, 7687, 7692, + 7695, 7699, 7703, 7708, 7712, 7717, 7721, 7726, 7732, 7739, + 7746, 7754, 7761, 7769, 7776, 7784, 7788, 7793, 7798, 7805, + 7808, 7812, 7817, 7819, 7821, 7825, 7828, 7831, 7835, 7839, + 7843, 7847, 7851, 7855, 7859, 7863, 7867, 7871, 7875, 7879, + 7883, 7886, 7889, 7895, 7902, 7909, 7917, 7921, 7926, 7928, + 7930, 7933, 7938, 7940, 7942, 7944, 7947, 7950, 7953, 7956, + 7958, 7960, 7965, 7969, 7975, 7982, 7991, 7998, 8005, 8010, + 8015, 8017, 8019, 8021, 8027, 8029, 8031, 8036, 8038, 8043, + 8045, 8050, 8052, 8057, 8059, 8061, 8063, 8065, 8067, 8069, + 8076, 8081, 8086, 8091, 8096, 8103, 8109, 8115, 8121, 8126, + 8133, 8138, 8143, 8148, 8153, 8159, 8167, 8175, 8185, 8191, + 8196, 8203, 8209, 8217, 8225, 8233, 8236, 8240, 8244, 8248, + 8253, 8254, 8259, 8261, 8265, 8269, 8271, 8273, 8275, 8278, + 8281, 8282, 8285, 8290, 8295, 8302, 8308, 8309, 8315, 8316, + 8319, 8320, 8322, 8326, 8330, 8333, 8336, 8337, 8344, 8346, + 8347, 8351, 8352, 8355, 8358, 8359, 8361, 8366, 8369, 8372, + 8375, 8378, 8381, 8386, 8390, 8396, 8401, 8405, 8411, 8413, + 8415, 8417, 8419, 8421, 8423, 8425, 8427, 8429, 8431, 8433, + 8435, 8437, 8439, 8441, 8443, 8445, 8447, 8452, 8454, 8459, + 8461, 8466, 8468, 8471, 8473, 8476, 8478, 8482, 8484, 8488, + 8490, 8494, 8498, 8500, 8504, 8508, 8512, 8515, 8517, 8521, + 8525, 8526, 8528, 8530, 8532, 8534, 8536, 8538, 8540, 8542, + 8547, 8551, 8554, 8558, 8559, 8563, 8567, 8570, 8573, 8575, + 8576, 8579, 8582, 8586, 8589, 8591, 8593, 8597, 8603, 8605, + 8608, 8613, 8616, 8617, 8619, 8620, 8622, 8625, 8628, 8631, + 8635, 8641, 8643, 8644, 8646, 8649, 8650, 8653, 8655, 8656, + 8658, 8659, 8661, 8665, 8669, 8672, 8674, 8676, 8678, 8682, + 8684, 8687, 8689, 8693, 8695, 8697, 8699, 8701, 8703, 8705, + 8707, 8710, 8712, 8714, 8716, 8718, 8720, 8723, 8730, 8733, + 8737, 8743, 8745, 8747, 8749, 8751, 8753, 8755, 8758, 8761, + 8763, 8765, 8767, 8769, 8771, 8775, 8777, 8779, 8781, 8783, + 8785, 8787, 8789, 8791, 8793, 8795, 8797, 8799, 8801, 8803, + 8805, 8807, 8809, 8811, 8813, 8815, 8817, 8819, 8821, 8823, + 8825, 8827, 8829, 8831, 8833, 8835, 8837, 8839, 8841, 8843, + 8845, 8847, 8849, 8851, 8853, 8855, 8857, 8859, 8861, 8863, + 8865, 8867, 8869, 8871, 8873, 8875, 8877, 8879, 8881, 8883, + 8885, 8887, 8889, 8891, 8893, 8895, 8897, 8899, 8901, 8903, + 8905, 8907, 8909, 8911, 8913, 8915, 8917, 8919, 8921, 8923, + 8925, 8927, 8929, 8931, 8933, 8935, 8937, 8939, 8941, 8943, + 8945, 8947, 8949, 8951, 8953, 8955, 8957, 8959, 8961, 8963, + 8965, 8967, 8969, 8971, 8973, 8975, 8977, 8979, 8981, 8983, + 8985, 8987, 8989, 8991, 8993, 8995, 8997, 8999, 9001, 9003, + 9005, 9007, 9009, 9011, 9013, 9015, 9017, 9019, 9021, 9023, + 9025, 9027, 9029, 9031, 9033, 9035, 9037, 9039, 9041, 9043, + 9045, 9047, 9049, 9051, 9053, 9055, 9057, 9059, 9061, 9063, + 9065, 9067, 9069, 9071, 9073, 9075, 9077, 9079, 9081, 9083, + 9085, 9087, 9089, 9091, 9093, 9095, 9097, 9099, 9101, 9103, + 9105, 9107, 9109, 9111, 9113, 9115, 9117, 9119, 9121, 9123, + 9125, 9127, 9129, 9131, 9133, 9135, 9137, 9139, 9141, 9143, + 9145, 9147, 9149, 9151, 9153, 9155, 9157, 9159, 9161, 9163, + 9165, 9167, 9169, 9171, 9173, 9175, 9177, 9179, 9181, 9183, + 9185, 9187, 9189, 9191, 9193, 9195, 9197, 9199, 9201, 9203, + 9205, 9207, 9209, 9211, 9213, 9215, 9217, 9219, 9221, 9223, + 9225, 9227, 9229, 9231, 9233, 9235, 9237, 9239, 9241, 9243, + 9245, 9247, 9249, 9251, 9253, 9255, 9257, 9259, 9261, 9263, + 9265, 9267, 9269, 9271, 9273, 9275, 9277, 9279, 9281, 9283, + 9285, 9287, 9289, 9291, 9293, 9295, 9297, 9299, 9301, 9303, + 9305, 9307, 9309, 9311, 9313, 9315, 9317, 9319, 9321, 9323, + 9325, 9327, 9329, 9331, 9333, 9335, 9337, 9339, 9341, 9343, + 9345, 9347, 9349, 9351, 9353, 9355, 9357, 9359, 9361, 9363, + 9365, 9367, 9369, 9371, 9373, 9375, 9377, 9379, 9381, 9383, + 9385, 9387, 9389, 9391, 9393, 9395, 9397, 9399, 9401, 9403, + 9405, 9407, 9409, 9411, 9413, 9415, 9417, 9419, 9421, 9423, + 9425, 9427, 9429, 9431, 9433, 9435, 9437, 9439, 9441, 9443, + 9445, 9447, 9449, 9451, 9453, 9455, 9457, 9459, 9461, 9463, + 9465, 9467, 9469, 9471, 9473, 9475, 9477, 9479, 9481, 9483, + 9485, 9487, 9489, 9491, 9493, 9495, 9497, 9499, 9501, 9503, + 9505, 9507, 9509, 9511, 9513, 9515, 9517, 9519, 9521, 9523, + 9525, 9527, 9529, 9531, 9533, 9535, 9537, 9539, 9541, 9543, + 9545, 9547, 9549, 9551, 9553, 9555, 9557, 9559, 9561, 9563, + 9565, 9567, 9569, 9571, 9573, 9575, 9577, 9579, 9581, 9583, + 9585, 9587, 9589, 9591, 9593, 9595, 9597, 9599, 9601, 9603, + 9605, 9607, 9609, 9611, 9613, 9615, 9617, 9619, 9621, 9623, + 9625, 9627, 9629, 9631, 9633, 9635, 9637, 9639, 9641, 9643, + 9645, 9647, 9649, 9651, 9653, 9655, 9657, 9659, 9661, 9663, + 9665, 9667 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 474, 0, -1, 475, -1, 475, 470, 476, -1, 476, + -1, 696, -1, 879, -1, 876, -1, 877, -1, 763, + -1, 882, -1, 710, -1, 632, -1, 635, -1, 640, + -1, 653, -1, 655, -1, 806, -1, 489, -1, 835, + -1, 836, -1, 841, -1, 837, -1, 664, -1, 610, + -1, 880, -1, 518, -1, 831, -1, 538, -1, 845, + -1, 486, -1, 484, -1, 849, -1, 885, -1, 884, + -1, 662, -1, 893, -1, 516, -1, 541, -1, 888, + -1, 737, -1, 513, -1, 542, -1, 672, -1, 602, + -1, 698, -1, 819, -1, 887, -1, 881, -1, 629, + -1, 636, -1, 649, -1, 654, -1, 779, -1, 488, + -1, 605, -1, 712, -1, 719, -1, 842, -1, 720, + -1, 663, -1, 618, -1, 491, -1, 609, -1, 558, + -1, 846, -1, 601, -1, 626, -1, 823, -1, 673, + -1, 692, -1, 477, -1, 483, -1, 659, -1, 870, + -1, 910, -1, 932, -1, 700, -1, 920, -1, 517, + -1, 816, -1, 699, -1, 821, -1, 723, -1, 724, + -1, 725, -1, 624, -1, 727, -1, 850, -1, 628, + -1, 825, -1, 487, -1, 661, -1, 878, -1, 908, + -1, 899, -1, 746, -1, 750, -1, 759, -1, 656, + -1, 768, -1, 911, -1, 860, -1, 608, -1, 869, + -1, 922, -1, 858, -1, 905, -1, 726, -1, 826, + -1, 810, -1, 809, -1, 811, -1, 832, -1, 751, + -1, 760, -1, 851, -1, 741, -1, 936, -1, 862, + -1, 735, -1, 861, -1, 927, -1, 890, -1, 507, + -1, 495, -1, 512, -1, 867, -1, -1, 90, 330, + 1115, 478, 479, -1, 430, -1, 453, -1, -1, 479, + 482, -1, -1, 480, 481, -1, -1, 287, 1113, -1, + 287, 256, -1, 135, 287, 1113, -1, 402, 287, 1113, + -1, 190, -1, 82, 222, 1114, -1, 413, 408, 1113, + -1, 410, 1117, -1, 3, -1, 481, -1, 375, 1112, + -1, 23, 1117, -1, 330, 1117, -1, 185, 330, 1117, + -1, 185, 171, 1117, -1, 90, 410, 1115, 478, 479, + -1, 28, 330, 1116, 478, 480, -1, 28, 410, 1116, + 478, 480, -1, -1, 185, 105, 1105, -1, 28, 330, + 1116, 485, 510, -1, 28, 330, 26, 485, 510, -1, + 28, 410, 1116, 485, 510, -1, 28, 410, 26, 485, + 510, -1, 130, 330, 1117, -1, 130, 330, 179, 145, + 1117, -1, 130, 410, 1117, -1, 130, 410, 179, 145, + 1117, -1, 130, 171, 1117, -1, 130, 171, 179, 145, + 1117, -1, 90, 171, 1115, 478, 479, -1, 28, 171, + 1116, 490, 410, 1117, -1, 22, -1, 130, -1, 90, + 337, 492, 43, 1116, 493, -1, 90, 337, 1118, 493, + -1, 90, 337, 179, 251, 145, 492, 43, 1116, 493, + -1, 90, 337, 179, 251, 145, 1118, 493, -1, 1118, + -1, -1, 493, 494, -1, -1, 558, -1, 768, -1, + 609, -1, 673, -1, 750, -1, 867, -1, 288, 350, + 497, -1, 350, 496, -1, 350, 225, 496, -1, 350, + 348, 496, -1, 390, 865, -1, 348, 64, 35, 390, + 865, -1, 498, -1, 499, 388, 500, -1, 499, 456, + 500, -1, 499, 388, 111, -1, 499, 456, 111, -1, + 497, -1, 499, 162, 94, -1, 386, 450, 504, -1, + 60, 1113, -1, 337, 1113, -1, 243, 505, -1, 330, + 506, -1, 348, 43, 506, -1, 348, 43, 111, -1, + 436, 269, 1047, -1, 390, 359, 1113, -1, 1118, -1, + 499, 469, 1118, -1, 501, -1, 500, 471, 501, -1, + 503, -1, 616, -1, 307, 401, -1, 307, 78, -1, + 320, 307, -1, 346, -1, 395, -1, 150, -1, 266, + -1, 506, -1, 1113, -1, 3, -1, 1031, 1113, 1033, + -1, 1031, 467, 1112, 468, 1113, -1, 616, -1, 111, + -1, 225, -1, 1113, -1, 111, -1, -1, 1120, -1, + 1113, -1, 323, 508, -1, 288, 323, 509, -1, 509, + -1, 386, 450, -1, 390, 208, 220, -1, 348, 43, + -1, 499, -1, 26, -1, 350, 496, -1, 507, -1, + 350, 498, -1, 507, -1, 288, 354, 499, -1, 288, + 354, 26, -1, 354, 499, -1, 354, 386, 450, -1, + 354, 390, 208, 220, -1, 354, 348, 43, -1, 354, + 26, -1, 350, 84, 514, 515, -1, 26, -1, 1101, + -1, 114, -1, 181, -1, 66, -1, 124, 26, -1, + 124, 381, -1, 124, 383, -1, 124, 290, -1, 124, + 345, -1, 28, 377, 990, 519, -1, 28, 377, 179, + 145, 990, 519, -1, 28, 377, 990, 520, -1, 28, + 377, 179, 145, 990, 520, -1, 28, 377, 26, 185, + 380, 1104, 350, 380, 1104, 925, -1, 28, 377, 26, + 185, 380, 1104, 280, 53, 1117, 350, 380, 1104, 925, + -1, 28, 188, 1102, 519, -1, 28, 188, 179, 145, + 1102, 519, -1, 28, 188, 26, 185, 380, 1104, 350, + 380, 1104, 925, -1, 28, 188, 26, 185, 380, 1104, + 280, 53, 1117, 350, 380, 1104, 925, -1, 28, 344, + 1102, 519, -1, 28, 344, 179, 145, 1102, 519, -1, + 28, 423, 1102, 519, -1, 28, 423, 179, 145, 1102, + 519, -1, 28, 234, 423, 1102, 519, -1, 28, 234, + 423, 179, 145, 1102, 519, -1, 28, 234, 423, 26, + 185, 380, 1104, 350, 380, 1104, 925, -1, 28, 234, + 423, 26, 185, 380, 1104, 280, 53, 1117, 350, 380, + 1104, 925, -1, 521, -1, 519, 471, 521, -1, 41, + 285, 1102, 533, -1, 121, 285, 1102, -1, 22, 566, + -1, 22, 179, 251, 145, 566, -1, 22, 73, 566, + -1, 22, 73, 179, 251, 145, 566, -1, 28, 833, + 1118, 522, -1, 28, 833, 1118, 130, 251, 256, -1, + 28, 833, 1118, 350, 251, 256, -1, 28, 833, 1118, + 350, 366, 1114, -1, 28, 833, 1118, 350, 527, -1, + 28, 833, 1118, 323, 527, -1, 28, 833, 1118, 350, + 369, 1118, -1, 28, 833, 1118, 22, 166, 571, 35, + 178, 612, -1, 28, 833, 1118, 531, -1, 28, 833, + 1118, 130, 178, -1, 28, 833, 1118, 130, 178, 179, + 145, -1, 130, 833, 179, 145, 1118, 523, -1, 130, + 833, 1118, 523, -1, 28, 833, 1118, 834, 398, 1012, + 524, 525, -1, 28, 833, 1118, 643, -1, 22, 576, + -1, 28, 83, 1104, 690, -1, 414, 83, 1104, -1, + 130, 83, 179, 145, 1104, 523, -1, 130, 83, 1104, + 523, -1, 350, 430, 264, -1, 350, 432, 264, -1, + 69, 266, 1104, -1, 350, 432, 69, -1, 350, 231, + -1, 350, 407, -1, 133, 393, 1104, -1, 133, 29, + 393, 1104, -1, 133, 322, 393, 1104, -1, 133, 393, + 26, -1, 133, 393, 410, -1, 123, 393, 1104, -1, + 123, 393, 26, -1, 123, 393, 410, -1, 133, 335, + 1104, -1, 133, 29, 335, 1104, -1, 133, 322, 335, + 1104, -1, 123, 335, 1104, -1, 190, 1102, -1, 249, + 190, 1102, -1, 261, 732, -1, 251, 261, -1, 281, + 388, 1116, -1, 350, 380, 1104, -1, 350, 527, -1, + 323, 527, -1, 322, 178, 526, -1, 133, 333, 220, + 342, -1, 123, 333, 220, 342, -1, 158, 333, 220, + 342, -1, 249, 158, 333, 220, 342, -1, 643, -1, + 350, 111, 1035, -1, 130, 111, -1, 56, -1, 325, + -1, -1, 71, 732, -1, -1, 411, 1035, -1, -1, + 252, -1, 163, -1, 111, -1, 411, 188, 1104, -1, + 467, 529, 468, -1, 430, 527, -1, -1, 530, -1, + 529, 471, 530, -1, 1121, 456, 704, -1, 1121, -1, + 1121, 469, 1121, 456, 704, -1, 1121, 469, 1121, -1, + 532, -1, 531, 532, -1, 324, -1, 324, 478, 616, + -1, 350, 614, -1, 350, 166, 571, -1, 157, 417, + 185, 467, 535, 468, -1, 157, 417, 162, 467, 536, + 468, 388, 467, 536, 468, -1, 1113, -1, 616, -1, + 256, -1, 534, -1, 535, 471, 534, -1, 537, -1, + 536, 471, 537, -1, 238, -1, 235, -1, 534, -1, + 28, 398, 732, 539, -1, 540, -1, 539, 471, 540, + -1, 22, 42, 1004, 523, -1, 130, 42, 179, 145, + 1118, 523, -1, 130, 42, 1118, 523, -1, 28, 42, + 1118, 834, 398, 1012, 524, 523, -1, 68, 933, -1, + 68, 26, -1, 88, 549, 1102, 579, 550, 543, 544, + 545, 551, 478, 546, -1, 88, 467, 907, 468, 388, + 544, 545, 478, 546, -1, 162, -1, 388, -1, 303, + -1, -1, 1113, -1, 367, -1, 368, -1, 547, -1, + 467, 553, 468, -1, 547, 548, -1, -1, 49, -1, + 264, -1, 161, -1, 117, 883, 1113, -1, 256, 883, + 1113, -1, 92, -1, 175, -1, 305, 883, 1113, -1, + 138, 883, 1113, -1, 158, 305, 580, -1, 158, 305, + 460, -1, 158, 251, 256, 580, -1, 158, 256, 580, + -1, 134, 1113, -1, 49, -1, -1, 430, 264, -1, + -1, 552, 118, 1113, -1, -1, 411, -1, -1, 554, + -1, 553, 471, 554, -1, 1121, 555, -1, 503, -1, + 616, -1, 460, -1, 467, 556, 468, -1, -1, 557, + -1, 556, 471, 557, -1, 503, -1, 90, 559, 377, + 1102, 467, 560, 468, 590, 591, 596, 597, 598, -1, + 90, 559, 377, 179, 251, 145, 1102, 467, 560, 468, + 590, 591, 596, 597, 598, -1, 90, 559, 377, 1102, + 261, 732, 561, 591, 596, 597, 598, -1, 90, 559, + 377, 179, 251, 145, 1102, 261, 732, 561, 591, 596, + 597, 598, -1, 90, 559, 377, 1102, 285, 261, 1102, + 561, 533, 591, 596, 597, 598, -1, 90, 559, 377, + 179, 251, 145, 1102, 285, 261, 1102, 561, 533, 591, + 596, 597, 598, -1, 383, -1, 381, -1, 225, 383, + -1, 225, 381, -1, 167, 383, -1, 167, 381, -1, + 407, -1, -1, 562, -1, -1, 467, 563, 468, -1, + -1, 564, -1, 562, 471, 564, -1, 565, -1, 563, + 471, 565, -1, 566, -1, 573, -1, 576, -1, 567, + -1, 576, -1, 1118, 1012, 641, 568, -1, 1118, 568, + -1, 1118, 430, 270, 568, -1, 568, 569, -1, -1, + 83, 1104, 570, -1, 570, -1, 572, -1, 71, 732, + -1, 251, 256, -1, 256, -1, 404, 803, 599, -1, + 298, 210, 803, 599, -1, 65, 467, 1035, 468, 578, + -1, 111, 1036, -1, 166, 571, 35, 178, 612, -1, + 313, 1102, 579, 582, 586, -1, 29, -1, 53, 111, + -1, 113, -1, 251, 113, -1, 192, 114, -1, 192, + 181, -1, 221, 1102, 574, -1, 574, 186, 575, -1, + 574, 142, 575, -1, -1, 112, -1, 84, -1, 178, + -1, 189, -1, 369, -1, 76, -1, 26, -1, 83, + 1104, 577, -1, 577, -1, 65, 467, 1035, 468, 690, + -1, 404, 467, 580, 468, 803, 599, 690, -1, 404, + 600, 690, -1, 298, 210, 467, 580, 468, 803, 599, + 690, -1, 298, 210, 600, 690, -1, 141, 772, 467, + 583, 468, 803, 599, 585, 690, -1, 159, 210, 467, + 580, 468, 313, 1102, 579, 582, 586, 690, -1, 249, + 190, -1, -1, 467, 580, 468, -1, -1, 581, -1, + 580, 471, 581, -1, 1118, -1, 233, 163, -1, 233, + 284, -1, 233, 356, -1, -1, 584, -1, 583, 471, + 584, -1, 774, 430, 813, -1, 774, 430, 268, 467, + 813, 468, -1, 427, 467, 1035, 468, -1, -1, 587, + -1, 588, -1, 587, 588, -1, 588, 587, -1, -1, + 266, 409, 589, -1, 266, 116, 589, -1, 249, 21, + -1, 325, -1, 56, -1, 350, 256, -1, 350, 111, + -1, 191, 467, 1101, 468, -1, -1, 592, -1, -1, + 285, 53, 593, 467, 594, 468, -1, 3, -1, 1122, + -1, 595, -1, 594, 471, 595, -1, 1118, 775, 776, + -1, 1040, 775, 776, -1, 467, 1035, 468, 775, 776, + -1, 430, 527, -1, 430, 264, -1, 432, 264, -1, + -1, 266, 77, 130, -1, 266, 77, 116, 334, -1, + 266, 77, 295, 334, -1, -1, 380, 1104, -1, -1, + 411, 188, 380, 1104, -1, -1, 411, 188, 1108, -1, + 90, 366, 732, 898, 266, 1071, 162, 981, -1, 90, + 366, 179, 251, 145, 732, 898, 266, 1071, 162, 981, + -1, 90, 559, 377, 603, 35, 936, 604, -1, 90, + 559, 377, 179, 251, 145, 603, 35, 936, 604, -1, + 1102, 579, 596, 597, 598, -1, 430, 104, -1, 430, + 249, 104, -1, -1, 90, 607, 234, 423, 606, 35, + 936, 604, -1, 90, 607, 234, 423, 179, 251, 145, + 606, 35, 936, 604, -1, 1102, 579, 528, 598, -1, + 407, -1, -1, 315, 234, 423, 770, 1102, 604, -1, + 90, 559, 344, 1102, 611, -1, 90, 559, 344, 179, + 251, 145, 1102, 611, -1, 28, 344, 1102, 613, -1, + 28, 344, 179, 145, 1102, 613, -1, 613, -1, -1, + 467, 613, 468, -1, -1, 614, -1, 613, 614, -1, + 35, 1014, -1, 54, 616, -1, 103, -1, 249, 103, + -1, 187, 615, 616, -1, 235, 616, -1, 238, 616, + -1, 249, 235, -1, 249, 238, -1, 280, 53, 732, + -1, 344, 242, 732, -1, 364, 478, 616, -1, 324, + -1, 324, 478, 616, -1, 53, -1, -1, 4, -1, + 458, 4, -1, 459, 4, -1, 1114, -1, 616, -1, + 617, 471, 616, -1, 90, 780, 619, 625, 212, 506, + -1, 90, 780, 619, 625, 212, 506, 173, 620, 621, + 623, -1, 397, -1, -1, 1104, -1, 1104, 733, -1, + 193, 620, -1, -1, 415, 620, -1, 249, 415, -1, + 622, -1, -1, 130, 625, 212, 506, 523, -1, 130, + 625, 212, 179, 145, 506, 523, -1, 301, -1, -1, + 90, 380, 1104, 627, 228, 1113, 528, -1, 281, 1116, + -1, -1, 130, 380, 1104, -1, 130, 380, 179, 145, + 1104, -1, 90, 147, 1104, 478, 630, -1, 90, 147, + 179, 251, 145, 1104, 478, 630, -1, 630, 631, -1, + -1, 337, 1104, -1, 422, 506, -1, 162, 506, -1, + 56, -1, 28, 147, 1104, 409, 633, -1, 633, 634, + -1, -1, 388, 506, -1, 28, 147, 1104, 490, 20, + 236, 1104, -1, 28, 147, 1104, 490, 25, 796, -1, + 28, 147, 1104, 490, 59, 467, 1012, 35, 1012, 468, + -1, 28, 147, 1104, 490, 72, 732, -1, 28, 147, + 1104, 490, 87, 732, -1, 28, 147, 1104, 490, 128, + 1012, -1, 28, 147, 1104, 490, 164, 784, -1, 28, + 147, 1104, 490, 625, 212, 1104, -1, 28, 147, 1104, + 490, 268, 815, -1, 28, 147, 1104, 490, 268, 67, + 732, 411, 1106, -1, 28, 147, 1104, 490, 268, 151, + 732, 411, 1106, -1, 28, 147, 1104, 490, 337, 1104, + -1, 28, 147, 1104, 490, 139, 393, 1104, -1, 28, + 147, 1104, 490, 377, 732, -1, 28, 147, 1104, 490, + 384, 340, 283, 732, -1, 28, 147, 1104, 490, 384, + 340, 122, 732, -1, 28, 147, 1104, 490, 384, 340, + 382, 732, -1, 28, 147, 1104, 490, 384, 340, 80, + 732, -1, 28, 147, 1104, 490, 344, 732, -1, 28, + 147, 1104, 490, 423, 732, -1, 28, 147, 1104, 490, + 234, 423, 732, -1, 28, 147, 1104, 490, 159, 377, + 732, -1, 28, 147, 1104, 490, 159, 104, 434, 1104, + -1, 28, 147, 1104, 490, 347, 1104, -1, 28, 147, + 1104, 490, 391, 157, 1012, 212, 1104, -1, 28, 147, + 1104, 490, 398, 1012, -1, 90, 159, 104, 434, 1104, + 639, 641, -1, 173, 620, -1, 249, 173, -1, 415, + 620, -1, 249, 415, -1, 637, -1, 638, 637, -1, + 638, -1, -1, 28, 159, 104, 434, 1104, 639, 643, + -1, 28, 159, 104, 434, 1104, 638, -1, 270, 467, + 642, 468, -1, -1, 646, -1, 642, 471, 646, -1, + 270, 467, 644, 468, -1, 645, -1, 644, 471, 645, + -1, 646, -1, 350, 646, -1, 22, 646, -1, 130, + 647, -1, 647, 648, -1, 1121, -1, 1113, -1, 90, + 347, 1104, 650, 652, 159, 104, 434, 1104, 641, -1, + 90, 347, 179, 251, 145, 1104, 650, 652, 159, 104, + 434, 1104, 641, -1, 398, 1113, -1, -1, 422, 1113, + -1, 422, 256, -1, 651, -1, -1, 28, 347, 1104, + 651, 643, -1, 28, 347, 1104, 651, -1, 28, 347, + 1104, 643, -1, 90, 159, 377, 1102, 467, 560, 468, + 590, 347, 1104, 641, -1, 90, 159, 377, 179, 251, + 145, 1102, 467, 560, 468, 590, 347, 1104, 641, -1, + 90, 159, 377, 1102, 285, 261, 1102, 561, 533, 347, + 1104, 641, -1, 90, 159, 377, 179, 251, 145, 1102, + 285, 261, 1102, 561, 533, 347, 1104, 641, -1, 28, + 159, 377, 990, 519, -1, 28, 159, 377, 179, 145, + 990, 519, -1, 184, 159, 337, 1104, 658, 162, 347, + 1104, 204, 1104, 641, -1, 222, 388, -1, 140, -1, + 657, 467, 991, 468, -1, -1, 90, 410, 232, 157, + 660, 347, 1104, 641, -1, 90, 410, 232, 179, 251, + 145, 157, 660, 347, 1104, 641, -1, 1116, -1, 410, + -1, 130, 410, 232, 157, 660, 347, 1104, -1, 130, + 410, 232, 179, 145, 157, 660, 347, 1104, -1, 28, + 410, 232, 157, 660, 347, 1104, 643, -1, 90, 291, + 1104, 266, 1102, 669, 670, 667, 665, 666, -1, 28, + 291, 1104, 266, 1102, 668, 665, 666, -1, 411, 467, + 1035, 468, -1, -1, 430, 65, 467, 1035, 468, -1, + -1, 388, 1117, -1, -1, 388, 1117, -1, -1, 35, + 3, -1, -1, 157, 671, -1, -1, 26, -1, 343, + -1, 198, -1, 409, -1, 116, -1, 90, 20, 236, + 1104, 398, 188, 173, 620, -1, 90, 393, 1104, 674, + 675, 266, 1102, 677, 683, 686, 144, 302, 1110, 467, + 687, 468, -1, 90, 83, 393, 1104, 24, 675, 266, + 1102, 689, 690, 157, 131, 333, 686, 144, 302, 1110, + 467, 687, 468, -1, 45, -1, 24, -1, 199, 261, + -1, 676, -1, 675, 271, 676, -1, 198, -1, 116, + -1, 409, -1, 409, 261, 580, -1, 396, -1, 314, + 678, -1, -1, 679, -1, 678, 679, -1, 680, 681, + 883, 682, -1, 247, -1, 265, -1, 377, -1, 333, + -1, 1118, -1, 157, 684, 685, -1, -1, 131, -1, + -1, 333, -1, 365, -1, 426, 467, 1035, 468, -1, + -1, 688, -1, 687, 471, 688, -1, -1, 1112, -1, + 4, -1, 1113, -1, 1121, -1, 162, 1102, -1, -1, + -1, 690, 691, -1, 251, 113, -1, 113, -1, 192, + 181, -1, 192, 114, -1, 251, 413, -1, 249, 190, + -1, 90, 139, 393, 1104, 266, 1121, 144, 302, 1110, + 467, 468, -1, 90, 139, 393, 1104, 266, 1121, 426, + 693, 144, 302, 1110, 467, 468, -1, 694, -1, 693, + 32, 694, -1, 1118, 185, 467, 695, 468, -1, 5, + -1, 695, 471, 5, -1, 28, 139, 393, 1104, 697, + -1, 133, -1, 133, 322, -1, 133, 29, -1, 123, + -1, 90, 37, 1104, 65, 467, 1035, 468, 690, -1, + 130, 37, 1104, 523, -1, 90, 25, 1110, 794, 701, + -1, 90, 25, 1110, 705, -1, 90, 268, 813, 701, + -1, 90, 398, 732, 701, -1, 90, 398, 732, -1, + 90, 398, 732, 35, 467, 1002, 468, -1, 90, 398, + 732, 35, 137, 467, 708, 468, -1, 90, 398, 732, + 35, 306, 701, -1, 90, 384, 340, 283, 732, 701, + -1, 90, 384, 340, 122, 732, 701, -1, 90, 384, + 340, 382, 732, 701, -1, 90, 384, 340, 80, 732, + 701, -1, 90, 72, 732, 701, -1, 90, 72, 179, + 251, 145, 732, 701, -1, 90, 72, 732, 162, 732, + -1, 90, 72, 179, 251, 145, 732, 162, 732, -1, + 467, 702, 468, -1, 703, -1, 702, 471, 703, -1, + 1121, 456, 704, -1, 1121, -1, 791, -1, 1125, -1, + 1069, -1, 616, -1, 1113, -1, 250, -1, 467, 706, + 468, -1, 707, -1, 706, 471, 707, -1, 3, 456, + 704, -1, 709, -1, -1, 1113, -1, 709, 471, 1113, + -1, 28, 398, 732, 22, 416, 711, 1113, -1, 28, + 398, 732, 22, 416, 711, 1113, 45, 1113, -1, 28, + 398, 732, 22, 416, 711, 1113, 24, 1113, -1, 28, + 398, 732, 319, 416, 1113, 388, 1113, -1, 179, 251, + 145, -1, -1, 90, 268, 67, 732, 715, 157, 398, + 1012, 411, 1106, 716, 35, 713, -1, 714, -1, 713, + 471, 714, -1, 268, 1112, 813, 717, 718, -1, 268, + 1112, 815, 717, 718, -1, 164, 1112, 784, -1, 164, + 1112, 467, 1074, 468, 784, -1, 369, 1012, -1, 111, + -1, -1, 151, 732, -1, -1, 157, 340, -1, 157, + 272, 53, 732, -1, -1, 310, -1, -1, 90, 268, + 151, 732, 411, 1106, -1, 28, 268, 151, 732, 411, + 1106, 22, 713, -1, 28, 268, 151, 732, 411, 1106, + 130, 721, -1, 722, -1, 721, 471, 722, -1, 268, + 1112, 467, 1074, 468, -1, 164, 1112, 467, 1074, 468, + -1, 130, 268, 67, 732, 411, 1106, 523, -1, 130, + 268, 67, 179, 145, 732, 411, 1106, 523, -1, 130, + 268, 151, 732, 411, 1106, 523, -1, 130, 268, 151, + 179, 145, 732, 411, 1106, 523, -1, 130, 280, 53, + 1117, 523, -1, 309, 280, 53, 1117, 388, 1116, -1, + 130, 728, 179, 145, 731, 523, -1, 130, 728, 731, + 523, -1, 130, 729, 179, 145, 1103, 523, -1, 130, + 729, 1103, 523, -1, 130, 730, 1104, 266, 732, 523, + -1, 130, 730, 179, 145, 1104, 266, 732, 523, -1, + 130, 398, 734, 523, -1, 130, 398, 179, 145, 734, + 523, -1, 130, 128, 734, 523, -1, 130, 128, 179, + 145, 734, 523, -1, 130, 188, 79, 731, 523, -1, + 130, 188, 79, 179, 145, 731, 523, -1, 377, -1, + 344, -1, 423, -1, 234, 423, -1, 188, -1, 159, + 377, -1, 72, -1, 87, -1, 366, -1, 384, 340, + 283, -1, 384, 340, 122, -1, 384, 340, 382, -1, + 384, 340, 80, -1, 20, 236, -1, 139, 393, -1, + 147, -1, 159, 104, 434, -1, 304, -1, 337, -1, + 347, -1, 291, -1, 335, -1, 393, -1, 732, -1, + 731, 471, 732, -1, 1118, -1, 1118, 733, -1, 469, + 1107, -1, 733, 469, 1107, -1, 1012, -1, 734, 471, + 1012, -1, 396, 947, 991, 736, 523, -1, 86, 178, + -1, 324, 178, -1, -1, 75, 266, 738, 732, 206, + 740, -1, 75, 266, 739, 1104, 206, 740, -1, 75, + 266, 398, 1012, 206, 740, -1, 75, 266, 128, 1012, + 206, 740, -1, 75, 266, 25, 796, 206, 740, -1, + 75, 266, 164, 784, 206, 740, -1, 75, 266, 268, + 815, 206, 740, -1, 75, 266, 83, 1104, 266, 732, + 206, 740, -1, 75, 266, 83, 1104, 266, 128, 732, + 206, 740, -1, 75, 266, 291, 1104, 266, 732, 206, + 740, -1, 75, 266, 335, 1104, 266, 732, 206, 740, + -1, 75, 266, 391, 157, 1012, 212, 1104, 206, 740, + -1, 75, 266, 393, 1104, 266, 732, 206, 740, -1, + 75, 266, 268, 67, 732, 411, 1106, 206, 740, -1, + 75, 266, 268, 151, 732, 411, 1106, 206, 740, -1, + 75, 266, 213, 260, 616, 206, 740, -1, 75, 266, + 59, 467, 1012, 35, 1012, 468, 206, 740, -1, 73, + -1, 188, -1, 344, -1, 366, -1, 377, -1, 423, + -1, 234, 423, -1, 72, -1, 87, -1, 159, 377, + -1, 384, 340, 80, -1, 384, 340, 122, -1, 384, + 340, 283, -1, 384, 340, 382, -1, 20, 236, -1, + 105, -1, 139, 393, -1, 147, -1, 159, 104, 434, + -1, 625, 212, -1, 304, -1, 330, -1, 337, -1, + 347, -1, 372, -1, 380, -1, 1113, -1, 256, -1, + 342, 211, 742, 266, 743, 732, 206, 745, -1, 342, + 211, 742, 266, 744, 1104, 206, 745, -1, 342, 211, + 742, 266, 398, 1012, 206, 745, -1, 342, 211, 742, + 266, 128, 1012, 206, 745, -1, 342, 211, 742, 266, + 25, 796, 206, 745, -1, 342, 211, 742, 266, 164, + 784, 206, 745, -1, 342, 211, 742, 266, 213, 260, + 616, 206, 745, -1, 157, 506, -1, -1, 73, -1, + 159, 377, -1, 344, -1, 377, -1, 423, -1, 234, + 423, -1, 105, -1, 139, 393, -1, 625, 212, -1, + 304, -1, 330, -1, 337, -1, 372, -1, 380, -1, + 1113, -1, 256, -1, 152, 747, -1, 241, 747, -1, + 933, -1, 748, 933, -1, 248, 749, 933, -1, 299, + 749, 933, -1, 154, 749, 933, -1, 214, 749, 933, + -1, 19, 1114, 749, 933, -1, 317, 1114, 749, 933, + -1, 1114, 749, 933, -1, 26, 749, 933, -1, 160, + 749, 933, -1, 160, 1114, 749, 933, -1, 160, 26, + 749, 933, -1, 44, 749, 933, -1, 44, 1114, 749, + 933, -1, 44, 26, 749, 933, -1, 162, -1, 185, + -1, 748, -1, -1, 168, 752, 266, 755, 388, 756, + 758, -1, 328, 752, 266, 755, 162, 756, 523, -1, + 328, 168, 269, 157, 752, 266, 755, 162, 756, 523, + -1, 753, -1, 26, -1, 26, 300, -1, 26, 467, + 580, 468, -1, 26, 300, 467, 580, 468, -1, 754, + -1, 753, 471, 754, -1, 343, 579, -1, 313, 579, + -1, 90, 579, -1, 1118, 579, -1, 1101, -1, 377, + 1101, -1, 344, 1101, -1, 159, 104, 434, 1103, -1, + 159, 347, 1103, -1, 164, 783, -1, 105, 1103, -1, + 128, 731, -1, 212, 1103, -1, 213, 260, 617, -1, + 337, 1103, -1, 380, 1103, -1, 398, 731, -1, 26, + 378, 185, 337, 1103, -1, 26, 345, 185, 337, 1103, + -1, 26, 165, 185, 337, 1103, -1, 757, -1, 756, + 471, 757, -1, 1116, -1, 171, 1116, -1, 430, 168, + 269, -1, -1, 168, 753, 388, 1117, 761, 762, -1, + 328, 753, 162, 1117, 762, 523, -1, 328, 23, 269, + 157, 753, 162, 1117, 762, 523, -1, 430, 23, 269, + -1, -1, 169, 53, 1116, -1, -1, 28, 111, 300, + 764, 766, -1, 764, 765, -1, -1, 185, 337, 1103, + -1, 157, 330, 1117, -1, 157, 410, 1117, -1, 168, + 752, 266, 767, 388, 756, 758, -1, 328, 752, 266, + 767, 162, 756, 523, -1, 328, 168, 269, 157, 752, + 266, 767, 162, 756, 523, -1, 378, -1, 165, -1, + 345, -1, 399, -1, 338, -1, 90, 769, 188, 770, + 771, 266, 1102, 772, 467, 773, 468, 528, 598, 1000, + -1, 90, 769, 188, 770, 179, 251, 145, 1108, 266, + 1102, 772, 467, 773, 468, 528, 598, 1000, -1, 404, + -1, -1, 79, -1, -1, 1108, -1, -1, 411, 1106, + -1, -1, 774, -1, 773, 471, 774, -1, 1118, 775, + 776, 777, 778, -1, 1040, 775, 776, 777, 778, -1, + 467, 1035, 468, 775, 776, 777, 778, -1, 71, 732, + -1, -1, 732, -1, -1, 36, -1, 120, -1, -1, + 452, 154, -1, 452, 214, -1, -1, 90, 780, 164, + 1110, 785, 327, 790, 798, 803, -1, 90, 780, 164, + 1110, 785, 327, 377, 467, 805, 468, 798, 803, -1, + 90, 780, 164, 1110, 785, 798, 803, -1, 271, 321, + -1, -1, 467, 782, 468, -1, 467, 468, -1, 787, + -1, 782, 471, 787, -1, 784, -1, 783, 471, 784, + -1, 1110, 781, -1, 1124, -1, 1118, -1, 1118, 1095, + -1, 467, 786, 468, -1, 467, 468, -1, 792, -1, + 786, 471, 792, -1, 788, 789, 791, -1, 789, 788, + 791, -1, 789, 791, -1, 788, 791, -1, 791, -1, + 185, -1, 274, -1, 195, -1, 185, 274, -1, 419, + -1, 1119, -1, 791, -1, 1012, -1, 1119, 733, 462, + 398, -1, 352, 1119, 733, 462, 398, -1, 787, -1, + 787, 111, 1035, -1, 787, 456, 1035, -1, 787, -1, + 467, 460, 468, -1, 467, 795, 468, -1, 467, 272, + 53, 795, 468, -1, 467, 795, 272, 53, 795, 468, + -1, 793, -1, 795, 471, 793, -1, 1110, 794, -1, + 796, -1, 797, 471, 796, -1, 800, -1, 798, 800, + -1, 55, 266, 256, 196, -1, 327, 256, 266, 256, + 196, -1, 370, -1, 182, -1, 362, -1, 425, -1, + 148, 342, 115, -1, 148, 342, 205, -1, 342, 115, + -1, 342, 205, -1, 217, -1, 251, 217, -1, 89, + 616, -1, 334, 616, -1, 511, -1, 282, 1118, -1, + 35, 801, -1, 212, 506, -1, 391, 802, -1, 429, + -1, 799, -1, 1113, -1, 1113, 471, 1113, -1, 157, + 398, 1012, -1, 802, 471, 157, 398, 1012, -1, 430, + 701, -1, -1, 789, 791, -1, 804, -1, 805, 471, + 804, -1, 28, 164, 784, 807, 808, -1, 799, -1, + 807, 799, -1, 325, -1, -1, 130, 164, 783, 523, + -1, 130, 164, 179, 145, 783, 523, -1, 130, 25, + 797, 523, -1, 130, 25, 179, 145, 797, 523, -1, + 130, 268, 814, 523, -1, 130, 268, 179, 145, 814, + 523, -1, 467, 1012, 468, -1, 467, 1012, 471, 1012, + 468, -1, 467, 250, 471, 1012, 468, -1, 467, 1012, + 471, 250, 468, -1, 1066, -1, 1118, 469, 813, -1, + 815, -1, 814, 471, 815, -1, 813, 812, -1, 126, + 817, -1, 818, -1, 817, 818, -1, 1113, -1, 212, + 506, -1, 90, 59, 467, 1012, 35, 1012, 468, 430, + 164, 784, 820, -1, 90, 59, 467, 1012, 35, 1012, + 468, 432, 164, 820, -1, 90, 59, 467, 1012, 35, + 1012, 468, 430, 195, 820, -1, 35, 183, -1, 35, + 38, -1, -1, 130, 59, 822, 467, 1012, 35, 1012, + 468, 523, -1, 179, 145, -1, -1, 90, 780, 391, + 157, 1012, 212, 1104, 467, 824, 468, -1, 162, 361, + 430, 164, 784, 471, 388, 361, 430, 164, 784, -1, + 388, 361, 430, 164, 784, 471, 162, 361, 430, 164, + 784, -1, 162, 361, 430, 164, 784, -1, 388, 361, + 430, 164, 784, -1, 130, 391, 822, 157, 1012, 212, + 1104, 523, -1, 316, 827, 1102, -1, 316, 828, 1104, + -1, 316, 467, 829, 468, 827, 1102, -1, 316, 467, + 829, 468, 828, 1104, -1, 188, -1, 377, -1, 337, + -1, 376, -1, 105, -1, 830, -1, 829, 471, 830, + -1, 421, -1, 28, 380, 1104, 350, 527, -1, 28, + 380, 1104, 323, 527, -1, 28, 25, 796, 319, 388, + 1104, -1, 28, 72, 732, 319, 388, 1104, -1, 28, + 87, 732, 319, 388, 1104, -1, 28, 105, 1105, 319, + 388, 1105, -1, 28, 128, 732, 319, 388, 1104, -1, + 28, 128, 732, 319, 83, 1104, 388, 1104, -1, 28, + 159, 104, 434, 1104, 319, 388, 1104, -1, 28, 164, + 784, 319, 388, 1104, -1, 28, 171, 1115, 319, 388, + 1115, -1, 28, 625, 212, 1104, 319, 388, 1104, -1, + 28, 268, 67, 732, 411, 1106, 319, 388, 1104, -1, + 28, 268, 151, 732, 411, 1106, 319, 388, 1104, -1, + 28, 291, 1104, 266, 1102, 319, 388, 1104, -1, 28, + 291, 179, 145, 1104, 266, 1102, 319, 388, 1104, -1, + 28, 304, 1104, 319, 388, 1104, -1, 28, 337, 1104, + 319, 388, 1104, -1, 28, 347, 1104, 319, 388, 1104, + -1, 28, 372, 1104, 319, 388, 1104, -1, 28, 377, + 990, 319, 388, 1104, -1, 28, 377, 179, 145, 990, + 319, 388, 1104, -1, 28, 344, 1102, 319, 388, 1104, + -1, 28, 344, 179, 145, 1102, 319, 388, 1104, -1, + 28, 423, 1102, 319, 388, 1104, -1, 28, 423, 179, + 145, 1102, 319, 388, 1104, -1, 28, 234, 423, 1102, + 319, 388, 1104, -1, 28, 234, 423, 179, 145, 1102, + 319, 388, 1104, -1, 28, 188, 1102, 319, 388, 1104, + -1, 28, 188, 179, 145, 1102, 319, 388, 1104, -1, + 28, 159, 377, 990, 319, 388, 1104, -1, 28, 159, + 377, 179, 145, 990, 319, 388, 1104, -1, 28, 377, + 990, 319, 833, 1104, 388, 1104, -1, 28, 377, 179, + 145, 990, 319, 833, 1104, 388, 1104, -1, 28, 234, + 423, 1102, 319, 833, 1104, 388, 1104, -1, 28, 234, + 423, 179, 145, 1102, 319, 833, 1104, 388, 1104, -1, + 28, 377, 990, 319, 83, 1104, 388, 1104, -1, 28, + 377, 179, 145, 990, 319, 83, 1104, 388, 1104, -1, + 28, 159, 377, 990, 319, 833, 1104, 388, 1104, -1, + 28, 159, 377, 179, 145, 990, 319, 833, 1104, 388, + 1104, -1, 28, 335, 1104, 266, 1102, 319, 388, 1104, + -1, 28, 393, 1104, 266, 1102, 319, 388, 1104, -1, + 28, 139, 393, 1104, 319, 388, 1104, -1, 28, 330, + 1115, 319, 388, 1115, -1, 28, 410, 1115, 319, 388, + 1115, -1, 28, 380, 1104, 319, 388, 1104, -1, 28, + 366, 732, 319, 388, 1104, -1, 28, 384, 340, 283, + 732, 319, 388, 1104, -1, 28, 384, 340, 122, 732, + 319, 388, 1104, -1, 28, 384, 340, 382, 732, 319, + 388, 1104, -1, 28, 384, 340, 80, 732, 319, 388, + 1104, -1, 28, 398, 732, 319, 388, 1104, -1, 28, + 398, 732, 319, 42, 1104, 388, 1104, 523, -1, 73, + -1, -1, 350, 104, -1, -1, 28, 164, 784, 119, + 266, 147, 1104, -1, 28, 393, 1104, 266, 1102, 119, + 266, 147, 1104, -1, 28, 234, 423, 1102, 119, 266, + 147, 1104, -1, 28, 188, 1102, 119, 266, 147, 1104, + -1, 28, 25, 796, 350, 337, 1104, -1, 28, 72, + 732, 350, 337, 1104, -1, 28, 87, 732, 350, 337, + 1104, -1, 28, 128, 732, 350, 337, 1104, -1, 28, + 147, 1104, 350, 337, 1104, -1, 28, 164, 784, 350, + 337, 1104, -1, 28, 268, 815, 350, 337, 1104, -1, + 28, 268, 67, 732, 411, 1106, 350, 337, 1104, -1, + 28, 268, 151, 732, 411, 1106, 350, 337, 1104, -1, + 28, 377, 990, 350, 337, 1104, -1, 28, 377, 179, + 145, 990, 350, 337, 1104, -1, 28, 366, 732, 350, + 337, 1104, -1, 28, 384, 340, 283, 732, 350, 337, + 1104, -1, 28, 384, 340, 122, 732, 350, 337, 1104, + -1, 28, 384, 340, 382, 732, 350, 337, 1104, -1, + 28, 384, 340, 80, 732, 350, 337, 1104, -1, 28, + 344, 1102, 350, 337, 1104, -1, 28, 344, 179, 145, + 1102, 350, 337, 1104, -1, 28, 423, 1102, 350, 337, + 1104, -1, 28, 423, 179, 145, 1102, 350, 337, 1104, + -1, 28, 234, 423, 1102, 350, 337, 1104, -1, 28, + 234, 423, 179, 145, 1102, 350, 337, 1104, -1, 28, + 159, 377, 990, 350, 337, 1104, -1, 28, 159, 377, + 179, 145, 990, 350, 337, 1104, -1, 28, 398, 732, + 350, 337, 1104, -1, 28, 268, 815, 350, 467, 838, + 468, -1, 839, -1, 838, 471, 839, -1, 1121, 456, + 250, -1, 1121, 456, 840, -1, 791, -1, 1125, -1, + 1069, -1, 616, -1, 1113, -1, 28, 25, 796, 281, + 388, 1116, -1, 28, 72, 732, 281, 388, 1116, -1, + 28, 87, 732, 281, 388, 1116, -1, 28, 105, 1105, + 281, 388, 1116, -1, 28, 128, 732, 281, 388, 1116, + -1, 28, 164, 784, 281, 388, 1116, -1, 28, 625, + 212, 1104, 281, 388, 1116, -1, 28, 213, 260, 616, + 281, 388, 1116, -1, 28, 268, 815, 281, 388, 1116, + -1, 28, 268, 67, 732, 411, 1106, 281, 388, 1116, + -1, 28, 268, 151, 732, 411, 1106, 281, 388, 1116, + -1, 28, 337, 1104, 281, 388, 1116, -1, 28, 398, + 732, 281, 388, 1116, -1, 28, 380, 1104, 281, 388, + 1116, -1, 28, 366, 732, 281, 388, 1116, -1, 28, + 384, 340, 122, 732, 281, 388, 1116, -1, 28, 384, + 340, 80, 732, 281, 388, 1116, -1, 28, 159, 104, + 434, 1104, 281, 388, 1116, -1, 28, 347, 1104, 281, + 388, 1116, -1, 28, 139, 393, 1104, 281, 388, 1116, + -1, 28, 304, 1104, 281, 388, 1116, -1, 28, 372, + 1104, 281, 388, 1116, -1, 90, 304, 1104, 843, 803, + -1, 844, -1, -1, 157, 377, 991, -1, 157, 26, + 378, -1, 28, 304, 1104, 350, 701, -1, 28, 304, + 1104, 22, 377, 991, -1, 28, 304, 1104, 350, 377, + 991, -1, 28, 304, 1104, 130, 377, 991, -1, 90, + 372, 1104, 82, 1113, 304, 847, 803, -1, 848, -1, + 847, 471, 848, -1, 1121, -1, 28, 372, 1104, 350, + 701, -1, 28, 372, 1104, 82, 1113, -1, 28, 372, + 1104, 315, 304, 803, -1, 28, 372, 1104, 350, 304, + 847, 803, -1, 28, 372, 1104, 133, -1, 28, 372, + 1104, 123, -1, 130, 372, 1104, 523, -1, 130, 372, + 179, 145, 1104, 523, -1, 90, 780, 335, 1104, 35, + 266, 856, 388, 1102, 1000, 126, 857, 852, -1, 252, + -1, 854, -1, 467, 853, 468, -1, 853, 470, 855, + -1, 855, -1, 936, -1, 911, -1, 927, -1, 920, + -1, 858, -1, 854, -1, -1, 343, -1, 409, -1, + 116, -1, 198, -1, 199, -1, 27, -1, -1, 253, + 1118, 859, -1, 471, 1113, -1, -1, 223, 1118, -1, + 406, 1118, -1, 406, 460, -1, 18, 863, -1, 46, + 863, 866, -1, 364, 390, 866, -1, 77, 863, -1, + 136, 863, -1, 331, 863, -1, 336, 1118, -1, 318, + 336, 1118, -1, 318, 1118, -1, 331, 863, 388, 336, + 1118, -1, 331, 863, 388, 1118, -1, 296, 390, 1113, + -1, 77, 297, 1113, -1, 331, 297, 1113, -1, 433, + -1, 390, -1, -1, 208, 220, 502, -1, 307, 267, + -1, 307, 435, -1, 113, -1, 251, 113, -1, 864, + -1, 865, 471, 864, -1, 865, 864, -1, 865, -1, + -1, 90, 559, 423, 1102, 579, 528, 35, 936, 868, + -1, 90, 271, 321, 559, 423, 1102, 579, 528, 35, + 936, 868, -1, 90, 559, 311, 423, 1102, 467, 580, + 468, 528, 35, 936, 868, -1, 90, 271, 321, 559, + 311, 423, 1102, 467, 580, 468, 528, 35, 936, 868, + -1, 430, 65, 269, -1, 430, 57, 65, 269, -1, + 430, 225, 65, 269, -1, -1, 224, 1109, -1, 90, + 105, 1105, 478, 871, -1, 872, -1, -1, 873, -1, + 872, 873, -1, 874, 875, 1114, -1, 874, 875, 503, + -1, 874, 875, 111, -1, 3, -1, 82, 222, -1, + 134, -1, 228, -1, 281, -1, 380, -1, 382, -1, + 456, -1, -1, 28, 105, 1105, 430, 871, -1, 28, + 105, 1105, 871, -1, 28, 105, 1105, 350, 380, 1104, + -1, 28, 105, 1105, 510, -1, 130, 105, 1105, -1, + 130, 105, 179, 145, 1105, -1, 28, 72, 732, 315, + 422, -1, 28, 376, 350, 497, -1, 28, 376, 323, + 509, -1, 90, 128, 732, 883, 1012, 568, -1, 28, + 128, 732, 522, -1, 28, 128, 732, 130, 251, 256, + -1, 28, 128, 732, 350, 251, 256, -1, 28, 128, + 732, 22, 576, -1, 28, 128, 732, 130, 83, 1104, + 523, -1, 28, 128, 732, 130, 83, 179, 145, 1104, + 523, -1, 28, 128, 732, 414, 83, 1104, -1, 35, + -1, -1, 28, 384, 340, 122, 732, 701, -1, 28, + 384, 340, 80, 732, 22, 232, 157, 1103, 886, 731, + -1, 28, 384, 340, 80, 732, 28, 232, 157, 1103, + 886, 731, -1, 28, 384, 340, 80, 732, 28, 232, + 321, 732, 886, 732, -1, 28, 384, 340, 80, 732, + 28, 232, 157, 1103, 321, 732, 886, 732, -1, 28, + 384, 340, 80, 732, 130, 232, 157, 1103, -1, 28, + 384, 340, 80, 732, 130, 232, 179, 145, 157, 1103, + -1, 430, -1, 453, -1, 90, 715, 87, 732, 157, + 1113, 388, 1113, 162, 732, -1, 69, 895, 1102, 889, + -1, 69, 895, -1, 69, 895, 1108, 266, 1102, -1, + 411, 1108, -1, -1, 412, 896, 897, 895, -1, 412, + 896, 897, 895, 1102, -1, 412, 896, 897, 895, 893, + -1, 412, 467, 891, 468, -1, 412, 467, 891, 468, + 1102, 898, -1, 892, -1, 891, 471, 892, -1, 894, + -1, 421, -1, 161, -1, 163, -1, 3, -1, 894, + 895, -1, 894, 895, 1102, 898, -1, 31, -1, 30, + -1, 421, -1, -1, 163, -1, -1, 161, -1, -1, + 467, 1103, 468, -1, -1, 146, 900, -1, 146, 894, + 895, 900, -1, 146, 421, 900, -1, 146, 467, 901, + 468, 900, -1, 936, -1, 911, -1, 927, -1, 920, + -1, 932, -1, 602, -1, 605, -1, 608, -1, 908, + -1, 902, -1, 901, 471, 902, -1, 903, 904, -1, + 1120, -1, 894, -1, 503, -1, 616, -1, -1, 296, + 1104, 906, 35, 907, -1, 467, 1074, 468, -1, -1, + 936, -1, 911, -1, 927, -1, 920, -1, 144, 1104, + 909, -1, 90, 559, 377, 603, 35, 144, 1104, 909, + 604, -1, 467, 1071, 468, -1, -1, 107, 1104, -1, + 107, 296, 1104, -1, 107, 26, -1, 107, 296, 26, + -1, 944, 198, 204, 912, 913, 917, 919, -1, 1102, + -1, 1102, 35, 1118, -1, 936, -1, 279, 914, 416, + 936, -1, 467, 915, 468, 936, -1, 467, 915, 468, + 279, 914, 416, 936, -1, 111, 417, -1, 410, -1, + 376, -1, 916, -1, 915, 471, 916, -1, 1118, 1096, + -1, 266, 81, 918, 126, 409, 350, 928, 1000, -1, + 266, 81, 918, 126, 252, -1, -1, 467, 773, 468, + 1000, -1, 266, 83, 1104, -1, -1, 326, 1099, -1, + -1, 944, 116, 162, 992, 921, 1001, 919, -1, 411, + 981, -1, -1, 229, 947, 991, 923, 925, -1, 185, + 924, 239, -1, -1, 20, 353, -1, 333, 353, -1, + 333, 143, -1, 353, 409, 143, -1, 353, -1, 353, + 333, 143, -1, 143, -1, 20, 143, -1, 255, -1, + -1, 255, -1, 357, 230, -1, -1, 944, 409, 992, + 350, 928, 980, 1001, 919, -1, 929, -1, 928, 471, + 929, -1, 930, 456, 1035, -1, 467, 931, 468, 456, + 1035, -1, 1118, 1096, -1, 930, -1, 931, 471, 930, + -1, 110, 933, 934, 102, 935, 157, 936, -1, 1104, + -1, -1, 934, 249, 339, -1, 934, 339, -1, 934, + 49, -1, 934, 197, -1, -1, 430, 176, -1, 432, + 176, -1, 938, -1, 937, -1, 467, 938, 468, -1, + 467, 937, 468, -1, 940, -1, 939, 952, -1, 939, + 951, 973, 956, -1, 939, 951, 955, 974, -1, 941, + 939, -1, 941, 939, 952, -1, 941, 939, 951, 973, + 956, -1, 941, 939, 951, 955, 974, -1, 940, -1, + 937, -1, 343, 950, 1098, 945, 980, 1000, 965, 972, + 1052, -1, 343, 949, 1099, 945, 980, 1000, 965, 972, + 1052, -1, 979, -1, 377, 990, -1, 939, 403, 948, + 939, -1, 939, 202, 948, 939, -1, 939, 140, 948, + 939, -1, 430, 942, -1, 453, 942, -1, 430, 311, + 942, -1, 943, -1, 942, 471, 943, -1, 1104, 898, + 35, 467, 907, 468, -1, 941, -1, -1, 204, 946, + -1, -1, 383, 947, 1102, -1, 381, 947, 1102, -1, + 225, 383, 947, 1102, -1, 225, 381, 947, 1102, -1, + 167, 383, 947, 1102, -1, 167, 381, 947, 1102, -1, + 407, 947, 1102, -1, 377, 1102, -1, 1102, -1, 377, + -1, -1, 26, -1, 125, -1, -1, 125, -1, 125, + 266, 467, 1071, 468, -1, 26, -1, -1, 952, -1, + -1, 272, 53, 953, -1, 954, -1, 953, 471, 954, + -1, 1035, 411, 1069, 778, -1, 1035, 777, 778, -1, + 957, 958, -1, 958, 957, -1, 957, -1, 958, -1, + 955, -1, -1, 222, 959, -1, 222, 959, 471, 960, + -1, 152, 964, 961, 963, 267, -1, 263, 960, -1, + 263, 962, 963, -1, 1035, -1, 26, -1, 1035, -1, + 1114, -1, 467, 1035, 468, -1, -1, 1037, -1, 333, + -1, 334, -1, 154, -1, 248, -1, 171, 53, 966, + -1, -1, 967, -1, 966, 471, 967, -1, 1035, -1, + 968, -1, 970, -1, 969, -1, 971, -1, 467, 468, + -1, 332, 467, 1071, 468, -1, 93, 467, 1071, 468, + -1, 172, 351, 467, 966, 468, -1, 174, 1035, -1, + -1, 975, -1, 157, 307, 267, -1, 973, -1, -1, + 976, -1, 975, 976, -1, 977, 978, 926, -1, 157, + 409, -1, 157, 249, 210, 409, -1, 157, 353, -1, + 157, 210, 353, -1, 261, 1101, -1, -1, 417, 467, + 1071, 468, -1, 979, 471, 467, 1071, 468, -1, 162, + 981, -1, -1, 982, -1, 981, 471, 982, -1, 990, + 985, -1, 990, 985, 993, -1, 995, 986, -1, 215, + 995, 986, -1, 1005, 985, -1, 215, 1005, 985, -1, + 937, 985, -1, 215, 937, 985, -1, 983, -1, 467, + 983, 468, 984, -1, 467, 983, 468, -1, 982, 91, + 209, 982, -1, 982, 987, 209, 982, 989, -1, 982, + 209, 982, 989, -1, 982, 245, 987, 209, 982, -1, + 982, 245, 209, 982, -1, 35, 1118, 467, 1103, 468, + -1, 35, 1118, -1, 1118, 467, 1103, 468, -1, 1118, + -1, 984, -1, -1, 984, -1, 35, 467, 1003, 468, + -1, 35, 1118, 467, 1003, 468, -1, 1118, 467, 1003, + 468, -1, -1, 163, 988, -1, 219, 988, -1, 329, + 988, -1, 194, -1, 275, -1, -1, 411, 467, 1103, + 468, -1, 266, 1035, -1, 1102, -1, 1102, 460, -1, + 267, 1102, -1, 267, 467, 1102, 468, -1, 990, -1, + 991, 471, 990, -1, 990, -1, 990, 1118, -1, 990, + 35, 1118, -1, 379, 1110, 467, 1071, 468, 994, -1, + 320, 467, 1035, 468, -1, -1, 1040, 999, -1, 334, + 162, 467, 997, 468, 999, -1, 1040, 998, -1, 996, + -1, 997, 471, 996, -1, 35, 467, 1003, 468, -1, + -1, 453, 273, -1, -1, 427, 1035, -1, -1, 427, + 1035, -1, 427, 94, 261, 933, -1, -1, 1003, -1, + -1, 1004, -1, 1003, 471, 1004, -1, 1118, 1012, 524, + -1, 447, 467, 1037, 1049, 74, 1006, 468, -1, 447, + 467, 442, 467, 1010, 468, 471, 1037, 1049, 74, 1006, + 468, -1, 1007, -1, 1006, 471, 1007, -1, 1118, 1012, + -1, 1118, 1012, 1008, -1, 1118, 157, 273, -1, 1009, + -1, 1008, 1009, -1, 3, 1036, -1, 111, 1036, -1, + 251, 256, -1, 256, -1, 1011, -1, 1010, 471, 1011, + -1, 1036, 35, 1121, -1, 111, 1036, -1, 1014, 1013, + -1, 352, 1014, 1013, -1, 1014, 34, 465, 1112, 466, + -1, 352, 1014, 34, 465, 1112, 466, -1, 1014, 34, + -1, 352, 1014, 34, -1, 1013, 465, 466, -1, 1013, + 465, 1112, 466, -1, -1, 1016, -1, 1018, -1, 1020, + -1, 1024, -1, 1030, -1, 1031, 1033, -1, 1031, 467, + 1112, 468, -1, 1018, -1, 1021, -1, 1025, -1, 1030, + -1, 1119, 1017, -1, 1119, 733, 1017, -1, 467, 1071, + 468, -1, -1, 200, -1, 201, -1, 358, -1, 48, + -1, 308, -1, 155, 1019, -1, 129, 294, -1, 109, + 1017, -1, 108, 1017, -1, 259, 1017, -1, 51, -1, + 467, 1112, 468, -1, -1, 1022, -1, 1023, -1, 1022, + -1, 1023, -1, 50, 1029, 467, 1071, 468, -1, 50, + 1029, -1, 1026, -1, 1027, -1, 1026, -1, 1027, -1, + 1028, 467, 1112, 468, -1, 1028, -1, 63, 1029, -1, + 62, 1029, -1, 418, -1, 244, 63, 1029, -1, 244, + 62, 1029, -1, 246, 1029, -1, 420, -1, -1, 387, + 467, 1112, 468, 1032, -1, 387, 1032, -1, 386, 467, + 1112, 468, 1032, -1, 386, 1032, -1, 203, -1, 453, + 386, 450, -1, 432, 386, 450, -1, -1, 448, -1, + 240, -1, 106, -1, 177, -1, 237, -1, 1034, -1, + 448, 388, 240, -1, 106, 388, 177, -1, 106, 388, + 237, -1, 106, 388, 1034, -1, 177, 388, 237, -1, + 177, 388, 1034, -1, 237, 388, 1034, -1, -1, 341, + -1, 341, 467, 1112, 468, -1, 1037, -1, 1035, 11, + 1012, -1, 1035, 71, 732, -1, 1035, 40, 386, 450, + 1035, -1, 458, 1035, -1, 459, 1035, -1, 1035, 458, + 1035, -1, 1035, 459, 1035, -1, 1035, 460, 1035, -1, + 1035, 461, 1035, -1, 1035, 462, 1035, -1, 1035, 463, + 1035, -1, 1035, 454, 1035, -1, 1035, 455, 1035, -1, + 1035, 456, 1035, -1, 1035, 15, 1035, -1, 1035, 16, + 1035, -1, 1035, 17, 1035, -1, 1035, 1068, 1035, -1, + 1068, 1035, -1, 1035, 1068, -1, 1035, 32, 1035, -1, + 1035, 271, 1035, -1, 251, 1035, -1, 451, 1035, -1, + 1035, 221, 1035, -1, 1035, 221, 1035, 138, 1035, -1, + 1035, 451, 221, 1035, -1, 1035, 451, 221, 1035, 138, + 1035, -1, 1035, 180, 1035, -1, 1035, 180, 1035, 138, + 1035, -1, 1035, 451, 180, 1035, -1, 1035, 451, 180, + 1035, 138, 1035, -1, 1035, 355, 388, 1035, -1, 1035, + 355, 388, 1035, 138, 1035, -1, 1035, 451, 355, 388, + 1035, -1, 1035, 451, 355, 388, 1035, 138, 1035, -1, + 1035, 206, 256, -1, 1035, 207, -1, 1035, 206, 251, + 256, -1, 1035, 254, -1, 1062, 277, 1062, -1, 1035, + 206, 395, -1, 1035, 206, 251, 395, -1, 1035, 206, + 150, -1, 1035, 206, 251, 150, -1, 1035, 206, 405, + -1, 1035, 206, 251, 405, -1, 1035, 206, 125, 162, + 1035, -1, 1035, 206, 251, 125, 162, 1035, -1, 1035, + 206, 261, 467, 1074, 468, -1, 1035, 206, 251, 261, + 467, 1074, 468, -1, 1035, 47, 1097, 1036, 32, 1035, + -1, 1035, 451, 47, 1097, 1036, 32, 1035, -1, 1035, + 47, 374, 1036, 32, 1035, -1, 1035, 451, 47, 374, + 1036, 32, 1035, -1, 1035, 185, 1086, -1, 1035, 451, + 185, 1086, -1, 1035, 1070, 1065, 937, -1, 1035, 1070, + 1065, 467, 1035, 468, -1, 404, 937, -1, 1035, 206, + 127, -1, 1035, 206, 251, 127, -1, 111, -1, 1037, + -1, 1036, 11, 1012, -1, 458, 1036, -1, 459, 1036, + -1, 1036, 458, 1036, -1, 1036, 459, 1036, -1, 1036, + 460, 1036, -1, 1036, 461, 1036, -1, 1036, 462, 1036, + -1, 1036, 463, 1036, -1, 1036, 454, 1036, -1, 1036, + 455, 1036, -1, 1036, 456, 1036, -1, 1036, 15, 1036, + -1, 1036, 16, 1036, -1, 1036, 17, 1036, -1, 1036, + 1068, 1036, -1, 1068, 1036, -1, 1036, 1068, -1, 1036, + 206, 125, 162, 1036, -1, 1036, 206, 251, 125, 162, + 1036, -1, 1036, 206, 261, 467, 1074, 468, -1, 1036, + 206, 251, 261, 467, 1074, 468, -1, 1036, 206, 127, + -1, 1036, 206, 251, 127, -1, 1092, -1, 1111, -1, + 10, 1096, -1, 467, 1035, 468, 1096, -1, 1087, -1, + 1039, -1, 937, -1, 937, 1095, -1, 145, 937, -1, + 34, 937, -1, 34, 1075, -1, 1063, -1, 1064, -1, + 172, 467, 1071, 468, -1, 1110, 467, 468, -1, 1110, + 467, 1072, 951, 468, -1, 1110, 467, 419, 1073, 951, + 468, -1, 1110, 467, 1072, 471, 419, 1073, 951, 468, + -1, 1110, 467, 26, 1072, 951, 468, -1, 1110, 467, + 125, 1072, 951, 468, -1, 1110, 467, 460, 468, -1, + 1038, 1050, 1051, 1055, -1, 1041, -1, 1038, -1, 1041, + -1, 72, 157, 467, 1035, 468, -1, 96, -1, 99, + -1, 99, 467, 1112, 468, -1, 100, -1, 100, 467, + 1112, 468, -1, 226, -1, 226, 467, 1112, 468, -1, + 227, -1, 227, 467, 1112, 468, -1, 97, -1, 101, + -1, 349, -1, 410, -1, 95, -1, 98, -1, 59, + 467, 1035, 35, 1012, 468, -1, 149, 467, 1077, 468, + -1, 278, 467, 1079, 468, -1, 292, 467, 1081, 468, + -1, 373, 467, 1082, 468, -1, 392, 467, 1035, 35, + 1012, 468, -1, 394, 467, 52, 1085, 468, -1, 394, + 467, 216, 1085, 468, -1, 394, 467, 389, 1085, 468, + -1, 394, 467, 1085, 468, -1, 257, 467, 1035, 471, + 1035, 468, -1, 70, 467, 1071, 468, -1, 170, 467, + 1071, 468, -1, 218, 467, 1071, 468, -1, 438, 467, + 1071, 468, -1, 439, 467, 242, 1121, 468, -1, 439, + 467, 242, 1121, 471, 1044, 468, -1, 439, 467, 242, + 1121, 471, 1071, 468, -1, 439, 467, 242, 1121, 471, + 1044, 471, 1071, 468, -1, 440, 467, 1037, 1049, 468, + -1, 441, 467, 1045, 468, -1, 443, 467, 1047, 1035, + 1048, 468, -1, 444, 467, 242, 1121, 468, -1, 444, + 467, 242, 1121, 471, 1035, 468, -1, 445, 467, 1035, + 471, 1042, 1043, 468, -1, 446, 467, 1047, 1035, 35, + 1014, 468, -1, 422, 1035, -1, 422, 249, 416, -1, + 471, 363, 449, -1, 471, 363, 249, -1, 471, 363, + 249, 416, -1, -1, 437, 467, 1045, 468, -1, 1046, + -1, 1045, 471, 1046, -1, 1035, 35, 1121, -1, 1035, + -1, 127, -1, 85, -1, 295, 428, -1, 371, 428, + -1, -1, 286, 1037, -1, 286, 1037, 53, 312, -1, + 286, 53, 312, 1037, -1, 286, 53, 312, 1037, 53, + 312, -1, 431, 171, 467, 952, 468, -1, -1, 153, + 467, 427, 1035, 468, -1, -1, 429, 1053, -1, -1, + 1054, -1, 1053, 471, 1054, -1, 1118, 35, 1056, -1, + 276, 1056, -1, 276, 1118, -1, -1, 467, 1057, 1058, + 951, 1059, 468, -1, 1118, -1, -1, 285, 53, 1071, + -1, -1, 306, 1060, -1, 334, 1060, -1, -1, 1061, + -1, 47, 1061, 32, 1061, -1, 400, 293, -1, 400, + 156, -1, 94, 333, -1, 1035, 293, -1, 1035, 156, + -1, 333, 467, 1071, 468, -1, 333, 467, 468, -1, + 467, 1071, 471, 1035, 468, -1, 333, 467, 1071, 468, + -1, 333, 467, 468, -1, 467, 1071, 471, 1035, 468, + -1, 33, -1, 360, -1, 26, -1, 8, -1, 1067, + -1, 458, -1, 459, -1, 460, -1, 461, -1, 462, + -1, 463, -1, 454, -1, 455, -1, 456, -1, 15, + -1, 16, -1, 17, -1, 8, -1, 268, 467, 813, + 468, -1, 1066, -1, 268, 467, 813, 468, -1, 1066, + -1, 268, 467, 813, 468, -1, 221, -1, 451, 221, + -1, 180, -1, 451, 180, -1, 1035, -1, 1071, 471, + 1035, -1, 1073, -1, 1072, 471, 1073, -1, 1035, -1, + 789, 13, 1035, -1, 789, 14, 1035, -1, 1012, -1, + 1074, 471, 1012, -1, 465, 1071, 466, -1, 465, 1076, + 466, -1, 465, 466, -1, 1075, -1, 1076, 471, 1075, + -1, 1078, 162, 1035, -1, -1, 3, -1, 448, -1, + 240, -1, 106, -1, 177, -1, 237, -1, 341, -1, + 1113, -1, 1035, 1080, 1083, 1084, -1, 1035, 1080, 1083, + -1, 289, 1035, -1, 1036, 185, 1036, -1, -1, 1035, + 1083, 1084, -1, 1035, 1084, 1083, -1, 1035, 1083, -1, + 1035, 1084, -1, 1071, -1, -1, 162, 1035, -1, 157, + 1035, -1, 1035, 162, 1071, -1, 162, 1071, -1, 1071, + -1, 937, -1, 467, 1071, 468, -1, 58, 1091, 1088, + 1090, 136, -1, 1089, -1, 1088, 1089, -1, 426, 1035, + 385, 1035, -1, 132, 1035, -1, -1, 1035, -1, -1, + 1118, -1, 1118, 1095, -1, 469, 1107, -1, 469, 460, + -1, 465, 1035, 466, -1, 465, 1094, 472, 1094, 466, + -1, 1035, -1, -1, 1093, -1, 1095, 1093, -1, -1, + 1096, 1093, -1, 39, -1, -1, 1099, -1, -1, 1100, + -1, 1099, 471, 1100, -1, 1035, 35, 1121, -1, 1035, + 3, -1, 1035, -1, 460, -1, 1102, -1, 1101, 471, + 1102, -1, 1118, -1, 1118, 1095, -1, 1104, -1, 1103, + 471, 1104, -1, 1118, -1, 1118, -1, 1118, -1, 1121, + -1, 1118, -1, 1113, -1, 1119, -1, 1118, 1095, -1, + 1112, -1, 4, -1, 1113, -1, 6, -1, 7, -1, + 1110, 1113, -1, 1110, 467, 1072, 951, 468, 1113, -1, + 1015, 1113, -1, 1031, 1113, 1033, -1, 1031, 467, 1112, + 468, 1113, -1, 395, -1, 150, -1, 256, -1, 9, + -1, 5, -1, 1112, -1, 458, 1112, -1, 459, 1112, + -1, 1116, -1, 1120, -1, 101, -1, 349, -1, 1116, + -1, 1117, 471, 1116, -1, 3, -1, 1122, -1, 1123, + -1, 3, -1, 1122, -1, 1124, -1, 3, -1, 1122, + -1, 1123, -1, 1124, -1, 3, -1, 1122, -1, 1123, + -1, 1124, -1, 1125, -1, 18, -1, 19, -1, 20, + -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, + -1, 27, -1, 28, -1, 29, -1, 37, -1, 38, + -1, 40, -1, 41, -1, 42, -1, 44, -1, 45, + -1, 46, -1, 53, -1, 54, -1, 55, -1, 56, + -1, 57, -1, 60, -1, 61, -1, 64, -1, 66, + -1, 67, -1, 68, -1, 69, -1, 74, -1, 75, + -1, 76, -1, 77, -1, 78, -1, 80, -1, 81, + -1, 82, -1, 84, -1, 85, -1, 86, -1, 87, + -1, 88, -1, 89, -1, 92, -1, 93, -1, 94, + -1, 102, -1, 103, -1, 104, -1, 105, -1, 106, + -1, 107, -1, 110, -1, 112, -1, 114, -1, 115, + -1, 116, -1, 117, -1, 118, -1, 119, -1, 121, + -1, 122, -1, 123, -1, 124, -1, 127, -1, 128, + -1, 129, -1, 130, -1, 131, -1, 133, -1, 134, + -1, 135, -1, 137, -1, 138, -1, 139, -1, 141, + -1, 142, -1, 143, -1, 144, -1, 146, -1, 147, + -1, 148, -1, 151, -1, 153, -1, 154, -1, 156, + -1, 158, -1, 160, -1, 164, -1, 165, -1, 166, + -1, 167, -1, 169, -1, 173, -1, 175, -1, 176, + -1, 177, -1, 178, -1, 179, -1, 181, -1, 182, + -1, 183, -1, 184, -1, 186, -1, 187, -1, 188, + -1, 189, -1, 190, -1, 191, -1, 193, -1, 196, + -1, 197, -1, 198, -1, 199, -1, 205, -1, 208, + -1, 210, -1, 211, -1, 212, -1, 213, -1, 214, + -1, 217, -1, 220, -1, 223, -1, 224, -1, 225, + -1, 228, -1, 229, -1, 230, -1, 231, -1, 232, + -1, 233, -1, 234, -1, 235, -1, 236, -1, 237, + -1, 238, -1, 239, -1, 240, -1, 241, -1, 242, + -1, 243, -1, 247, -1, 248, -1, 249, -1, 252, + -1, 253, -1, 255, -1, 258, -1, 260, -1, 261, + -1, 262, -1, 264, -1, 265, -1, 268, -1, 269, + -1, 270, -1, 273, -1, 276, -1, 279, -1, 280, + -1, 281, -1, 282, -1, 283, -1, 284, -1, 285, + -1, 286, -1, 287, -1, 290, -1, 291, -1, 293, + -1, 296, -1, 297, -1, 295, -1, 299, -1, 300, + -1, 301, -1, 302, -1, 303, -1, 304, -1, 305, + -1, 306, -1, 307, -1, 309, -1, 310, -1, 311, + -1, 312, -1, 314, -1, 315, -1, 316, -1, 317, + -1, 318, -1, 319, -1, 320, -1, 321, -1, 322, + -1, 323, -1, 324, -1, 325, -1, 327, -1, 328, + -1, 330, -1, 331, -1, 332, -1, 334, -1, 335, + -1, 336, -1, 337, -1, 338, -1, 339, -1, 340, + -1, 341, -1, 342, -1, 344, -1, 345, -1, 346, + -1, 347, -1, 348, -1, 350, -1, 351, -1, 353, + -1, 354, -1, 356, -1, 357, -1, 359, -1, 361, + -1, 362, -1, 363, -1, 364, -1, 365, -1, 366, + -1, 367, -1, 368, -1, 369, -1, 370, -1, 371, + -1, 372, -1, 375, -1, 376, -1, 378, -1, 380, + -1, 381, -1, 382, -1, 383, -1, 384, -1, 390, + -1, 391, -1, 393, -1, 396, -1, 397, -1, 398, + -1, 399, -1, 400, -1, 401, -1, 402, -1, 405, + -1, 406, -1, 407, -1, 408, -1, 409, -1, 412, + -1, 413, -1, 414, -1, 415, -1, 416, -1, 420, + -1, 422, -1, 423, -1, 424, -1, 425, -1, 428, + -1, 431, -1, 432, -1, 433, -1, 434, -1, 435, + -1, 436, -1, 448, -1, 449, -1, 450, -1, 47, + -1, 48, -1, 50, -1, 51, -1, 62, -1, 63, + -1, 70, -1, 108, -1, 109, -1, 145, -1, 149, + -1, 155, -1, 170, -1, 172, -1, 195, -1, 200, + -1, 201, -1, 203, -1, 218, -1, 244, -1, 246, + -1, 250, -1, 257, -1, 259, -1, 274, -1, 278, + -1, 292, -1, 294, -1, 308, -1, 333, -1, 352, + -1, 358, -1, 373, -1, 386, -1, 387, -1, 392, + -1, 394, -1, 417, -1, 418, -1, 437, -1, 438, + -1, 439, -1, 440, -1, 441, -1, 442, -1, 443, + -1, 444, -1, 445, -1, 446, -1, 447, -1, 43, + -1, 49, -1, 72, -1, 79, -1, 91, -1, 98, + -1, 161, -1, 163, -1, 180, -1, 194, -1, 206, + -1, 207, -1, 209, -1, 219, -1, 221, -1, 245, + -1, 254, -1, 275, -1, 277, -1, 329, -1, 355, + -1, 379, -1, 421, -1, 26, -1, 30, -1, 31, + -1, 32, -1, 33, -1, 34, -1, 35, -1, 36, + -1, 39, -1, 52, -1, 58, -1, 59, -1, 65, + -1, 71, -1, 73, -1, 83, -1, 90, -1, 95, + -1, 96, -1, 97, -1, 99, -1, 100, -1, 101, + -1, 111, -1, 113, -1, 120, -1, 125, -1, 126, + -1, 132, -1, 136, -1, 140, -1, 150, -1, 152, + -1, 157, -1, 159, -1, 162, -1, 168, -1, 171, + -1, 174, -1, 185, -1, 192, -1, 202, -1, 204, + -1, 215, -1, 216, -1, 222, -1, 226, -1, 227, + -1, 251, -1, 256, -1, 263, -1, 266, -1, 267, + -1, 271, -1, 272, -1, 289, -1, 298, -1, 313, + -1, 326, -1, 343, -1, 349, -1, 360, -1, 374, + -1, 377, -1, 385, -1, 388, -1, 389, -1, 395, + -1, 403, -1, 404, -1, 410, -1, 411, -1, 419, + -1, 426, -1, 427, -1, 429, -1, 430, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 768, 768, 775, 782, 792, 793, 794, 795, 796, - 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, - 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, - 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, - 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, - 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, - 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, - 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, - 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, - 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, - 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, - 918, 928, 939, 940, 941, 950, 951, 955, 956, 960, - 965, 969, 974, 979, 983, 987, 992, 996, 1044, 1046, - 1050, 1054, 1058, 1062, 1076, 1094, 1105, 1106, 1110, 1118, - 1136, 1148, 1169, 1176, 1195, 1202, 1219, 1237, 1248, 1249, - 1261, 1268, 1285, 1295, 1305, 1320, 1338, 1339, 1343, 1350, - 1358, 1359, 1360, 1361, 1362, 1363, 1377, 1384, 1390, 1396, - 1405, 1413, 1421, 1425, 1433, 1441, 1448, 1457, 1458, 1466, - 1477, 1485, 1493, 1504, 1512, 1520, 1527, 1536, 1546, 1547, - 1551, 1552, 1555, 1557, 1561, 1562, 1563, 1564, 1568, 1569, - 1570, 1576, 1588, 1592, 1596, 1611, 1618, 1619, 1620, 1624, - 1625, 1626, 1630, 1631, 1635, 1636, 1645, 1646, 1653, 1660, - 1670, 1677, 1687, 1688, 1693, 1694, 1700, 1706, 1712, 1718, - 1724, 1730, 1736, 1746, 1756, 1757, 1761, 1762, 1770, 1785, - 1791, 1797, 1803, 1809, 1828, 1837, 1846, 1857, 1868, 1877, - 1886, 1897, 1908, 1917, 1926, 1935, 1944, 1953, 1962, 1973, - 1987, 1988, 1993, 2002, 2011, 2020, 2029, 2038, 2046, 2054, - 2063, 2072, 2081, 2090, 2100, 2113, 2128, 2137, 2146, 2161, - 2169, 2179, 2189, 2196, 2203, 2211, 2219, 2226, 2233, 2241, - 2249, 2257, 2264, 2271, 2279, 2286, 2293, 2301, 2309, 2317, - 2325, 2333, 2341, 2351, 2358, 2366, 2374, 2382, 2390, 2398, - 2405, 2412, 2419, 2425, 2435, 2436, 2440, 2441, 2442, 2446, - 2454, 2458, 2459, 2463, 2470, 2477, 2484, 2494, 2497, 2498, - 2502, 2503, 2508, 2512, 2516, 2521, 2536, 2549, 2550, 2555, - 2564, 2574, 2584, 2610, 2616, 2649, 2678, 2700, 2701, 2705, - 2706, 2715, 2716, 2717, 2720, 2721, 2726, 2727, 2731, 2735, - 2739, 2743, 2747, 2751, 2755, 2759, 2763, 2767, 2771, 2775, - 2779, 2783, 2792, 2796, 2800, 2804, 2808, 2812, 2816, 2817, - 2822, 2826, 2833, 2840, 2841, 2842, 2843, 2844, 2848, 2852, - 2860, 2871, 2887, 2904, 2921, 2951, 2952, 2953, 2954, 2955, - 2962, 2969, 2970, 2974, 2975, 2979, 2980, 2984, 2988, 2995, - 2999, 3006, 3007, 3008, 3012, 3013, 3016, 3037, 3058, 3059, - 3063, 3071, 3072, 3073, 3104, 3111, 3118, 3129, 3140, 3152, - 3163, 3196, 3203, 3210, 3217, 3228, 3238, 3239, 3240, 3244, - 3245, 3246, 3247, 3248, 3249, 3258, 3266, 3270, 3283, 3298, - 3312, 3327, 3341, 3359, 3380, 3381, 3385, 3386, 3390, 3391, - 3394, 3400, 3404, 3412, 3417, 3423, 3424, 3428, 3433, 3440, - 3441, 3451, 3453, 3455, 3457, 3460, 3463, 3466, 3470, 3471, - 3472, 3473, 3474, 3477, 3478, 3483, 3484, 3485, 3486, 3489, - 3490, 3491, 3492, 3495, 3496, 3499, 3500, 3503, 3518, 3531, - 3547, 3561, 3562, 3563, 3575, 3588, 3604, 3617, 3618, 3630, - 3650, 3660, 3673, 3681, 3692, 3693, 3696, 3697, 3700, 3704, - 3708, 3712, 3716, 3720, 3724, 3728, 3732, 3736, 3740, 3744, - 3750, 3751, 3755, 3756, 3761, 3764, 3765, 3777, 3789, 3804, - 3805, 3813, 3814, 3818, 3819, 3823, 3824, 3828, 3829, 3833, - 3844, 3857, 3858, 3868, 3879, 3880, 3893, 3900, 3917, 3925, - 3936, 3939, 3943, 3947, 3951, 3955, 3967, 3977, 3980, 3984, - 3997, 4007, 4017, 4026, 4035, 4044, 4054, 4063, 4073, 4082, - 4091, 4100, 4109, 4118, 4127, 4136, 4145, 4154, 4163, 4172, - 4181, 4190, 4199, 4208, 4218, 4236, 4247, 4248, 4249, 4250, - 4254, 4255, 4259, 4260, 4270, 4281, 4301, 4309, 4321, 4322, - 4326, 4330, 4338, 4342, 4346, 4353, 4357, 4362, 4367, 4374, - 4381, 4386, 4396, 4410, 4411, 4416, 4417, 4421, 4422, 4432, - 4443, 4463, 4472, 4480, 4497, 4517, 4547, 4556, 4577, 4592, - 4593, 4597, 4605, 4620, 4631, 4632, 4642, 4650, 4667, 4689, - 4705, 4719, 4730, 4744, 4745, 4749, 4750, 4754, 4755, 4759, - 4760, 4764, 4765, 4769, 4770, 4771, 4772, 4773, 4783, 4802, - 4822, 4847, 4848, 4849, 4853, 4855, 4877, 4879, 4881, 4883, - 4885, 4890, 4895, 4905, 4906, 4910, 4911, 4915, 4916, 4920, - 4921, 4922, 4926, 4930, 4931, 4932, 4936, 4937, 4942, 4943, - 4970, 4971, 4972, 4973, 4974, 4975, 4980, 4991, 5014, 5024, - 5038, 5040, 5045, 5050, 5052, 5057, 5067, 5068, 5069, 5070, - 5082, 5102, 5125, 5135, 5146, 5156, 5166, 5177, 5186, 5193, - 5200, 5209, 5218, 5227, 5236, 5245, 5256, 5259, 5260, 5263, - 5267, 5274, 5275, 5276, 5277, 5278, 5281, 5284, 5285, 5293, - 5300, 5301, 5304, 5306, 5317, 5327, 5337, 5349, 5350, 5366, - 5381, 5382, 5386, 5396, 5407, 5416, 5426, 5435, 5436, 5439, - 5440, 5443, 5444, 5445, 5448, 5462, 5467, 5477, 5486, 5498, - 5499, 5503, 5511, 5523, 5533, 5546, 5556, 5578, 5588, 5606, - 5617, 5628, 5638, 5648, 5658, 5668, 5679, 5693, 5694, 5695, - 5696, 5697, 5698, 5699, 5700, 5701, 5702, 5703, 5704, 5705, - 5706, 5707, 5708, 5712, 5713, 5716, 5717, 5720, 5722, 5727, - 5728, 5738, 5749, 5750, 5751, 5785, 5794, 5803, 5812, 5821, - 5830, 5839, 5848, 5862, 5871, 5880, 5890, 5899, 5908, 5916, - 5925, 5934, 5943, 5955, 5956, 5957, 5958, 5959, 5960, 5961, - 5962, 5963, 5964, 5965, 5966, 5967, 5968, 5969, 5970, 5971, - 5972, 5973, 5974, 5975, 5976, 5980, 5981, 5995, 6006, 6017, - 6028, 6039, 6050, 6061, 6074, 6075, 6079, 6080, 6081, 6082, - 6083, 6084, 6085, 6086, 6087, 6088, 6089, 6092, 6093, 6103, - 6109, 6117, 6125, 6133, 6141, 6149, 6157, 6165, 6173, 6181, - 6189, 6197, 6205, 6213, 6221, 6229, 6237, 6247, 6248, 6251, - 6252, 6262, 6278, 6292, 6318, 6320, 6322, 6324, 6331, 6340, - 6341, 6344, 6351, 6358, 6365, 6379, 6387, 6395, 6403, 6411, - 6419, 6427, 6435, 6443, 6451, 6459, 6467, 6475, 6483, 6491, - 6499, 6511, 6512, 6516, 6517, 6522, 6523, 6527, 6528, 6533, - 6549, 6562, 6572, 6584, 6585, 6588, 6589, 6599, 6609, 6610, - 6614, 6618, 6622, 6633, 6646, 6660, 6677, 6678, 6679, 6680, - 6692, 6718, 6747, 6748, 6752, 6753, 6757, 6758, 6762, 6763, - 6766, 6767, 6775, 6786, 6797, 6810, 6811, 6814, 6815, 6818, - 6819, 6820, 6823, 6824, 6825, 6841, 6853, 6866, 6881, 6882, - 6885, 6886, 6890, 6891, 6899, 6900, 6904, 6905, 6920, 6929, - 6938, 6947, 6956, 6968, 6969, 6970, 6971, 6972, 6978, 6982, - 6997, 6998, 7004, 7014, 7018, 7023, 7031, 7072, 7076, 7080, - 7084, 7092, 7093, 7098, 7099, 7106, 7110, 7114, 7118, 7122, - 7126, 7130, 7134, 7138, 7142, 7146, 7150, 7154, 7158, 7162, - 7167, 7174, 7178, 7182, 7186, 7190, 7196, 7197, 7204, 7205, - 7209, 7210, 7213, 7225, 7229, 7244, 7255, 7256, 7261, 7262, - 7277, 7288, 7302, 7313, 7327, 7338, 7352, 7360, 7362, 7364, - 7369, 7371, 7384, 7393, 7394, 7398, 7402, 7414, 7425, 7436, - 7449, 7450, 7451, 7455, 7468, 7469, 7479, 7491, 7495, 7499, - 7503, 7510, 7531, 7540, 7549, 7558, 7569, 7570, 7573, 7574, - 7575, 7578, 7579, 7582, 7592, 7601, 7618, 7628, 7637, 7646, - 7655, 7664, 7673, 7682, 7692, 7701, 7710, 7719, 7728, 7738, - 7748, 7757, 7766, 7776, 7786, 7796, 7806, 7816, 7826, 7836, - 7846, 7856, 7866, 7876, 7886, 7897, 7908, 7919, 7930, 7940, - 7950, 7961, 7972, 7982, 7992, 8000, 8009, 8018, 8027, 8036, - 8045, 8054, 8063, 8072, 8086, 8087, 8090, 8091, 8101, 8111, - 8121, 8131, 8150, 8160, 8169, 8178, 8187, 8196, 8206, 8216, - 8225, 8234, 8243, 8252, 8261, 8270, 8279, 8288, 8297, 8306, - 8315, 8324, 8333, 8342, 8351, 8360, 8378, 8388, 8389, 8392, - 8394, 8404, 8413, 8421, 8429, 8437, 8445, 8454, 8462, 8470, - 8479, 8487, 8495, 8503, 8511, 8519, 8527, 8535, 8543, 8551, - 8568, 8585, 8586, 8587, 8592, 8598, 8607, 8608, 8609, 8610, - 8611, 8615, 8616, 8619, 8620, 8621, 8622, 8626, 8627, 8628, - 8633, 8644, 8666, 8676, 8677, 8680, 8689, 8695, 8714, 8721, - 8728, 8735, 8742, 8749, 8756, 8764, 8772, 8780, 8788, 8796, - 8803, 8810, 8819, 8820, 8821, 8825, 8828, 8831, 8834, 8837, - 8844, 8846, 8848, 8853, 8855, 8867, 8880, 8893, 8911, 8932, - 8933, 8934, 8935, 8945, 8961, 8971, 8972, 8976, 8977, 8981, - 8985, 8989, 9007, 9008, 9009, 9010, 9011, 9012, 9013, 9020, - 9021, 9032, 9039, 9046, 9057, 9074, 9081, 9099, 9105, 9121, - 9134, 9143, 9151, 9159, 9168, 9179, 9190, 9200, 9201, 9212, - 9222, 9233, 9244, 9255, 9266, 9275, 9287, 9288, 9302, 9325, - 9333, 9342, 9353, 9354, 9366, 9380, 9394, 9406, 9414, 9427, - 9428, 9432, 9433, 9434, 9435, 9436, 9449, 9459, 9472, 9473, - 9477, 9478, 9481, 9482, 9485, 9486, 9490, 9491, 9504, 9511, - 9521, 9528, 9538, 9539, 9540, 9541, 9542, 9543, 9544, 9545, - 9546, 9550, 9554, 9561, 9568, 9569, 9573, 9574, 9575, 9585, - 9595, 9596, 9600, 9601, 9602, 9603, 9613, 9620, 9638, 9639, - 9649, 9655, 9661, 9667, 9683, 9701, 9705, 9713, 9719, 9725, - 9734, 9736, 9741, 9752, 9762, 9772, 9778, 9787, 9796, 9802, - 9803, 9814, 9828, 9829, 9840, 9851, 9852, 9855, 9856, 9857, - 9858, 9859, 9860, 9861, 9862, 9865, 9866, 9870, 9871, 9872, - 9883, 9901, 9902, 9906, 9907, 9911, 9927, 9953, 9986, 9997, - 9998, 10008, 10019, 10022, 10023, 10024, 10025, 10026, 10029, 10030, - 10031, 10079, 10080, 10084, 10085, 10100, 10101, 10108, 10116, 10124, - 10132, 10140, 10148, 10159, 10160, 10187, 10201, 10216, 10217, 10236, - 10240, 10244, 10261, 10268, 10275, 10285, 10286, 10289, 10301, 10302, - 10306, 10318, 10326, 10331, 10336, 10341, 10346, 10354, 10362, 10367, - 10372, 10379, 10380, 10384, 10385, 10386, 10393, 10394, 10398, 10399, - 10403, 10404, 10408, 10412, 10413, 10416, 10425, 10438, 10439, 10440, - 10441, 10445, 10446, 10450, 10452, 10462, 10467, 10470, 10475, 10476, - 10484, 10494, 10495, 10496, 10504, 10508, 10509, 10512, 10513, 10538, - 10539, 10543, 10544, 10548, 10549, 10550, 10551, 10552, 10556, 10569, - 10576, 10583, 10590, 10591, 10595, 10596, 10600, 10601, 10605, 10606, - 10610, 10621, 10622, 10623, 10624, 10628, 10629, 10634, 10640, 10658, - 10659, 10663, 10664, 10670, 10675, 10683, 10690, 10698, 10733, 10758, - 10762, 10788, 10792, 10804, 10817, 10831, 10842, 10857, 10863, 10868, - 10874, 10881, 10882, 10890, 10894, 10898, 10904, 10911, 10916, 10917, - 10918, 10919, 10923, 10924, 10936, 10937, 10942, 10949, 10956, 10963, - 10974, 10975, 10988, 10992, 10999, 11012, 11025, 11026, 11041, 11051, - 11063, 11068, 11069, 11072, 11073, 11076, 11077, 11082, 11083, 11088, - 11089, 11097, 11102, 11103, 11107, 11111, 11117, 11147, 11152, 11159, - 11164, 11170, 11175, 11184, 11186, 11189, 11193, 11194, 11195, 11196, - 11197, 11198, 11203, 11223, 11224, 11225, 11226, 11237, 11243, 11251, - 11252, 11258, 11263, 11268, 11273, 11278, 11283, 11288, 11293, 11299, - 11305, 11311, 11318, 11340, 11349, 11353, 11361, 11365, 11373, 11385, - 11406, 11410, 11416, 11420, 11433, 11444, 11459, 11461, 11463, 11465, - 11467, 11469, 11474, 11475, 11479, 11480, 11487, 11496, 11504, 11513, - 11524, 11532, 11533, 11534, 11538, 11540, 11542, 11544, 11546, 11548, - 11550, 11555, 11560, 11566, 11574, 11579, 11586, 11593, 11597, 11601, - 11637, 11638, 11640, 11648, 11663, 11665, 11667, 11669, 11671, 11673, - 11675, 11677, 11679, 11681, 11683, 11685, 11687, 11689, 11692, 11694, - 11696, 11699, 11701, 11703, 11705, 11708, 11713, 11721, 11726, 11734, - 11739, 11747, 11752, 11761, 11769, 11777, 11785, 11803, 11811, 11819, - 11827, 11835, 11851, 11859, 11867, 11875, 11883, 11891, 11899, 11903, - 11907, 11911, 11915, 11923, 11931, 11939, 11947, 11967, 11989, 12000, - 12007, 12023, 12028, 12045, 12047, 12049, 12051, 12053, 12055, 12057, - 12059, 12061, 12063, 12065, 12067, 12069, 12071, 12073, 12075, 12077, - 12079, 12081, 12083, 12087, 12091, 12095, 12099, 12104, 12120, 12121, - 12122, 12137, 12167, 12169, 12171, 12182, 12206, 12217, 12228, 12236, - 12246, 12256, 12265, 12269, 12275, 12282, 12289, 12299, 12306, 12334, - 12369, 12380, 12381, 12388, 12394, 12420, 12430, 12443, 12451, 12464, - 12474, 12487, 12497, 12510, 12514, 12518, 12522, 12526, 12530, 12534, - 12536, 12540, 12549, 12554, 12561, 12576, 12583, 12587, 12591, 12595, - 12599, 12606, 12614, 12622, 12626, 12630, 12634, 12638, 12642, 12648, - 12652, 12661, 12665, 12669, 12674, 12688, 12690, 12694, 12696, 12698, - 12701, 12704, 12707, 12708, 12711, 12719, 12729, 12730, 12733, 12734, - 12735, 12740, 12744, 12748, 12752, 12763, 12764, 12768, 12769, 12777, - 12778, 12782, 12783, 12788, 12796, 12798, 12812, 12815, 12842, 12843, - 12846, 12847, 12858, 12876, 12883, 12892, 12909, 12954, 12962, 12970, - 12978, 12986, 13007, 13008, 13009, 13012, 13013, 13016, 13019, 13020, - 13021, 13024, 13025, 13028, 13029, 13030, 13031, 13032, 13033, 13034, - 13035, 13036, 13037, 13038, 13039, 13042, 13044, 13049, 13051, 13056, - 13058, 13060, 13062, 13064, 13066, 13078, 13082, 13089, 13093, 13099, - 13103, 13112, 13123, 13124, 13127, 13131, 13135, 13141, 13142, 13147, - 13151, 13158, 13159, 13160, 13161, 13162, 13163, 13164, 13165, 13175, - 13179, 13186, 13193, 13194, 13210, 13214, 13219, 13223, 13238, 13243, - 13247, 13250, 13253, 13254, 13255, 13258, 13265, 13275, 13289, 13290, - 13294, 13305, 13306, 13309, 13310, 13313, 13317, 13324, 13328, 13332, - 13340, 13351, 13352, 13356, 13357, 13361, 13362, 13365, 13366, 13377, - 13378, 13387, 13388, 13396, 13406, 13407, 13411, 13412, 13415, 13431, - 13439, 13447, 13469, 13470, 13481, 13485, 13512, 13514, 13519, 13522, - 13525, 13527, 13529, 13531, 13541, 13543, 13554, 13558, 13562, 13566, - 13570, 13579, 13586, 13618, 13622, 13628, 13635, 13639, 13643, 13649, - 13650, 13652, 13653, 13654, 13658, 13688, 13715, 13719, 13725, 13727, - 13744, 13745, 13746, 13751, 13752, 13753, 13758, 13759, 13760, 13761, - 13767, 13768, 13769, 13770, 13771, 13791, 13792, 13793, 13794, 13795, - 13796, 13797, 13798, 13799, 13800, 13801, 13802, 13803, 13804, 13805, - 13806, 13807, 13808, 13809, 13810, 13811, 13812, 13813, 13814, 13815, - 13816, 13817, 13818, 13819, 13820, 13821, 13822, 13823, 13824, 13825, - 13826, 13827, 13828, 13829, 13830, 13831, 13832, 13833, 13834, 13835, - 13836, 13837, 13838, 13839, 13840, 13841, 13842, 13843, 13844, 13845, - 13846, 13847, 13848, 13849, 13850, 13851, 13852, 13853, 13854, 13855, - 13856, 13857, 13858, 13859, 13860, 13861, 13862, 13863, 13864, 13865, - 13866, 13867, 13868, 13869, 13870, 13871, 13872, 13873, 13874, 13875, - 13876, 13877, 13878, 13879, 13880, 13881, 13882, 13883, 13884, 13885, - 13886, 13887, 13888, 13889, 13890, 13891, 13892, 13893, 13894, 13895, - 13896, 13897, 13898, 13899, 13900, 13901, 13902, 13903, 13904, 13905, - 13906, 13907, 13908, 13909, 13910, 13911, 13912, 13913, 13914, 13915, - 13916, 13917, 13918, 13919, 13920, 13921, 13922, 13923, 13924, 13925, - 13926, 13927, 13928, 13929, 13930, 13931, 13932, 13933, 13934, 13935, - 13936, 13937, 13938, 13939, 13940, 13941, 13942, 13943, 13944, 13945, - 13946, 13947, 13948, 13949, 13950, 13951, 13952, 13953, 13954, 13955, - 13956, 13957, 13958, 13959, 13960, 13961, 13962, 13963, 13964, 13965, - 13966, 13967, 13968, 13969, 13970, 13971, 13972, 13973, 13974, 13975, - 13976, 13977, 13978, 13979, 13980, 13981, 13982, 13983, 13984, 13985, - 13986, 13987, 13988, 13989, 13990, 13991, 13992, 13993, 13994, 13995, - 13996, 13997, 13998, 13999, 14000, 14001, 14002, 14003, 14004, 14005, - 14006, 14007, 14008, 14009, 14010, 14011, 14012, 14013, 14014, 14015, - 14016, 14017, 14018, 14019, 14020, 14021, 14022, 14023, 14024, 14025, - 14026, 14027, 14028, 14029, 14030, 14031, 14032, 14033, 14034, 14035, - 14036, 14037, 14038, 14039, 14040, 14041, 14042, 14043, 14044, 14045, - 14046, 14047, 14048, 14049, 14050, 14051, 14052, 14053, 14054, 14055, - 14056, 14057, 14058, 14059, 14060, 14061, 14075, 14076, 14077, 14078, - 14079, 14080, 14081, 14082, 14083, 14084, 14085, 14086, 14087, 14088, - 14089, 14090, 14091, 14092, 14093, 14094, 14095, 14096, 14097, 14098, - 14099, 14100, 14101, 14102, 14103, 14104, 14105, 14106, 14107, 14108, - 14109, 14110, 14111, 14112, 14113, 14114, 14115, 14116, 14117, 14118, - 14119, 14120, 14121, 14122, 14136, 14137, 14138, 14139, 14140, 14141, - 14142, 14143, 14144, 14145, 14146, 14147, 14148, 14149, 14150, 14151, - 14152, 14153, 14154, 14155, 14156, 14157, 14158, 14168, 14169, 14170, - 14171, 14172, 14173, 14174, 14175, 14176, 14177, 14178, 14179, 14180, - 14181, 14182, 14183, 14184, 14185, 14186, 14187, 14188, 14189, 14190, - 14191, 14192, 14193, 14194, 14195, 14196, 14197, 14198, 14199, 14200, - 14201, 14202, 14203, 14204, 14205, 14206, 14207, 14208, 14209, 14210, - 14211, 14212, 14213, 14214, 14215, 14216, 14217, 14218, 14219, 14220, - 14221, 14222, 14223, 14224, 14225, 14226, 14227, 14228, 14229, 14230, - 14231, 14232, 14233, 14234, 14235, 14236, 14237, 14238, 14239, 14240, - 14241, 14242, 14243, 14244 + 0, 812, 812, 828, 840, 850, 851, 852, 853, 854, + 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, + 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, + 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, + 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, + 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, + 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, + 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, + 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, + 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, + 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, + 965, 966, 967, 968, 969, 970, 971, 972, 974, 984, + 995, 996, 997, 1006, 1007, 1011, 1012, 1016, 1021, 1025, + 1035, 1043, 1047, 1051, 1056, 1060, 1108, 1110, 1114, 1118, + 1122, 1126, 1140, 1158, 1166, 1177, 1178, 1182, 1190, 1198, + 1206, 1227, 1234, 1241, 1248, 1255, 1262, 1279, 1297, 1308, + 1309, 1320, 1330, 1340, 1355, 1373, 1374, 1378, 1385, 1393, + 1394, 1395, 1396, 1397, 1398, 1412, 1419, 1425, 1431, 1440, + 1448, 1456, 1460, 1468, 1476, 1483, 1492, 1493, 1501, 1512, + 1520, 1528, 1539, 1547, 1555, 1562, 1571, 1581, 1582, 1586, + 1587, 1590, 1592, 1596, 1597, 1598, 1599, 1603, 1604, 1605, + 1611, 1623, 1627, 1631, 1646, 1653, 1654, 1655, 1659, 1660, + 1661, 1665, 1666, 1670, 1671, 1680, 1681, 1688, 1695, 1705, + 1712, 1722, 1723, 1728, 1729, 1735, 1741, 1747, 1753, 1759, + 1765, 1771, 1781, 1791, 1792, 1796, 1797, 1805, 1820, 1826, + 1832, 1838, 1844, 1863, 1872, 1881, 1890, 1899, 1910, 1921, + 1930, 1939, 1950, 1961, 1970, 1979, 1988, 1997, 2006, 2015, + 2026, 2040, 2041, 2046, 2059, 2075, 2084, 2093, 2102, 2111, + 2120, 2128, 2136, 2145, 2154, 2163, 2172, 2189, 2198, 2207, + 2216, 2226, 2239, 2254, 2263, 2272, 2287, 2295, 2305, 2315, + 2322, 2329, 2337, 2345, 2352, 2359, 2367, 2375, 2383, 2390, + 2397, 2405, 2412, 2419, 2427, 2435, 2443, 2451, 2459, 2467, + 2477, 2484, 2492, 2500, 2508, 2516, 2524, 2531, 2538, 2545, + 2551, 2561, 2562, 2566, 2567, 2568, 2572, 2580, 2584, 2585, + 2589, 2596, 2603, 2610, 2620, 2623, 2624, 2628, 2629, 2634, + 2638, 2642, 2647, 2654, 2656, 2661, 2665, 2669, 2680, 2688, + 2700, 2714, 2715, 2716, 2720, 2721, 2726, 2727, 2732, 2742, + 2752, 2772, 2785, 2786, 2791, 2800, 2810, 2820, 2846, 2852, + 2885, 2914, 2936, 2937, 2941, 2942, 2951, 2952, 2953, 2956, + 2957, 2962, 2963, 2967, 2971, 2975, 2979, 2983, 2987, 2991, + 2995, 2999, 3003, 3007, 3011, 3015, 3019, 3028, 3032, 3036, + 3040, 3044, 3048, 3052, 3053, 3058, 3062, 3069, 3076, 3077, + 3078, 3079, 3080, 3084, 3088, 3096, 3107, 3124, 3142, 3161, + 3180, 3199, 3231, 3232, 3233, 3234, 3235, 3242, 3249, 3250, + 3254, 3255, 3259, 3260, 3264, 3268, 3275, 3279, 3286, 3287, + 3288, 3292, 3293, 3296, 3318, 3337, 3359, 3360, 3364, 3371, + 3372, 3373, 3404, 3411, 3418, 3429, 3440, 3452, 3463, 3472, + 3490, 3491, 3510, 3517, 3524, 3531, 3542, 3552, 3553, 3554, + 3558, 3559, 3560, 3561, 3562, 3563, 3564, 3573, 3580, 3584, + 3597, 3612, 3626, 3641, 3655, 3673, 3694, 3695, 3699, 3700, + 3704, 3705, 3708, 3714, 3718, 3726, 3731, 3737, 3738, 3742, + 3747, 3754, 3755, 3765, 3767, 3769, 3771, 3774, 3777, 3780, + 3784, 3785, 3786, 3787, 3788, 3791, 3792, 3796, 3797, 3800, + 3812, 3813, 3816, 3817, 3820, 3831, 3842, 3856, 3857, 3858, + 3859, 3862, 3863, 3864, 3865, 3868, 3869, 3872, 3873, 3876, + 3894, 3905, 3929, 3942, 3958, 3972, 3973, 3974, 3986, 3999, + 4015, 4028, 4029, 4041, 4061, 4071, 4084, 4092, 4103, 4104, + 4107, 4108, 4111, 4112, 4115, 4119, 4123, 4127, 4131, 4135, + 4139, 4143, 4147, 4151, 4155, 4160, 4164, 4168, 4174, 4175, + 4179, 4180, 4181, 4186, 4189, 4190, 4202, 4214, 4229, 4230, + 4238, 4239, 4243, 4244, 4248, 4249, 4253, 4254, 4258, 4268, + 4281, 4282, 4292, 4303, 4304, 4317, 4324, 4341, 4349, 4360, + 4363, 4367, 4371, 4375, 4379, 4391, 4401, 4404, 4408, 4421, + 4430, 4439, 4448, 4457, 4466, 4475, 4484, 4493, 4502, 4511, + 4520, 4529, 4538, 4547, 4556, 4565, 4574, 4583, 4592, 4601, + 4610, 4619, 4628, 4637, 4646, 4664, 4675, 4676, 4677, 4678, + 4682, 4683, 4687, 4688, 4698, 4706, 4718, 4719, 4723, 4727, + 4735, 4739, 4743, 4750, 4754, 4759, 4764, 4771, 4778, 4783, + 4793, 4805, 4820, 4821, 4826, 4827, 4831, 4832, 4842, 4851, + 4859, 4876, 4896, 4916, 4937, 4968, 4977, 4998, 5013, 5014, + 5018, 5026, 5041, 5050, 5062, 5063, 5075, 5083, 5100, 5124, + 5141, 5155, 5156, 5160, 5161, 5165, 5166, 5170, 5171, 5175, + 5189, 5193, 5194, 5198, 5199, 5200, 5201, 5202, 5212, 5230, + 5251, 5277, 5278, 5279, 5283, 5285, 5307, 5309, 5311, 5313, + 5315, 5320, 5321, 5325, 5326, 5330, 5341, 5342, 5346, 5355, + 5359, 5363, 5368, 5378, 5379, 5383, 5384, 5388, 5389, 5393, + 5394, 5395, 5399, 5403, 5404, 5405, 5409, 5410, 5415, 5416, + 5443, 5444, 5445, 5446, 5447, 5448, 5461, 5471, 5485, 5487, + 5492, 5497, 5499, 5504, 5514, 5515, 5516, 5517, 5529, 5549, + 5571, 5581, 5592, 5602, 5612, 5623, 5632, 5639, 5646, 5655, + 5664, 5673, 5682, 5691, 5701, 5710, 5722, 5725, 5726, 5729, + 5733, 5740, 5741, 5742, 5743, 5744, 5745, 5748, 5751, 5752, + 5760, 5767, 5768, 5771, 5773, 5784, 5795, 5806, 5817, 5830, + 5831, 5847, 5862, 5863, 5867, 5879, 5889, 5897, 5906, 5915, + 5916, 5919, 5920, 5923, 5924, 5925, 5928, 5942, 5947, 5957, + 5966, 5978, 5979, 5983, 5991, 6003, 6013, 6026, 6036, 6058, + 6068, 6086, 6096, 6106, 6116, 6126, 6136, 6146, 6156, 6166, + 6176, 6186, 6196, 6210, 6211, 6212, 6213, 6214, 6215, 6216, + 6217, 6218, 6219, 6220, 6221, 6222, 6227, 6228, 6229, 6230, + 6231, 6232, 6233, 6238, 6239, 6240, 6244, 6245, 6248, 6249, + 6252, 6254, 6259, 6260, 6270, 6281, 6282, 6283, 6317, 6325, + 6333, 6341, 6349, 6357, 6365, 6373, 6381, 6394, 6402, 6410, + 6418, 6426, 6434, 6442, 6450, 6462, 6463, 6464, 6465, 6466, + 6467, 6468, 6469, 6470, 6471, 6472, 6473, 6474, 6475, 6480, + 6481, 6482, 6483, 6484, 6485, 6486, 6487, 6488, 6489, 6490, + 6491, 6495, 6496, 6510, 6520, 6530, 6540, 6550, 6560, 6570, + 6582, 6583, 6588, 6589, 6590, 6591, 6592, 6593, 6598, 6599, + 6600, 6601, 6602, 6603, 6604, 6605, 6608, 6609, 6619, 6625, + 6633, 6641, 6649, 6657, 6665, 6673, 6681, 6689, 6697, 6705, + 6713, 6721, 6729, 6737, 6745, 6753, 6763, 6764, 6767, 6768, + 6778, 6794, 6808, 6834, 6836, 6838, 6840, 6847, 6856, 6857, + 6860, 6867, 6874, 6881, 6895, 6903, 6911, 6919, 6927, 6935, + 6943, 6951, 6959, 6967, 6975, 6983, 6991, 6999, 7007, 7015, + 7027, 7028, 7032, 7033, 7038, 7039, 7049, 7062, 7072, 7084, + 7085, 7088, 7089, 7099, 7109, 7110, 7114, 7118, 7122, 7133, + 7146, 7160, 7177, 7178, 7179, 7180, 7181, 7193, 7219, 7248, + 7249, 7253, 7254, 7258, 7259, 7263, 7264, 7267, 7268, 7276, + 7287, 7298, 7311, 7312, 7315, 7316, 7319, 7320, 7321, 7324, + 7325, 7326, 7342, 7354, 7367, 7382, 7383, 7386, 7387, 7391, + 7392, 7396, 7397, 7402, 7414, 7421, 7428, 7443, 7444, 7448, + 7449, 7464, 7473, 7482, 7491, 7500, 7512, 7513, 7514, 7515, + 7516, 7522, 7526, 7541, 7542, 7548, 7558, 7562, 7567, 7575, + 7616, 7620, 7624, 7628, 7636, 7637, 7641, 7651, 7652, 7658, + 7659, 7666, 7670, 7674, 7678, 7682, 7686, 7690, 7694, 7698, + 7702, 7706, 7710, 7714, 7718, 7722, 7727, 7734, 7738, 7742, + 7746, 7750, 7756, 7757, 7764, 7765, 7769, 7770, 7773, 7785, + 7789, 7804, 7815, 7816, 7821, 7822, 7837, 7847, 7860, 7870, + 7883, 7893, 7906, 7914, 7916, 7918, 7923, 7925, 7930, 7931, + 7936, 7954, 7963, 7964, 7968, 7972, 7984, 7995, 8006, 8019, + 8020, 8021, 8025, 8037, 8038, 8048, 8060, 8064, 8068, 8072, + 8079, 8099, 8108, 8117, 8126, 8137, 8138, 8141, 8142, 8143, + 8146, 8147, 8150, 8160, 8169, 8186, 8195, 8204, 8213, 8222, + 8231, 8240, 8249, 8258, 8267, 8276, 8285, 8294, 8304, 8314, + 8323, 8332, 8341, 8350, 8360, 8370, 8380, 8390, 8400, 8410, + 8420, 8430, 8440, 8450, 8460, 8470, 8481, 8492, 8503, 8514, + 8524, 8534, 8545, 8556, 8566, 8576, 8584, 8593, 8602, 8611, + 8620, 8629, 8638, 8647, 8656, 8665, 8679, 8680, 8683, 8684, + 8694, 8702, 8711, 8719, 8736, 8745, 8754, 8763, 8772, 8781, + 8790, 8799, 8808, 8817, 8826, 8835, 8844, 8853, 8862, 8871, + 8880, 8889, 8898, 8907, 8916, 8925, 8934, 8943, 8952, 8970, + 8979, 8980, 8983, 8985, 8991, 8992, 8993, 8994, 8995, 9004, + 9012, 9020, 9028, 9036, 9044, 9052, 9060, 9068, 9076, 9084, + 9092, 9100, 9108, 9116, 9124, 9132, 9140, 9148, 9156, 9164, + 9172, 9190, 9209, 9210, 9214, 9218, 9238, 9245, 9253, 9261, + 9278, 9291, 9295, 9302, 9311, 9320, 9329, 9338, 9348, 9358, + 9376, 9384, 9400, 9417, 9418, 9419, 9424, 9430, 9439, 9440, + 9441, 9442, 9443, 9447, 9448, 9451, 9452, 9453, 9454, 9458, + 9459, 9460, 9472, 9482, 9483, 9486, 9495, 9501, 9520, 9527, + 9534, 9541, 9548, 9555, 9562, 9570, 9578, 9586, 9594, 9602, + 9609, 9616, 9625, 9626, 9627, 9631, 9634, 9637, 9640, 9643, + 9650, 9652, 9654, 9659, 9661, 9673, 9686, 9699, 9717, 9738, + 9739, 9740, 9741, 9751, 9767, 9777, 9778, 9782, 9783, 9787, + 9791, 9795, 9813, 9814, 9815, 9816, 9817, 9818, 9819, 9826, + 9827, 9838, 9845, 9852, 9863, 9880, 9887, 9903, 9920, 9926, + 9942, 9955, 9964, 9972, 9980, 9989, 10000, 10011, 10021, 10022, + 10033, 10043, 10054, 10065, 10076, 10087, 10096, 10108, 10109, 10123, + 10146, 10154, 10163, 10174, 10175, 10187, 10201, 10215, 10227, 10235, + 10248, 10249, 10253, 10254, 10255, 10256, 10257, 10270, 10280, 10293, + 10294, 10298, 10299, 10302, 10303, 10306, 10307, 10311, 10312, 10325, + 10332, 10342, 10349, 10359, 10360, 10361, 10362, 10363, 10364, 10365, + 10366, 10367, 10371, 10375, 10382, 10389, 10390, 10394, 10395, 10396, + 10406, 10416, 10417, 10421, 10422, 10423, 10424, 10434, 10441, 10459, + 10460, 10470, 10476, 10482, 10488, 10504, 10522, 10526, 10534, 10540, + 10547, 10553, 10560, 10569, 10570, 10574, 10576, 10581, 10592, 10602, + 10612, 10618, 10627, 10636, 10642, 10643, 10654, 10668, 10669, 10680, + 10691, 10692, 10695, 10696, 10697, 10698, 10699, 10700, 10701, 10702, + 10705, 10706, 10710, 10711, 10712, 10723, 10741, 10742, 10746, 10751, + 10775, 10786, 10787, 10797, 10808, 10811, 10812, 10813, 10814, 10815, + 10818, 10819, 10820, 10868, 10869, 10873, 10874, 10889, 10890, 10897, + 10905, 10913, 10921, 10929, 10937, 10948, 10949, 10976, 10990, 11005, + 11006, 11025, 11029, 11033, 11050, 11057, 11064, 11074, 11075, 11078, + 11090, 11091, 11095, 11107, 11115, 11120, 11125, 11130, 11135, 11143, + 11151, 11156, 11161, 11168, 11169, 11173, 11174, 11175, 11182, 11183, + 11187, 11188, 11192, 11193, 11197, 11201, 11202, 11205, 11214, 11227, + 11228, 11229, 11230, 11234, 11235, 11239, 11241, 11251, 11256, 11259, + 11264, 11265, 11273, 11283, 11284, 11285, 11293, 11297, 11298, 11301, + 11302, 11327, 11328, 11332, 11333, 11337, 11338, 11339, 11340, 11341, + 11345, 11358, 11365, 11372, 11379, 11380, 11384, 11385, 11389, 11390, + 11394, 11395, 11399, 11410, 11411, 11412, 11413, 11417, 11418, 11428, + 11434, 11452, 11453, 11457, 11458, 11464, 11469, 11477, 11484, 11492, + 11498, 11505, 11540, 11565, 11569, 11595, 11599, 11611, 11624, 11638, + 11649, 11664, 11670, 11675, 11681, 11688, 11689, 11697, 11701, 11705, + 11711, 11718, 11723, 11724, 11725, 11726, 11730, 11731, 11743, 11744, + 11749, 11756, 11763, 11770, 11781, 11782, 11795, 11799, 11806, 11819, + 11832, 11833, 11848, 11858, 11870, 11875, 11876, 11879, 11880, 11883, + 11884, 11889, 11890, 11895, 11896, 11904, 11909, 11910, 11914, 11918, + 11924, 11949, 11959, 11972, 11973, 11977, 11991, 12048, 12062, 12064, + 12069, 12071, 12073, 12075, 12080, 12082, 12087, 12095, 12115, 12120, + 12127, 12132, 12138, 12143, 12152, 12154, 12157, 12161, 12162, 12163, + 12164, 12165, 12166, 12171, 12191, 12192, 12193, 12194, 12205, 12211, + 12219, 12220, 12226, 12231, 12236, 12241, 12246, 12251, 12256, 12261, + 12267, 12273, 12279, 12286, 12308, 12317, 12321, 12329, 12333, 12341, + 12353, 12374, 12378, 12384, 12388, 12401, 12409, 12419, 12421, 12423, + 12425, 12427, 12429, 12434, 12435, 12442, 12451, 12459, 12468, 12479, + 12487, 12488, 12489, 12493, 12495, 12497, 12499, 12501, 12503, 12505, + 12510, 12515, 12521, 12529, 12534, 12541, 12548, 12552, 12556, 12592, + 12593, 12595, 12603, 12618, 12620, 12622, 12624, 12626, 12628, 12630, + 12632, 12634, 12636, 12638, 12640, 12642, 12644, 12647, 12649, 12651, + 12654, 12656, 12658, 12660, 12663, 12668, 12676, 12681, 12689, 12694, + 12702, 12707, 12716, 12724, 12732, 12740, 12758, 12766, 12774, 12782, + 12790, 12806, 12814, 12822, 12830, 12838, 12846, 12854, 12858, 12862, + 12866, 12870, 12878, 12886, 12894, 12902, 12922, 12944, 12955, 12962, + 12978, 12983, 12989, 13014, 13016, 13018, 13020, 13022, 13024, 13026, + 13028, 13030, 13032, 13034, 13036, 13038, 13040, 13042, 13044, 13046, + 13048, 13050, 13052, 13056, 13060, 13064, 13068, 13073, 13089, 13090, + 13091, 13106, 13140, 13142, 13144, 13155, 13179, 13190, 13201, 13208, + 13218, 13228, 13237, 13241, 13247, 13254, 13261, 13271, 13278, 13306, + 13341, 13352, 13353, 13360, 13366, 13370, 13374, 13378, 13382, 13386, + 13390, 13394, 13398, 13402, 13406, 13410, 13414, 13418, 13422, 13426, + 13428, 13432, 13441, 13446, 13453, 13468, 13475, 13479, 13483, 13487, + 13491, 13498, 13506, 13514, 13518, 13522, 13526, 13530, 13534, 13540, + 13544, 13553, 13557, 13561, 13566, 13580, 13582, 13586, 13588, 13590, + 13593, 13596, 13599, 13600, 13603, 13611, 13621, 13622, 13625, 13626, + 13627, 13632, 13636, 13640, 13644, 13655, 13656, 13660, 13661, 13669, + 13670, 13674, 13675, 13680, 13688, 13690, 13704, 13707, 13734, 13735, + 13738, 13739, 13750, 13768, 13775, 13784, 13801, 13846, 13854, 13862, + 13870, 13878, 13899, 13900, 13901, 13904, 13905, 13908, 13911, 13912, + 13913, 13916, 13917, 13920, 13921, 13922, 13923, 13924, 13925, 13926, + 13927, 13928, 13929, 13930, 13931, 13934, 13936, 13941, 13943, 13948, + 13950, 13952, 13954, 13956, 13958, 13970, 13974, 13981, 13985, 13991, + 13995, 14004, 14015, 14016, 14019, 14023, 14027, 14033, 14034, 14039, + 14043, 14050, 14051, 14052, 14053, 14054, 14055, 14056, 14057, 14067, + 14071, 14078, 14085, 14086, 14102, 14106, 14111, 14115, 14130, 14135, + 14139, 14142, 14145, 14146, 14147, 14150, 14157, 14167, 14181, 14182, + 14186, 14197, 14198, 14201, 14202, 14205, 14209, 14216, 14220, 14224, + 14232, 14243, 14244, 14248, 14249, 14253, 14254, 14257, 14258, 14268, + 14269, 14273, 14274, 14277, 14293, 14301, 14309, 14331, 14332, 14343, + 14347, 14374, 14376, 14381, 14384, 14387, 14389, 14391, 14393, 14403, + 14405, 14416, 14420, 14424, 14428, 14432, 14441, 14448, 14480, 14484, + 14490, 14497, 14501, 14505, 14511, 14512, 14514, 14515, 14516, 14520, + 14550, 14577, 14581, 14587, 14589, 14606, 14607, 14608, 14613, 14614, + 14615, 14620, 14621, 14622, 14623, 14629, 14630, 14631, 14632, 14633, + 14653, 14654, 14655, 14656, 14657, 14658, 14659, 14660, 14661, 14662, + 14663, 14664, 14665, 14666, 14667, 14668, 14669, 14670, 14671, 14672, + 14673, 14674, 14675, 14676, 14677, 14678, 14679, 14680, 14681, 14682, + 14683, 14684, 14685, 14686, 14687, 14688, 14689, 14690, 14691, 14692, + 14693, 14694, 14695, 14696, 14697, 14698, 14699, 14700, 14701, 14702, + 14703, 14704, 14705, 14706, 14707, 14708, 14709, 14710, 14711, 14712, + 14713, 14714, 14715, 14716, 14717, 14718, 14719, 14720, 14721, 14722, + 14723, 14724, 14725, 14726, 14727, 14728, 14729, 14730, 14731, 14732, + 14733, 14734, 14735, 14736, 14737, 14738, 14739, 14740, 14741, 14742, + 14743, 14744, 14745, 14746, 14747, 14748, 14749, 14750, 14751, 14752, + 14753, 14754, 14755, 14756, 14757, 14758, 14759, 14760, 14761, 14762, + 14763, 14764, 14765, 14766, 14767, 14768, 14769, 14770, 14771, 14772, + 14773, 14774, 14775, 14776, 14777, 14778, 14779, 14780, 14781, 14782, + 14783, 14784, 14785, 14786, 14787, 14788, 14789, 14790, 14791, 14792, + 14793, 14794, 14795, 14796, 14797, 14798, 14799, 14800, 14801, 14802, + 14803, 14804, 14805, 14806, 14807, 14808, 14809, 14810, 14811, 14812, + 14813, 14814, 14815, 14816, 14817, 14818, 14819, 14820, 14821, 14822, + 14823, 14824, 14825, 14826, 14827, 14828, 14829, 14830, 14831, 14832, + 14833, 14834, 14835, 14836, 14837, 14838, 14839, 14840, 14841, 14842, + 14843, 14844, 14845, 14846, 14847, 14848, 14849, 14850, 14851, 14852, + 14853, 14854, 14855, 14856, 14857, 14858, 14859, 14860, 14861, 14862, + 14863, 14864, 14865, 14866, 14867, 14868, 14869, 14870, 14871, 14872, + 14873, 14874, 14875, 14876, 14877, 14878, 14879, 14880, 14881, 14882, + 14883, 14884, 14885, 14886, 14887, 14888, 14889, 14890, 14891, 14892, + 14893, 14894, 14895, 14896, 14897, 14898, 14899, 14900, 14901, 14902, + 14903, 14904, 14905, 14906, 14907, 14908, 14909, 14910, 14911, 14912, + 14913, 14914, 14915, 14916, 14917, 14918, 14919, 14920, 14921, 14922, + 14923, 14924, 14925, 14926, 14927, 14928, 14929, 14930, 14931, 14932, + 14933, 14934, 14948, 14949, 14950, 14951, 14952, 14953, 14954, 14955, + 14956, 14957, 14958, 14959, 14960, 14961, 14962, 14963, 14964, 14965, + 14966, 14967, 14968, 14969, 14970, 14971, 14972, 14973, 14974, 14975, + 14976, 14977, 14978, 14979, 14980, 14981, 14982, 14983, 14984, 14985, + 14986, 14987, 14988, 14989, 14990, 14991, 14992, 14993, 14994, 14995, + 14996, 14997, 15011, 15012, 15013, 15014, 15015, 15016, 15017, 15018, + 15019, 15020, 15021, 15022, 15023, 15024, 15025, 15026, 15027, 15028, + 15029, 15030, 15031, 15032, 15033, 15043, 15044, 15045, 15046, 15047, + 15048, 15049, 15050, 15051, 15052, 15053, 15054, 15055, 15056, 15057, + 15058, 15059, 15060, 15061, 15062, 15063, 15064, 15065, 15066, 15067, + 15068, 15069, 15070, 15071, 15072, 15073, 15074, 15075, 15076, 15077, + 15078, 15079, 15080, 15081, 15082, 15083, 15084, 15085, 15086, 15087, + 15088, 15089, 15090, 15091, 15092, 15093, 15094, 15095, 15096, 15097, + 15098, 15099, 15100, 15101, 15102, 15103, 15104, 15105, 15106, 15107, + 15108, 15109, 15110, 15111, 15112, 15113, 15114, 15115, 15116, 15117, + 15118, 15119 }; #endif @@ -1887,29 +3186,29 @@ static const char *const yytname[] = "ABORT_P", "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", "ALL", "ALSO", "ALTER", "ALWAYS", "ANALYSE", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "ASSERTION", "ASSIGNMENT", - "ASYMMETRIC", "AT", "ATTRIBUTE", "AUTHORIZATION", "BACKWARD", "BEFORE", - "BEGIN_P", "BETWEEN", "BIGINT", "BINARY", "BIT", "BOOLEAN_P", "BOTH", - "BY", "CACHE", "CALLED", "CASCADE", "CASCADED", "CASE", "CAST", + "ASYMMETRIC", "AT", "ATTACH", "ATTRIBUTE", "AUTHORIZATION", "BACKWARD", + "BEFORE", "BEGIN_P", "BETWEEN", "BIGINT", "BINARY", "BIT", "BOOLEAN_P", + "BOTH", "BY", "CACHE", "CALLED", "CASCADE", "CASCADED", "CASE", "CAST", "CATALOG_P", "CHAIN", "CHAR_P", "CHARACTER", "CHARACTERISTICS", "CHECK", "CHECKPOINT", "CLASS", "CLOSE", "CLUSTER", "COALESCE", "COLLATE", - "COLLATION", "COLUMN", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", - "CONCURRENTLY", "CONFIGURATION", "CONFLICT", "CONNECTION", "CONSTRAINT", - "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", "COPY", "COST", - "CREATE", "CROSS", "CSV", "CUBE", "CURRENT_P", "CURRENT_CATALOG", - "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_SCHEMA", "CURRENT_TIME", - "CURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR", "CYCLE", "DATA_P", - "DATABASE", "DAY_P", "DEALLOCATE", "DEC", "DECIMAL_P", "DECLARE", - "DEFAULT", "DEFAULTS", "DEFERRABLE", "DEFERRED", "DEFINER", "DELETE_P", - "DELIMITER", "DELIMITERS", "DEPENDS", "DESC", "DICTIONARY", "DISABLE_P", - "DISCARD", "DISTINCT", "DO", "DOCUMENT_P", "DOMAIN_P", "DOUBLE_P", - "DROP", "EACH", "ELSE", "ENABLE_P", "ENCODING", "ENCRYPTED", "END_P", - "ENUM_P", "ESCAPE", "EVENT", "EXCEPT", "EXCLUDE", "EXCLUDING", - "EXCLUSIVE", "EXECUTE", "EXISTS", "EXPLAIN", "EXTENSION", "EXTERNAL", - "EXTRACT", "FALSE_P", "FAMILY", "FETCH", "FILTER", "FIRST_P", "FLOAT_P", - "FOLLOWING", "FOR", "FORCE", "FOREIGN", "FORWARD", "FREEZE", "FROM", - "FULL", "FUNCTION", "FUNCTIONS", "GLOBAL", "GRANT", "GRANTED", - "GREATEST", "GROUP_P", "GROUPING", "HANDLER", "HAVING", "HEADER_P", - "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "ILIKE", "IMMEDIATE", + "COLLATION", "COLUMN", "COLUMNS", "COMMENT", "COMMENTS", "COMMIT", + "COMMITTED", "CONCURRENTLY", "CONFIGURATION", "CONFLICT", "CONNECTION", + "CONSTRAINT", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", + "COPY", "COST", "CREATE", "CROSS", "CSV", "CUBE", "CURRENT_P", + "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_SCHEMA", + "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR", "CYCLE", + "DATA_P", "DATABASE", "DAY_P", "DEALLOCATE", "DEC", "DECIMAL_P", + "DECLARE", "DEFAULT", "DEFAULTS", "DEFERRABLE", "DEFERRED", "DEFINER", + "DELETE_P", "DELIMITER", "DELIMITERS", "DEPENDS", "DESC", "DETACH", + "DICTIONARY", "DISABLE_P", "DISCARD", "DISTINCT", "DO", "DOCUMENT_P", + "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ELSE", "ENABLE_P", "ENCODING", + "ENCRYPTED", "END_P", "ENUM_P", "ESCAPE", "EVENT", "EXCEPT", "EXCLUDE", + "EXCLUDING", "EXCLUSIVE", "EXECUTE", "EXISTS", "EXPLAIN", "EXTENSION", + "EXTERNAL", "EXTRACT", "FALSE_P", "FAMILY", "FETCH", "FILTER", "FIRST_P", + "FLOAT_P", "FOLLOWING", "FOR", "FORCE", "FOREIGN", "FORWARD", "FREEZE", + "FROM", "FULL", "FUNCTION", "FUNCTIONS", "GENERATED", "GLOBAL", "GRANT", + "GRANTED", "GREATEST", "GROUP_P", "GROUPING", "HANDLER", "HAVING", + "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "ILIKE", "IMMEDIATE", "IMMUTABLE", "IMPLICIT_P", "IMPORT_P", "IN_P", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", "INHERITS", "INITIALLY", "INLINE_P", "INNER_P", "INOUT", "INPUT_P", "INSENSITIVE", "INSERT", "INSTEAD", @@ -1920,173 +3219,187 @@ static const char *const yytname[] = "LOCALTIMESTAMP", "LOCATION", "LOCK_P", "LOCKED", "LOGGED", "MAPPING", "MATCH", "MATERIALIZED", "MAXVALUE", "METHOD", "MINUTE_P", "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NATIONAL", "NATURAL", - "NCHAR", "NEXT", "NO", "NONE", "NOT", "NOTHING", "NOTIFY", "NOTNULL", - "NOWAIT", "NULL_P", "NULLIF", "NULLS_P", "NUMERIC", "OBJECT_P", "OF", - "OFF", "OFFSET", "OIDS", "ON", "ONLY", "OPERATOR", "OPTION", "OPTIONS", - "OR", "ORDER", "ORDINALITY", "OUT_P", "OUTER_P", "OVER", "OVERLAPS", - "OVERLAY", "OWNED", "OWNER", "PARALLEL", "PARSER", "PARTIAL", - "PARTITION", "PASSING", "PASSWORD", "PGPOOL", "PLACING", "PLANS", - "POLICY", "POSITION", "PRECEDING", "PRECISION", "PRESERVE", "PREPARE", - "PREPARED", "PRIMARY", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", - "PROGRAM", "QUOTE", "RANGE", "READ", "REAL", "REASSIGN", "RECHECK", - "RECURSIVE", "REF", "REFERENCES", "REFRESH", "REINDEX", "RELATIVE_P", + "NCHAR", "NEW", "NEXT", "NO", "NONE", "NOT", "NOTHING", "NOTIFY", + "NOTNULL", "NOWAIT", "NULL_P", "NULLIF", "NULLS_P", "NUMERIC", + "OBJECT_P", "OF", "OFF", "OFFSET", "OIDS", "OLD", "ON", "ONLY", + "OPERATOR", "OPTION", "OPTIONS", "OR", "ORDER", "ORDINALITY", "OUT_P", + "OUTER_P", "OVER", "OVERLAPS", "OVERLAY", "OVERRIDING", "OWNED", "OWNER", + "PARALLEL", "PARSER", "PARTIAL", "PARTITION", "PASSING", "PASSWORD", + "PGPOOL", "PLACING", "PLANS", "POLICY", "POSITION", "PRECEDING", + "PRECISION", "PRESERVE", "PREPARE", "PREPARED", "PRIMARY", "PRIOR", + "PRIVILEGES", "PROCEDURAL", "PROCEDURE", "PROGRAM", "PUBLICATION", + "QUOTE", "RANGE", "READ", "REAL", "REASSIGN", "RECHECK", "RECURSIVE", + "REF", "REFERENCES", "REFERENCING", "REFRESH", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", "REPEATABLE", "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", "RETURNING", "RETURNS", "REVOKE", "RIGHT", "ROLE", "ROLLBACK", "ROLLUP", "ROW", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", - "SCROLL", "SEARCH", "SECOND_P", "SECURITY", "SELECT", "SEQUENCE", - "SEQUENCES", "SERIALIZABLE", "SERVER", "SESSION", "SESSION_USER", "SET", - "SETS", "SETOF", "SHARE", "SHOW", "SIMILAR", "SIMPLE", "SKIP", - "SMALLINT", "SNAPSHOT", "SOME", "SQL_P", "STABLE", "STANDALONE_P", - "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", "STORAGE", - "STRICT_P", "STRIP_P", "SUBSTRING", "SYMMETRIC", "SYSID", "SYSTEM_P", - "TABLE", "TABLES", "TABLESAMPLE", "TABLESPACE", "TEMP", "TEMPLATE", - "TEMPORARY", "TEXT_P", "THEN", "TIME", "TIMESTAMP", "TO", "TRAILING", - "TRANSACTION", "TRANSFORM", "TREAT", "TRIGGER", "TRIM", "TRUE_P", - "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", "UNBOUNDED", "UNCOMMITTED", - "UNENCRYPTED", "UNION", "UNIQUE", "UNKNOWN", "UNLISTEN", "UNLOGGED", - "UNTIL", "UPDATE", "USER", "USING", "VACUUM", "VALID", "VALIDATE", - "VALIDATOR", "VALUE_P", "VALUES", "VARCHAR", "VARIADIC", "VARYING", - "VERBOSE", "VERSION_P", "VIEW", "VIEWS", "VOLATILE", "WHEN", "WHERE", - "WHITESPACE_P", "WINDOW", "WITH", "WITHIN", "WITHOUT", "WORK", "WRAPPER", - "WRITE", "XML_P", "XMLATTRIBUTES", "XMLCONCAT", "XMLELEMENT", - "XMLEXISTS", "XMLFOREST", "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", - "YEAR_P", "YES_P", "ZONE", "NOT_LA", "NULLS_LA", "WITH_LA", "'<'", "'>'", - "'='", "POSTFIXOP", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", - "'['", "']'", "'('", "')'", "'.'", "';'", "','", "':'", "$accept", - "stmtblock", "stmtmulti", "stmt", "CreateRoleStmt", "opt_with", - "OptRoleList", "AlterOptRoleList", "AlterOptRoleElem", - "CreateOptRoleElem", "CreateUserStmt", "AlterRoleStmt", - "opt_in_database", "AlterRoleSetStmt", "AlterUserStmt", - "AlterUserSetStmt", "DropRoleStmt", "DropUserStmt", "CreateGroupStmt", - "AlterGroupStmt", "add_drop", "DropGroupStmt", "CreateSchemaStmt", - "OptSchemaName", "OptSchemaEltList", "schema_stmt", "VariableSetStmt", - "set_rest", "generic_set", "set_rest_more", "var_name", "var_list", - "var_value", "iso_level", "opt_boolean_or_string", "zone_value", - "opt_encoding", "NonReservedWord_or_Sconst", "VariableResetStmt", - "reset_rest", "generic_reset", "SetResetClause", - "FunctionSetResetClause", "VariableShowStmt", "ConstraintsSetStmt", - "constraints_set_list", "constraints_set_mode", "CheckPointStmt", - "DiscardStmt", "AlterTableStmt", "alter_table_cmds", "alter_table_cmd", + "SCHEMAS", "SCROLL", "SEARCH", "SECOND_P", "SECURITY", "SELECT", + "SEQUENCE", "SEQUENCES", "SERIALIZABLE", "SERVER", "SESSION", + "SESSION_USER", "SET", "SETS", "SETOF", "SHARE", "SHOW", "SIMILAR", + "SIMPLE", "SKIP", "SMALLINT", "SNAPSHOT", "SOME", "SQL_P", "STABLE", + "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", + "STORAGE", "STRICT_P", "STRIP_P", "SUBSCRIPTION", "SUBSTRING", + "SYMMETRIC", "SYSID", "SYSTEM_P", "TABLE", "TABLES", "TABLESAMPLE", + "TABLESPACE", "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", "THEN", "TIME", + "TIMESTAMP", "TO", "TRAILING", "TRANSACTION", "TRANSFORM", "TREAT", + "TRIGGER", "TRIM", "TRUE_P", "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", + "UNBOUNDED", "UNCOMMITTED", "UNENCRYPTED", "UNION", "UNIQUE", "UNKNOWN", + "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", "USER", "USING", "VACUUM", + "VALID", "VALIDATE", "VALIDATOR", "VALUE_P", "VALUES", "VARCHAR", + "VARIADIC", "VARYING", "VERBOSE", "VERSION_P", "VIEW", "VIEWS", + "VOLATILE", "WHEN", "WHERE", "WHITESPACE_P", "WINDOW", "WITH", "WITHIN", + "WITHOUT", "WORK", "WRAPPER", "WRITE", "XML_P", "XMLATTRIBUTES", + "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", "XMLNAMESPACES", + "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", "XMLTABLE", "YEAR_P", + "YES_P", "ZONE", "NOT_LA", "NULLS_LA", "WITH_LA", "'<'", "'>'", "'='", + "POSTFIXOP", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", + "']'", "'('", "')'", "'.'", "';'", "','", "':'", "$accept", "stmtblock", + "stmtmulti", "stmt", "CreateRoleStmt", "opt_with", "OptRoleList", + "AlterOptRoleList", "AlterOptRoleElem", "CreateOptRoleElem", + "CreateUserStmt", "AlterRoleStmt", "opt_in_database", "AlterRoleSetStmt", + "DropRoleStmt", "CreateGroupStmt", "AlterGroupStmt", "add_drop", + "CreateSchemaStmt", "OptSchemaName", "OptSchemaEltList", "schema_stmt", + "VariableSetStmt", "set_rest", "generic_set", "set_rest_more", + "var_name", "var_list", "var_value", "iso_level", + "opt_boolean_or_string", "zone_value", "opt_encoding", + "NonReservedWord_or_Sconst", "VariableResetStmt", "reset_rest", + "generic_reset", "SetResetClause", "FunctionSetResetClause", + "VariableShowStmt", "ConstraintsSetStmt", "constraints_set_list", + "constraints_set_mode", "CheckPointStmt", "DiscardStmt", + "AlterTableStmt", "alter_table_cmds", "partition_cmd", "alter_table_cmd", "alter_column_default", "opt_drop_behavior", "opt_collate_clause", "alter_using", "replica_identity", "reloptions", "opt_reloptions", - "reloption_list", "reloption_elem", "AlterCompositeTypeStmt", - "alter_type_cmds", "alter_type_cmd", "ClosePortalStmt", "CopyStmt", - "copy_from", "opt_program", "copy_file_name", "copy_options", - "copy_opt_list", "copy_opt_item", "opt_binary", "opt_oids", - "copy_delimiter", "opt_using", "copy_generic_opt_list", - "copy_generic_opt_elem", "copy_generic_opt_arg", + "reloption_list", "reloption_elem", "alter_identity_column_option_list", + "alter_identity_column_option", "ForValues", "partbound_datum", + "partbound_datum_list", "range_datum_list", "PartitionRangeDatum", + "AlterCompositeTypeStmt", "alter_type_cmds", "alter_type_cmd", + "ClosePortalStmt", "CopyStmt", "copy_from", "opt_program", + "copy_file_name", "copy_options", "copy_opt_list", "copy_opt_item", + "opt_binary", "opt_oids", "copy_delimiter", "opt_using", + "copy_generic_opt_list", "copy_generic_opt_elem", "copy_generic_opt_arg", "copy_generic_opt_arg_list", "copy_generic_opt_arg_list_item", "CreateStmt", "OptTemp", "OptTableElementList", "OptTypedTableElementList", "TableElementList", "TypedTableElementList", "TableElement", "TypedTableElement", "columnDef", "columnOptions", - "ColQualList", "ColConstraint", "ColConstraintElem", "ConstraintAttr", - "TableLikeClause", "TableLikeOptionList", "TableLikeOption", - "TableConstraint", "ConstraintElem", "opt_no_inherit", "opt_column_list", - "columnList", "columnElem", "key_match", "ExclusionConstraintList", - "ExclusionConstraintElem", "ExclusionWhereClause", "key_actions", - "key_update", "key_delete", "key_action", "OptInherit", "OptWith", - "OnCommitOption", "OptTableSpace", "OptConsTableSpace", "ExistingIndex", + "ColQualList", "ColConstraint", "ColConstraintElem", "generated_when", + "ConstraintAttr", "TableLikeClause", "TableLikeOptionList", + "TableLikeOption", "TableConstraint", "ConstraintElem", "opt_no_inherit", + "opt_column_list", "columnList", "columnElem", "key_match", + "ExclusionConstraintList", "ExclusionConstraintElem", + "ExclusionWhereClause", "key_actions", "key_update", "key_delete", + "key_action", "OptInherit", "OptPartitionSpec", "PartitionSpec", + "part_strategy", "part_params", "part_elem", "OptWith", "OnCommitOption", + "OptTableSpace", "OptConsTableSpace", "ExistingIndex", "CreateStatsStmt", "CreateAsStmt", "create_as_target", "opt_with_data", "CreateMatViewStmt", "create_mv_target", "OptNoLog", "RefreshMatViewStmt", "CreateSeqStmt", - "AlterSeqStmt", "OptSeqOptList", "SeqOptList", "SeqOptElem", "opt_by", - "NumericOnly", "NumericOnly_list", "CreatePLangStmt", "opt_trusted", - "handler_name", "opt_inline_handler", "validator_clause", - "opt_validator", "DropPLangStmt", "opt_procedural", + "AlterSeqStmt", "OptSeqOptList", "OptParenthesizedSeqOptList", + "SeqOptList", "SeqOptElem", "opt_by", "NumericOnly", "NumericOnly_list", + "CreatePLangStmt", "opt_trusted", "handler_name", "opt_inline_handler", + "validator_clause", "opt_validator", "DropPLangStmt", "opt_procedural", "CreateTableSpaceStmt", "OptTableSpaceOwner", "DropTableSpaceStmt", "CreateExtensionStmt", "create_extension_opt_list", "create_extension_opt_item", "AlterExtensionStmt", "alter_extension_opt_list", "alter_extension_opt_item", "AlterExtensionContentsStmt", "CreateFdwStmt", "fdw_option", - "fdw_options", "opt_fdw_options", "DropFdwStmt", "AlterFdwStmt", + "fdw_options", "opt_fdw_options", "AlterFdwStmt", "create_generic_options", "generic_option_list", "alter_generic_options", "alter_generic_option_list", "alter_generic_option_elem", "generic_option_elem", "generic_option_name", "generic_option_arg", "CreateForeignServerStmt", "opt_type", "foreign_server_version", - "opt_foreign_server_version", "DropForeignServerStmt", - "AlterForeignServerStmt", "CreateForeignTableStmt", - "AlterForeignTableStmt", "ImportForeignSchemaStmt", - "import_qualification_type", "import_qualification", - "CreateUserMappingStmt", "auth_ident", "DropUserMappingStmt", - "AlterUserMappingStmt", "CreatePolicyStmt", "AlterPolicyStmt", - "DropPolicyStmt", "RowSecurityOptionalExpr", + "opt_foreign_server_version", "AlterForeignServerStmt", + "CreateForeignTableStmt", "AlterForeignTableStmt", + "ImportForeignSchemaStmt", "import_qualification_type", + "import_qualification", "CreateUserMappingStmt", "auth_ident", + "DropUserMappingStmt", "AlterUserMappingStmt", "CreatePolicyStmt", + "AlterPolicyStmt", "RowSecurityOptionalExpr", "RowSecurityOptionalWithCheck", "RowSecurityDefaultToRole", - "RowSecurityOptionalToRole", "RowSecurityDefaultForCmd", - "row_security_cmd", "CreateAmStmt", "CreateTrigStmt", - "TriggerActionTime", "TriggerEvents", "TriggerOneEvent", - "TriggerForSpec", "TriggerForOptEach", "TriggerForType", "TriggerWhen", - "TriggerFuncArgs", "TriggerFuncArg", "OptConstrFromTable", - "ConstraintAttributeSpec", "ConstraintAttributeElem", "DropTrigStmt", - "CreateEventTrigStmt", "event_trigger_when_list", - "event_trigger_when_item", "event_trigger_value_list", - "AlterEventTrigStmt", "enable_trigger", "CreateAssertStmt", - "DropAssertStmt", "DefineStmt", "definition", "def_list", "def_elem", - "def_arg", "old_aggr_definition", "old_aggr_list", "old_aggr_elem", - "opt_enum_val_list", "enum_val_list", "AlterEnumStmt", - "opt_if_not_exists", "CreateOpClassStmt", "opclass_item_list", - "opclass_item", "opt_default", "opt_opfamily", "opclass_purpose", - "opt_recheck", "CreateOpFamilyStmt", "AlterOpFamilyStmt", - "opclass_drop_list", "opclass_drop", "DropOpClassStmt", - "DropOpFamilyStmt", "DropOwnedStmt", "ReassignOwnedStmt", "DropStmt", - "drop_type", "any_name_list", "any_name", "attrs", "type_name_list", - "TruncateStmt", "opt_restart_seqs", "CommentStmt", "comment_type", - "comment_text", "SecLabelStmt", "opt_provider", "security_label_type", - "security_label", "FetchStmt", "fetch_args", "from_in", "opt_from_in", - "GrantStmt", "RevokeStmt", "privileges", "privilege_list", "privilege", - "privilege_target", "grantee_list", "grantee", "opt_grant_grant_option", - "function_with_argtypes_list", "function_with_argtypes", "GrantRoleStmt", - "RevokeRoleStmt", "opt_grant_admin_option", "opt_granted_by", - "AlterDefaultPrivilegesStmt", "DefACLOptionList", "DefACLOption", - "DefACLAction", "defacl_privilege_target", "IndexStmt", "opt_unique", - "opt_concurrently", "opt_index_name", "access_method_clause", - "index_params", "index_elem", "opt_collate", "opt_class", "opt_asc_desc", - "opt_nulls_order", "CreateFunctionStmt", "opt_or_replace", "func_args", - "func_args_list", "func_args_with_defaults", - "func_args_with_defaults_list", "func_arg", "arg_class", "param_name", - "func_return", "func_type", "func_arg_with_default", "aggr_arg", - "aggr_args", "aggr_args_list", "createfunc_opt_list", - "common_func_opt_item", "createfunc_opt_item", "func_as", - "transform_type_list", "opt_definition", "table_func_column", + "RowSecurityOptionalToRole", "RowSecurityDefaultPermissive", + "RowSecurityDefaultForCmd", "row_security_cmd", "CreateAmStmt", + "CreateTrigStmt", "TriggerActionTime", "TriggerEvents", + "TriggerOneEvent", "TriggerReferencing", "TriggerTransitions", + "TriggerTransition", "TransitionOldOrNew", "TransitionRowOrTable", + "TransitionRelName", "TriggerForSpec", "TriggerForOptEach", + "TriggerForType", "TriggerWhen", "TriggerFuncArgs", "TriggerFuncArg", + "OptConstrFromTable", "ConstraintAttributeSpec", + "ConstraintAttributeElem", "CreateEventTrigStmt", + "event_trigger_when_list", "event_trigger_when_item", + "event_trigger_value_list", "AlterEventTrigStmt", "enable_trigger", + "CreateAssertStmt", "DropAssertStmt", "DefineStmt", "definition", + "def_list", "def_elem", "def_arg", "old_aggr_definition", + "old_aggr_list", "old_aggr_elem", "opt_enum_val_list", "enum_val_list", + "AlterEnumStmt", "opt_if_not_exists", "CreateOpClassStmt", + "opclass_item_list", "opclass_item", "opt_default", "opt_opfamily", + "opclass_purpose", "opt_recheck", "CreateOpFamilyStmt", + "AlterOpFamilyStmt", "opclass_drop_list", "opclass_drop", + "DropOpClassStmt", "DropOpFamilyStmt", "DropOwnedStmt", + "ReassignOwnedStmt", "DropStmt", "drop_type_any_name", "drop_type_name", + "drop_type_name_on_any_name", "any_name_list", "any_name", "attrs", + "type_name_list", "TruncateStmt", "opt_restart_seqs", "CommentStmt", + "comment_type_any_name", "comment_type_name", "comment_text", + "SecLabelStmt", "opt_provider", "security_label_type_any_name", + "security_label_type_name", "security_label", "FetchStmt", "fetch_args", + "from_in", "opt_from_in", "GrantStmt", "RevokeStmt", "privileges", + "privilege_list", "privilege", "privilege_target", "grantee_list", + "grantee", "opt_grant_grant_option", "GrantRoleStmt", "RevokeRoleStmt", + "opt_grant_admin_option", "opt_granted_by", "AlterDefaultPrivilegesStmt", + "DefACLOptionList", "DefACLOption", "DefACLAction", + "defacl_privilege_target", "IndexStmt", "opt_unique", "opt_concurrently", + "opt_index_name", "access_method_clause", "index_params", "index_elem", + "opt_collate", "opt_class", "opt_asc_desc", "opt_nulls_order", + "CreateFunctionStmt", "opt_or_replace", "func_args", "func_args_list", + "function_with_argtypes_list", "function_with_argtypes", + "func_args_with_defaults", "func_args_with_defaults_list", "func_arg", + "arg_class", "param_name", "func_return", "func_type", + "func_arg_with_default", "aggr_arg", "aggr_args", "aggr_args_list", + "aggregate_with_argtypes", "aggregate_with_argtypes_list", + "createfunc_opt_list", "common_func_opt_item", "createfunc_opt_item", + "func_as", "transform_type_list", "opt_definition", "table_func_column", "table_func_column_list", "AlterFunctionStmt", "alterfunc_opt_list", "opt_restrict", "RemoveFuncStmt", "RemoveAggrStmt", "RemoveOperStmt", - "oper_argtypes", "any_operator", "DoStmt", "dostmt_opt_list", - "dostmt_opt_item", "CreateCastStmt", "cast_context", "DropCastStmt", - "opt_if_exists", "CreateTransformStmt", "transform_element_list", - "DropTransformStmt", "ReindexStmt", "reindex_target_type", - "reindex_target_multitable", "reindex_option_list", - "reindex_option_elem", "AlterTblSpcStmt", "RenameStmt", "opt_column", - "opt_set_data", "AlterObjectDependsStmt", "AlterObjectSchemaStmt", - "AlterOperatorStmt", "operator_def_list", "operator_def_elem", - "AlterOwnerStmt", "RuleStmt", "RuleActionList", "RuleActionMulti", - "RuleActionStmt", "RuleActionStmtOrEmpty", "event", "opt_instead", - "DropRuleStmt", "NotifyStmt", "notify_payload", "ListenStmt", - "UnlistenStmt", "TransactionStmt", "opt_transaction", - "transaction_mode_item", "transaction_mode_list", + "oper_argtypes", "any_operator", "operator_with_argtypes_list", + "operator_with_argtypes", "DoStmt", "dostmt_opt_list", "dostmt_opt_item", + "CreateCastStmt", "cast_context", "DropCastStmt", "opt_if_exists", + "CreateTransformStmt", "transform_element_list", "DropTransformStmt", + "ReindexStmt", "reindex_target_type", "reindex_target_multitable", + "reindex_option_list", "reindex_option_elem", "AlterTblSpcStmt", + "RenameStmt", "opt_column", "opt_set_data", "AlterObjectDependsStmt", + "AlterObjectSchemaStmt", "AlterOperatorStmt", "operator_def_list", + "operator_def_elem", "operator_def_arg", "AlterOwnerStmt", + "CreatePublicationStmt", "opt_publication_for_tables", + "publication_for_tables", "AlterPublicationStmt", + "CreateSubscriptionStmt", "publication_name_list", + "publication_name_item", "AlterSubscriptionStmt", "DropSubscriptionStmt", + "RuleStmt", "RuleActionList", "RuleActionMulti", "RuleActionStmt", + "RuleActionStmtOrEmpty", "event", "opt_instead", "NotifyStmt", + "notify_payload", "ListenStmt", "UnlistenStmt", "TransactionStmt", + "opt_transaction", "transaction_mode_item", "transaction_mode_list", "transaction_mode_list_or_empty", "ViewStmt", "opt_check_option", "LoadStmt", "CreatedbStmt", "createdb_opt_list", "createdb_opt_items", "createdb_opt_item", "createdb_opt_name", "opt_equal", "AlterDatabaseStmt", "AlterDatabaseSetStmt", "DropdbStmt", - "AlterSystemStmt", "CreateDomainStmt", "AlterDomainStmt", "opt_as", - "AlterTSDictionaryStmt", "AlterTSConfigurationStmt", "any_with", - "CreateConversionStmt", "ClusterStmt", "cluster_index_specification", - "VacuumStmt", "vacuum_option_list", "vacuum_option_elem", "AnalyzeStmt", + "AlterCollationStmt", "AlterSystemStmt", "CreateDomainStmt", + "AlterDomainStmt", "opt_as", "AlterTSDictionaryStmt", + "AlterTSConfigurationStmt", "any_with", "CreateConversionStmt", + "ClusterStmt", "cluster_index_specification", "VacuumStmt", + "vacuum_option_list", "vacuum_option_elem", "AnalyzeStmt", "analyze_keyword", "opt_verbose", "opt_full", "opt_freeze", "opt_name_list", "ExplainStmt", "ExplainableStmt", "explain_option_list", "explain_option_elem", "explain_option_name", "explain_option_arg", "PrepareStmt", "prep_type_clause", "PreparableStmt", "ExecuteStmt", "execute_param_clause", "DeallocateStmt", "InsertStmt", "insert_target", - "insert_rest", "insert_column_list", "insert_column_item", - "opt_on_conflict", "opt_conf_expr", "returning_clause", "DeleteStmt", - "using_clause", "LockStmt", "opt_lock", "lock_type", "opt_nowait", - "opt_nowait_or_skip", "UpdateStmt", "set_clause_list", "set_clause", - "single_set_clause", "multiple_set_clause", "set_target", - "set_target_list", "DeclareCursorStmt", "cursor_name", "cursor_options", - "opt_hold", "SelectStmt", "select_with_parens", "select_no_parens", - "select_clause", "simple_select", "with_clause", "cte_list", - "common_table_expr", "opt_with_clause", "into_clause", - "OptTempTableName", "opt_table", "all_or_distinct", "distinct_clause", - "opt_all_clause", "opt_sort_clause", "sort_clause", "sortby_list", - "sortby", "select_limit", "opt_select_limit", "limit_clause", - "offset_clause", "select_limit_value", "select_offset_value", + "insert_rest", "override_kind", "insert_column_list", + "insert_column_item", "opt_on_conflict", "opt_conf_expr", + "returning_clause", "DeleteStmt", "using_clause", "LockStmt", "opt_lock", + "lock_type", "opt_nowait", "opt_nowait_or_skip", "UpdateStmt", + "set_clause_list", "set_clause", "set_target", "set_target_list", + "DeclareCursorStmt", "cursor_name", "cursor_options", "opt_hold", + "SelectStmt", "select_with_parens", "select_no_parens", "select_clause", + "simple_select", "with_clause", "cte_list", "common_table_expr", + "opt_with_clause", "into_clause", "OptTempTableName", "opt_table", + "all_or_distinct", "distinct_clause", "opt_all_clause", + "opt_sort_clause", "sort_clause", "sortby_list", "sortby", + "select_limit", "opt_select_limit", "limit_clause", "offset_clause", + "select_limit_value", "select_offset_value", "opt_select_fetch_first_value", "select_offset_value2", "row_or_rows", "first_or_next", "group_clause", "group_by_list", "group_by_item", "empty_grouping_set", "rollup_clause", "cube_clause", @@ -2100,11 +3413,13 @@ static const char *const yytname[] = "func_table", "rowsfrom_item", "rowsfrom_list", "opt_col_def_list", "opt_ordinality", "where_clause", "where_or_current_clause", "OptTableFuncElementList", "TableFuncElementList", "TableFuncElement", - "Typename", "opt_array_bounds", "SimpleTypename", "ConstTypename", - "GenericType", "opt_type_modifiers", "Numeric", "opt_float", "Bit", - "ConstBit", "BitWithLength", "BitWithoutLength", "Character", - "ConstCharacter", "CharacterWithLength", "CharacterWithoutLength", - "character", "opt_varying", "opt_charset", "ConstDatetime", + "xmltable", "xmltable_column_list", "xmltable_column_el", + "xmltable_column_option_list", "xmltable_column_option_el", + "xml_namespace_list", "xml_namespace_el", "Typename", "opt_array_bounds", + "SimpleTypename", "ConstTypename", "GenericType", "opt_type_modifiers", + "Numeric", "opt_float", "Bit", "ConstBit", "BitWithLength", + "BitWithoutLength", "Character", "ConstCharacter", "CharacterWithLength", + "CharacterWithoutLength", "character", "opt_varying", "ConstDatetime", "ConstInterval", "opt_timezone", "opt_interval", "interval_second", "a_expr", "b_expr", "c_expr", "func_application", "func_expr", "func_expr_windowless", "func_expr_common_subexpr", "xml_root_version", @@ -2122,20 +3437,19 @@ static const char *const yytname[] = "substr_for", "trim_list", "in_expr", "case_expr", "when_clause_list", "when_clause", "case_default", "case_arg", "columnref", "indirection_el", "opt_slice_bound", "indirection", "opt_indirection", "opt_asymmetric", - "ctext_expr", "ctext_expr_list", "ctext_row", "opt_target_list", - "target_list", "target_el", "qualified_name_list", "qualified_name", - "name_list", "name", "database_name", "access_method", "attr_name", - "index_name", "file_name", "func_name", "AexprConst", "Iconst", "Sconst", - "SignedIconst", "RoleId", "RoleSpec", "role_list", "ColId", - "type_function_name", "NonReservedWord", "ColLabel", + "opt_target_list", "target_list", "target_el", "qualified_name_list", + "qualified_name", "name_list", "name", "database_name", "access_method", + "attr_name", "index_name", "file_name", "func_name", "AexprConst", + "Iconst", "Sconst", "SignedIconst", "RoleId", "RoleSpec", "role_list", + "ColId", "type_function_name", "NonReservedWord", "ColLabel", "unreserved_keyword", "col_name_keyword", "type_func_name_keyword", - "reserved_keyword", YY_NULLPTR + "reserved_keyword", YY_NULL }; #endif # ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -2182,3293 +3496,3928 @@ static const yytype_uint16 yytoknum[] = 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, - 695, 60, 62, 61, 696, 43, 45, 42, 47, 37, - 94, 697, 91, 93, 40, 41, 46, 59, 44, 58 + 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, + 705, 706, 707, 708, 60, 62, 61, 709, 43, 45, + 42, 47, 37, 94, 710, 91, 93, 40, 41, 46, + 59, 44, 58 }; # endif -#define YYPACT_NINF -4498 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-4498))) - -#define YYTABLE_NINF -2420 - -#define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-2420))) +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 473, 474, 475, 475, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 477, + 478, 478, 478, 479, 479, 480, 480, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 482, 482, 482, 482, + 482, 482, 483, 484, 484, 485, 485, 486, 486, 486, + 486, 487, 487, 487, 487, 487, 487, 488, 489, 490, + 490, 491, 491, 491, 491, 492, 492, 493, 493, 494, + 494, 494, 494, 494, 494, 495, 495, 495, 495, 496, + 496, 496, 497, 497, 497, 497, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 499, 499, 500, + 500, 501, 501, 502, 502, 502, 502, 503, 503, 503, + 503, 504, 504, 504, 504, 504, 504, 504, 505, 505, + 505, 506, 506, 507, 507, 508, 508, 508, 508, 509, + 509, 510, 510, 511, 511, 512, 512, 512, 512, 512, + 512, 512, 513, 514, 514, 515, 515, 516, 517, 517, + 517, 517, 517, 518, 518, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, + 518, 519, 519, 520, 520, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 522, 522, 523, 523, 523, 524, 524, 525, 525, + 526, 526, 526, 526, 527, 528, 528, 529, 529, 530, + 530, 530, 530, 531, 531, 532, 532, 532, 532, 533, + 533, 534, 534, 534, 535, 535, 536, 536, 537, 537, + 537, 538, 539, 539, 540, 540, 540, 540, 541, 541, + 542, 542, 543, 543, 544, 544, 545, 545, 545, 546, + 546, 547, 547, 548, 548, 548, 548, 548, 548, 548, + 548, 548, 548, 548, 548, 548, 548, 549, 549, 550, + 550, 551, 551, 552, 552, 553, 553, 554, 555, 555, + 555, 555, 555, 556, 556, 557, 558, 558, 558, 558, + 558, 558, 559, 559, 559, 559, 559, 559, 559, 559, + 560, 560, 561, 561, 562, 562, 563, 563, 564, 564, + 564, 565, 565, 566, 567, 567, 568, 568, 569, 569, + 569, 569, 570, 570, 570, 570, 570, 570, 570, 570, + 571, 571, 572, 572, 572, 572, 573, 574, 574, 574, + 575, 575, 575, 575, 575, 575, 575, 576, 576, 577, + 577, 577, 577, 577, 577, 577, 578, 578, 579, 579, + 580, 580, 581, 582, 582, 582, 582, 583, 583, 584, + 584, 585, 585, 586, 586, 586, 586, 586, 587, 588, + 589, 589, 589, 589, 589, 590, 590, 591, 591, 592, + 593, 593, 594, 594, 595, 595, 595, 596, 596, 596, + 596, 597, 597, 597, 597, 598, 598, 599, 599, 600, + 601, 601, 602, 602, 603, 604, 604, 604, 605, 605, + 606, 607, 607, 608, 609, 609, 610, 610, 611, 611, + 612, 612, 613, 613, 614, 614, 614, 614, 614, 614, + 614, 614, 614, 614, 614, 614, 614, 614, 615, 615, + 616, 616, 616, 616, 617, 617, 618, 618, 619, 619, + 620, 620, 621, 621, 622, 622, 623, 623, 624, 624, + 625, 625, 626, 627, 627, 628, 628, 629, 629, 630, + 630, 631, 631, 631, 631, 632, 633, 633, 634, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 636, 637, 637, 637, 637, + 638, 638, 639, 639, 640, 640, 641, 641, 642, 642, + 643, 644, 644, 645, 645, 645, 645, 646, 647, 648, + 649, 649, 650, 650, 651, 651, 652, 652, 653, 653, + 653, 654, 654, 654, 654, 655, 655, 656, 657, 657, + 658, 658, 659, 659, 660, 660, 661, 661, 662, 663, + 664, 665, 665, 666, 666, 667, 667, 668, 668, 669, + 669, 670, 670, 671, 671, 671, 671, 671, 672, 673, + 673, 674, 674, 674, 675, 675, 676, 676, 676, 676, + 676, 677, 677, 678, 678, 679, 680, 680, 681, 681, + 682, 683, 683, 684, 684, 685, 685, 686, 686, 687, + 687, 687, 688, 688, 688, 688, 689, 689, 690, 690, + 691, 691, 691, 691, 691, 691, 692, 692, 693, 693, + 694, 695, 695, 696, 697, 697, 697, 697, 698, 699, + 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, + 700, 700, 700, 700, 700, 700, 701, 702, 702, 703, + 703, 704, 704, 704, 704, 704, 704, 705, 706, 706, + 707, 708, 708, 709, 709, 710, 710, 710, 710, 711, + 711, 712, 713, 713, 714, 714, 714, 714, 714, 715, + 715, 716, 716, 717, 717, 717, 718, 718, 719, 720, + 720, 721, 721, 722, 722, 723, 723, 724, 724, 725, + 726, 727, 727, 727, 727, 727, 727, 727, 727, 727, + 727, 727, 727, 728, 728, 728, 728, 728, 728, 728, + 728, 728, 728, 728, 728, 728, 729, 729, 729, 729, + 729, 729, 729, 730, 730, 730, 731, 731, 732, 732, + 733, 733, 734, 734, 735, 736, 736, 736, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, 738, 739, + 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, + 739, 740, 740, 741, 741, 741, 741, 741, 741, 741, + 742, 742, 743, 743, 743, 743, 743, 743, 744, 744, + 744, 744, 744, 744, 744, 744, 745, 745, 746, 746, + 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, + 747, 747, 747, 747, 747, 747, 748, 748, 749, 749, + 750, 751, 751, 752, 752, 752, 752, 752, 753, 753, + 754, 754, 754, 754, 755, 755, 755, 755, 755, 755, + 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, + 756, 756, 757, 757, 758, 758, 759, 760, 760, 761, + 761, 762, 762, 763, 764, 764, 765, 765, 765, 766, + 766, 766, 767, 767, 767, 767, 767, 768, 768, 769, + 769, 770, 770, 771, 771, 772, 772, 773, 773, 774, + 774, 774, 775, 775, 776, 776, 777, 777, 777, 778, + 778, 778, 779, 779, 779, 780, 780, 781, 781, 782, + 782, 783, 783, 784, 784, 784, 784, 785, 785, 786, + 786, 787, 787, 787, 787, 787, 788, 788, 788, 788, + 788, 789, 790, 791, 791, 791, 792, 792, 792, 793, + 794, 794, 794, 794, 795, 795, 796, 797, 797, 798, + 798, 799, 799, 799, 799, 799, 799, 799, 799, 799, + 799, 799, 799, 799, 799, 799, 799, 800, 800, 800, + 800, 800, 801, 801, 802, 802, 803, 803, 804, 805, + 805, 806, 807, 807, 808, 808, 809, 809, 810, 810, + 811, 811, 812, 812, 812, 812, 813, 813, 814, 814, + 815, 816, 817, 817, 818, 818, 819, 819, 819, 820, + 820, 820, 821, 822, 822, 823, 824, 824, 824, 824, + 825, 826, 826, 826, 826, 827, 827, 828, 828, 828, + 829, 829, 830, 831, 831, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 833, 833, 834, 834, + 835, 835, 835, 835, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, 836, 837, + 838, 838, 839, 839, 840, 840, 840, 840, 840, 841, + 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, + 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, + 841, 842, 843, 843, 844, 844, 845, 845, 845, 845, + 846, 847, 847, 848, 849, 849, 849, 849, 849, 849, + 850, 850, 851, 852, 852, 852, 853, 853, 854, 854, + 854, 854, 854, 855, 855, 856, 856, 856, 856, 857, + 857, 857, 858, 859, 859, 860, 861, 861, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, + 862, 862, 863, 863, 863, 864, 864, 864, 864, 864, + 865, 865, 865, 866, 866, 867, 867, 867, 867, 868, + 868, 868, 868, 869, 870, 871, 871, 872, 872, 873, + 873, 873, 874, 874, 874, 874, 874, 874, 874, 875, + 875, 876, 876, 876, 877, 878, 878, 879, 880, 880, + 881, 882, 882, 882, 882, 882, 882, 882, 883, 883, + 884, 885, 885, 885, 885, 885, 885, 886, 886, 887, + 888, 888, 888, 889, 889, 890, 890, 890, 890, 890, + 891, 891, 892, 892, 892, 892, 892, 893, 893, 894, + 894, 895, 895, 896, 896, 897, 897, 898, 898, 899, + 899, 899, 899, 900, 900, 900, 900, 900, 900, 900, + 900, 900, 901, 901, 902, 903, 903, 904, 904, 904, + 905, 906, 906, 907, 907, 907, 907, 908, 908, 909, + 909, 910, 910, 910, 910, 911, 912, 912, 913, 913, + 913, 913, 913, 914, 914, 915, 915, 916, 917, 917, + 917, 918, 918, 918, 919, 919, 920, 921, 921, 922, + 923, 923, 924, 924, 924, 924, 924, 924, 924, 924, + 925, 925, 926, 926, 926, 927, 928, 928, 929, 929, + 930, 931, 931, 932, 933, 934, 934, 934, 934, 934, + 935, 935, 935, 936, 936, 937, 937, 938, 938, 938, + 938, 938, 938, 938, 938, 939, 939, 940, 940, 940, + 940, 940, 940, 940, 941, 941, 941, 942, 942, 943, + 944, 944, 945, 945, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 947, 947, 948, 948, 948, 949, 949, + 950, 950, 951, 951, 952, 953, 953, 954, 954, 955, + 955, 955, 955, 956, 956, 957, 957, 957, 958, 958, + 959, 959, 960, 961, 961, 961, 962, 963, 963, 964, + 964, 965, 965, 966, 966, 967, 967, 967, 967, 967, + 968, 969, 970, 971, 972, 972, 973, 973, 974, 974, + 975, 975, 976, 977, 977, 977, 977, 978, 978, 979, + 979, 980, 980, 981, 981, 982, 982, 982, 982, 982, + 982, 982, 982, 982, 982, 983, 983, 983, 983, 983, + 983, 984, 984, 984, 984, 985, 985, 986, 986, 986, + 986, 986, 987, 987, 987, 987, 988, 988, 989, 989, + 990, 990, 990, 990, 991, 991, 992, 992, 992, 993, + 994, 994, 995, 995, 996, 997, 997, 998, 998, 999, + 999, 1000, 1000, 1001, 1001, 1001, 1002, 1002, 1003, 1003, + 1004, 1005, 1005, 1006, 1006, 1007, 1007, 1007, 1008, 1008, + 1009, 1009, 1009, 1009, 1010, 1010, 1011, 1011, 1012, 1012, + 1012, 1012, 1012, 1012, 1013, 1013, 1013, 1014, 1014, 1014, + 1014, 1014, 1014, 1014, 1015, 1015, 1015, 1015, 1016, 1016, + 1017, 1017, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, + 1018, 1018, 1018, 1019, 1019, 1020, 1020, 1021, 1021, 1022, + 1023, 1024, 1024, 1025, 1025, 1026, 1027, 1028, 1028, 1028, + 1028, 1028, 1028, 1029, 1029, 1030, 1030, 1030, 1030, 1031, + 1032, 1032, 1032, 1033, 1033, 1033, 1033, 1033, 1033, 1033, + 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1034, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1036, 1036, 1036, 1036, 1036, 1036, 1036, + 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, + 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037, + 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, + 1037, 1037, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, + 1039, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, + 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, + 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, + 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, + 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1043, 1043, 1043, + 1043, 1044, 1045, 1045, 1046, 1046, 1047, 1047, 1048, 1048, + 1048, 1049, 1049, 1049, 1049, 1050, 1050, 1051, 1051, 1052, + 1052, 1053, 1053, 1054, 1055, 1055, 1055, 1056, 1057, 1057, + 1058, 1058, 1059, 1059, 1059, 1060, 1060, 1061, 1061, 1061, + 1061, 1061, 1062, 1062, 1062, 1063, 1063, 1064, 1065, 1065, + 1065, 1066, 1066, 1067, 1067, 1067, 1067, 1067, 1067, 1067, + 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1069, 1069, 1070, + 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1072, 1072, 1073, + 1073, 1073, 1074, 1074, 1075, 1075, 1075, 1076, 1076, 1077, + 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079, + 1079, 1080, 1081, 1081, 1082, 1082, 1082, 1082, 1082, 1082, + 1083, 1084, 1085, 1085, 1085, 1086, 1086, 1087, 1088, 1088, + 1089, 1090, 1090, 1091, 1091, 1092, 1092, 1093, 1093, 1093, + 1093, 1094, 1094, 1095, 1095, 1096, 1096, 1097, 1097, 1098, + 1098, 1099, 1099, 1100, 1100, 1100, 1100, 1101, 1101, 1102, + 1102, 1103, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, + 1110, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, + 1111, 1111, 1111, 1111, 1112, 1113, 1114, 1114, 1114, 1115, + 1116, 1116, 1116, 1117, 1117, 1118, 1118, 1118, 1119, 1119, + 1119, 1120, 1120, 1120, 1120, 1121, 1121, 1121, 1121, 1121, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, + 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, + 1124, 1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125 +}; - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const int yypact[] = +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = { - 3868, 9, 11062, -4498, -4498, 9, -4498, 63467, -12, 154, - 1019, 161, 11885, 63902, 70862, 199, 366, 12007, 9, 70862, - 1190, 48677, 60422, 272, 70862, 849, 498, 48677, 70862, 1463, - 71297, 778, 758, 129, 71732, 64337, 59117, 1071, 70862, 993, - 1242, 72167, 64772, 734, 65207, 498, 45207, 91, 823, 72602, - 70862, 1807, 1352, 968, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -12, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, 1723, -4498, 841, 1782, 1273, 884, 1128, -4498, -4498, - -4498, 56942, 70862, 70862, 70862, 1354, 70862, 1272, 70862, 386, - 56942, 52592, 65642, 1442, 1362, 41721, 73037, -4498, 51287, 70862, - 70862, 73472, 70862, 1516, 61727, 70862, 1382, 70862, 70862, 53027, - 73907, 1581, 915, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - 70862, 12498, 849, -4498, -4498, 1807, 70862, 1580, 56942, 70862, - 1344, 70862, 1477, 70862, -4498, 70862, 1501, 74342, 415, 1300, - 52592, 1729, 42157, 1614, 70862, 52592, 74777, 70862, 70862, -4498, - -4498, 1630, 70862, 70862, -4498, 1707, 53462, 1405, 1743, 1912, - 1821, 964, -4498, 66077, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, 56072, 366, -4498, -4498, 1781, 57377, 70862, 1864, - -4498, -4498, 75212, 90389, 1669, -4498, 416, 57812, 53897, 1980, - 1651, 42593, 2032, 75647, 54332, 76082, -4498, -4498, 76517, -4498, - 76952, 1758, 1864, 77387, 90812, 54767, -4498, 1884, 77822, -4498, - 1652, 1286, 1052, 37773, -4498, -4498, -4498, -12, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, 309, 1353, 248, 205, - 252, -4498, -4498, 208, 210, 213, 309, 2128, 2128, -4498, - 70862, -4498, -4498, 1353, 37, 1666, 1666, 1666, 1881, 1030, - -4498, 1666, 1819, -4498, -4498, -4498, -4498, 65207, -4498, 1693, - 66512, 70862, 66947, 849, 1701, 2104, 1760, -4498, -4498, -4498, - -4498, -4498, 1755, 70862, 70862, 70862, -4498, -4498, 2129, 1747, - 1979, 1756, -4498, -4498, -4498, 1934, 1944, 1942, 133, 849, - 1858, -4498, 2064, -4498, 1985, 27502, 27502, 849, 67382, 78257, - 240, 56072, 849, 67817, 1839, 1155, 1990, -4498, -4498, -4498, - 681, -4498, 2212, 1851, 2055, 1756, 915, 39086, -4498, 1842, - 1401, 65207, -4498, -4498, -4498, 353, 2148, 27954, -4498, 70862, - 1852, -4498, 1874, 1852, 1891, 1906, 1273, -4498, 3868, 70862, - 1257, 1257, 2259, 1257, 1716, 1732, -4498, 1877, -4498, 2173, - 2139, 65207, 823, 201, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, 1914, 1401, -4498, - 241, -4498, 1174, 1913, 1258, 3041, -4498, -4498, 761, 70862, - 2046, 197, 25, 1955, 68252, 6313, 1954, -4498, -4498, -4498, - 2108, 978, -4498, -4498, -4498, -4498, 2248, 2288, 5603, 303, - 68687, -4498, -4498, -4498, -4498, 70862, 70862, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, 1996, -4498, -4498, 1988, - 2309, 2196, 2280, 2152, 1205, 2216, 694, 2338, 6386, 913, - 66512, 70862, 2305, 2358, 5912, 1389, 247, 2249, 872, 2356, - 2217, 1566, 2401, 7004, 70862, -4498, 2343, 2468, 78, -4498, - 244, -4498, 2184, 2325, 689, 2357, 56942, 2137, -4498, -4498, - 70862, -4498, -4498, 91235, 2211, -4498, 440, 56942, -4498, 2339, - 2189, 43029, 70862, -4498, 70862, -4498, -4498, -4498, -4498, -4498, - 2266, 2448, 70862, 91235, -4498, 2399, 70862, -4498, 2153, -4498, - -4498, -4498, -4498, 1666, 70862, 2155, 2546, 91235, 145, 70862, - -10, 2578, 70862, 2368, -10, 2195, 78692, -4498, -4498, -10, - -4498, -4498, -4498, 70862, 70862, 2172, 1560, 2370, -10, 2391, - 2596, 2600, 2258, 2373, 788, 1393, 182, 2494, -10, 2237, - 79127, 79562, 70862, 2241, 70862, 2579, 56942, 70862, 2503, -4498, - 2364, -4498, -4498, 300, -4498, -4498, -4498, -4498, -4498, 2517, - 1914, 225, 2519, 2210, 2523, -4498, -4498, -4498, 2257, -4498, - 2257, 2257, 2214, 2214, 2382, 2218, 2529, -4498, -4498, -4498, - 1541, 2257, 2214, -4498, 92081, -4498, 1281, 1315, -4498, 163, - -4498, 2646, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - 150, -4498, 1018, 1662, -4498, -4498, 2260, -4498, 2539, 1954, - 2540, -4498, 2226, 79997, -4498, 80432, 80867, 2543, 1996, 52592, - 2544, 2427, 2547, 2226, 2552, 2428, 2553, 225, 2554, -4498, - 800, 2549, 2559, 2444, 2563, 163, 2564, 1643, 2226, 56507, - 2565, 167, -4498, 29762, -4498, 2345, -4498, 823, -4498, 1459, - -4498, 47807, -4498, 1052, 1353, -4498, 70862, 1353, 70862, 1353, - 70862, 1353, 70862, 1353, 70862, 70862, 70862, 1353, -4498, -4498, - -4498, 70862, 2265, 70862, 70862, -4498, -4498, -4498, 60857, 52592, - 61292, -4498, 70862, -4498, 89, 849, -4498, -4498, -4498, 0, - -4498, 1756, -4498, 91235, 2679, 52592, 2579, -4498, 1524, -4498, - -4498, -4498, -4498, -4498, -4498, 2507, 70862, 2570, 2573, 60857, - 52592, -4498, 81302, 56072, 2469, 2274, -4498, -4498, -4498, -4498, - -4498, 1677, 2725, 324, 2726, 29762, 2281, 312, 312, 2282, - 2580, -4498, -4498, -4498, 285, 2283, 2284, -4498, 237, 237, - 2285, 2286, -4498, 270, 2289, 2290, 2737, 2740, 274, 2292, - 2294, 2295, 1541, 312, 29762, -4498, 2298, 237, 2306, 2307, - 2311, 2754, 2312, -4498, 2758, 2313, 335, 340, 2314, 2315, - -4498, 2285, -4498, 238, 2316, 2318, 2319, 2320, 2321, 2322, - 2323, 2324, 29762, 29762, 29762, -4498, 26146, 1401, 849, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, 276, 4980, -4498, - 2359, -4498, -4498, 2509, -4498, -4498, 29762, -4498, -4498, 62, - -4498, 277, -4498, -4498, -4498, 1401, 2582, 2326, -4498, -4498, - 1283, 2327, -4498, 1808, -4498, -4498, -4498, -4498, -4498, -4498, - 55202, 2748, -4498, 781, 849, 244, 1121, 2694, 46937, 47372, - -4498, -4498, 2571, -4498, 70862, -4498, -4498, 29762, 44772, -4498, - 1401, 120, -4498, -4498, -4498, -4498, 1562, -4498, -4498, -4498, - -12, -4498, 11322, -4498, 1564, 1852, 70862, 70862, 2753, -4498, - -4498, -4498, 1874, -4498, -4498, 1273, 1273, 29762, 1273, 1028, - 1267, 28406, 29762, 2635, 2532, 1193, 1120, 2637, -4498, 2536, - 1716, 1732, 65207, 70862, 81737, 2453, -4498, 45642, 1317, 1401, - 2417, 2418, 2470, 49547, 2340, 2424, 2425, 2476, -4498, 2588, - -4498, -4498, 2430, 2501, 2439, 82172, -4498, -4498, 961, -4498, - -4498, -4498, 961, -4498, 2375, 1014, 906, 266, 2442, 239, - 212, 2739, -4498, 1325, 2493, -4498, -4498, -4498, 5972, 70862, - 2687, 8039, 2572, 303, 2575, 2504, -4498, -4498, 2624, 2463, - 70862, 2464, 2591, 303, 308, 82607, -4498, -4498, -4498, -4498, - -4498, -4498, 5490, 24848, -4498, 2467, 2446, 2477, 70862, 58247, - 776, 2587, 2590, 1251, 1703, 202, 2524, 70862, 1369, 2597, - 70862, 2400, 2478, 2479, 2683, 2404, 1725, 2778, 2402, -4498, - -4498, -4498, 1900, 2592, -4498, 2681, 2723, 7433, 2480, 2484, - 89543, 896, 43465, 70862, 70862, 2764, 1367, 2491, -4498, -4498, - -4498, 1367, 70862, 2499, 2510, 70862, 303, -4498, 2818, 303, - 303, 1374, 2826, 2514, 464, 1309, -10, 2402, 1579, -4498, - 2515, 2518, 259, -4498, 2622, -4498, -4498, 2525, 65207, 250, - 1588, 2402, 2522, 2531, 2404, 2404, 70862, 70862, 70862, 70862, - 70862, 170, 2855, 2859, 2533, 200, 2581, 2454, -4498, 51722, - 2534, 78257, -4498, -4498, 70862, 2537, 1825, 2402, 1458, 1402, - -4498, -4498, -4498, 915, -4498, 70862, -4498, 70862, -4498, 1914, - 91235, 2653, 2713, -4498, 2497, -4498, 1954, 303, -4498, 70862, - 70862, 1996, 2656, 1416, 904, 91235, 2659, 2720, 70862, 2724, - 2548, 2508, 2541, 46072, -4498, 2172, 2481, 2895, 70862, 49547, - -4498, 2907, 961, -4498, 91235, 2673, 2792, -4498, 70862, 2690, - 2486, -4498, 2838, 2551, -4498, -4498, 59, 70862, -4498, 2806, - 52592, 325, 849, 2538, 52592, 2728, 70862, 70862, 70862, 70862, - -4498, -4498, 2697, 809, 224, -4498, 51722, -4498, 70862, 2709, - 1579, 2710, 2922, 70, 1666, 83042, 2805, -4498, 83477, 2513, - 2929, 91235, 2760, -4498, 1803, -4498, 2640, -4498, 56942, 225, - -4498, -4498, -4498, -4498, 91235, 70862, -4498, 2516, -4498, -4498, - 29762, -4498, -4498, -4498, 2128, -4498, 91235, 2257, 2257, -4498, - -4498, 2937, 2598, 2599, 2128, -4498, 2128, -4498, 91235, -4498, - 2526, 2527, 2636, 2128, -4498, 2605, 2606, 2607, -4498, 2535, - 2608, 2128, -4498, -4498, 1787, -4498, 83912, 56942, 225, 52592, - 52592, 2844, 167, 2845, 2593, 2853, 2601, 43465, 225, 181, - 70862, 70862, 52592, 70862, 70862, 70862, -4498, 70862, -4498, -4498, - -4498, -4498, 91235, 70862, 70862, 91235, -4498, 52592, 51722, 2856, - 2858, 225, 70862, 70862, -4498, 11322, 1569, 84347, 1052, 55637, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, 70862, -4498, - 70862, -4498, 70862, -4498, 70862, -4498, 70862, -4498, -4498, -4498, - 70862, -4498, 70862, 1583, -4498, -4498, 1589, 134, 70862, 70862, - 693, 56942, 70862, 2747, 70862, 70862, 70862, 70862, 70862, 2626, - 2327, 560, -4498, 1322, 203, 65207, 2756, -4498, -4498, 1607, - 1807, 1085, 70862, 931, 1755, -4498, -4498, 61292, 60422, 2851, - 79, 70862, -4498, -4498, 3877, 29762, 1401, 27050, -4498, -4498, - 11322, 2603, 29762, 29762, 2557, 2128, 2128, -4498, 858, 29762, - 29762, 29762, 2128, 2128, 2997, 29762, 43465, 29762, 32926, 23066, - 29762, 29762, 26598, -4498, 29762, 2777, 34276, 29762, 1121, 2781, - 29762, 1121, 2997, 3005, 3005, 1233, 4294, 2566, 1401, -4498, - 2128, 844, -4498, 223, 91235, 29762, 29762, 29762, 29762, 49547, - 2647, 185, 70862, 29762, 2569, 1697, -4498, 29762, -4498, 2574, - 29762, 2648, 221, 29762, 29762, 29762, 29762, 29762, 29762, 29762, - 29762, 29762, -4498, 35150, 232, 2860, 2880, 22, 379, 69122, - 27502, 2873, 22160, -4498, 288, 2873, -4498, -4498, -4498, 70862, - 2748, -4498, -4498, 2654, -4498, -4498, -4498, -4498, -4498, 289, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, 2577, -4498, -4498, - -4498, -4498, 2577, -4498, 2583, 7203, 2586, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, 2867, 2874, 225, 70862, 353, 62162, -4498, - 27954, -4498, 1618, -4498, 2595, -4498, 2849, -4498, 2594, -4498, - 8992, 2849, -4498, -4498, 189, 2707, 2847, 2790, -4498, -4498, - -4498, 2602, 11322, -4498, 1577, 11322, 1786, -4498, -4498, -4498, - -4498, -4498, -4498, 1139, -4498, 70862, 893, 2635, 1120, 2657, - 851, 3019, 70862, -4498, 39523, 2788, -4498, 3006, -4498, 92081, - -4498, 2604, -4498, 91658, 88262, -4498, -4498, 550, -4498, 1022, - 2684, 2685, 2741, 52592, 70862, 70862, -4498, 49547, 52592, 70862, - 70862, -4498, 52592, 70862, 70862, -4498, -4498, -4498, -4498, -4498, - 48242, 47, 60422, 2745, 59552, -4498, -4498, 2614, 70862, 2674, - 2869, 2870, -15, -4498, -4498, 84782, -4498, 2827, 52592, 70862, - 70862, 29762, 2832, 70862, 70862, -4498, 437, 2700, 2714, -4498, - 70862, 2719, 56942, 2630, 70862, 70862, 91235, 2704, 656, 56942, - 2686, 43901, 70862, 70862, 70862, 70862, 2767, 2945, 91235, 70862, - 2893, 1239, 65207, 345, 1829, 2402, 2852, -4498, 2958, 704, - -4498, 52592, -4498, 70862, 2854, -4498, -4498, -4498, 69557, 3062, - 2768, -4498, -4498, 85217, -4498, -4498, -4498, 1628, -4498, 52592, - 52592, 70862, 9340, 85652, 729, 2877, -4498, -4498, 91235, -4498, - 70862, 70862, 70862, 2969, 2900, 70862, 62597, 86087, 86522, 1196, - 1268, 2908, 70862, 63032, 2909, -4498, 2802, 70862, -4498, -4498, - 49982, 52592, 70862, 284, 49547, -4498, -4498, 70862, -4498, 2868, - 273, -4498, 70862, 8868, -4498, 2751, 2762, 70862, 2875, 346, - 1841, 2402, 70862, 70862, 2671, 1638, 2757, 53, -4498, 2876, - 63, 70862, -4498, 52592, 471, -4498, 2831, 52592, 70862, 9905, - -4498, -4498, 303, -4498, -4498, -4498, -4498, -4498, 70862, 70862, - 303, 70862, 303, 1380, -4498, 52592, 70862, -4498, -4498, -4498, - 70862, 9385, 70862, 70862, 70862, 70862, 52592, 70862, -4498, -4498, - 1264, 975, 1489, 1515, 735, 70862, 2962, 70862, 86957, 52592, - 70862, 70862, 70862, 1573, -4498, 2816, -4498, 52592, 471, 9600, - 70862, 70862, 2783, 2784, 195, 2863, -4498, -4498, -4498, -4498, - -4498, -4498, 2952, 3120, 87392, 263, -4498, 2956, 2961, 2765, - 2766, 2965, 70862, 263, 70862, -4498, -4498, -4498, -4498, 2966, - 70862, 263, 2973, 263, 2883, 2905, 142, 2992, 2738, 1672, - -4498, -4498, 29762, 91235, -4498, 1684, -4498, 2744, 809, -4498, - -4498, 49547, 70862, 178, 126, 3038, 58682, 963, 3028, 70862, - 2771, 70862, 3030, 963, 70862, -4498, 1452, 60422, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, 3032, -4498, 849, - 2172, 2172, 2172, 2172, -4498, -4498, -4498, -4498, 2934, 1711, - -4498, 2743, 2172, 70862, 2857, 963, 2749, 3049, -4498, 1579, - 3050, 897, 70862, 58682, 1863, 2774, 2949, 3163, 1666, 849, - 2955, 2942, -4498, 25271, 8433, 2944, 2998, 56072, 3033, 3036, - 3055, -4498, 1914, -4498, 3175, -4498, 29762, 1690, 2761, 163, - -4498, -4498, 2759, 2527, 2775, 2776, 2763, 2769, -4498, 2128, - 184, 70862, 2770, 1223, 696, 2884, 2128, 2981, 2772, -4498, - 3077, 225, 1954, -4498, 2226, -4498, 70862, -4498, 70862, 70862, - 70862, 70862, 1996, -4498, -4498, 2963, 225, 2226, 2968, 225, - 225, -4498, 3013, 2970, 225, 163, 2226, 2892, 3078, 56072, - -4498, 167, -4498, -4498, 29762, 2985, 1666, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, 1706, -4498, 70862, -4498, 3052, - 3053, 3054, 2779, 2782, 2813, 70862, 2785, -4498, 2779, 303, - 2779, 2327, 2327, 2779, 2782, 52157, 3216, 3076, -4498, 2865, - 2791, 3089, 697, -4498, 699, 834, 3015, -4498, -4498, -4498, - -4498, 91235, -4498, 52592, 2833, 70862, 70862, -4498, 143, 2993, - 2796, 52157, 3203, 225, -4498, 56942, -4498, -4498, 91235, 2878, - 2891, 56942, 3003, 2864, -4498, -4498, -4498, -4498, -4498, 91235, - -4498, 3058, 70862, 1708, -4498, -4498, 1530, -4498, 1540, 29762, - 207, -4498, 9880, 1712, 29762, 2808, 2812, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, 2820, 3118, -4498, 1741, 1746, 1751, - 2824, 2828, 2701, 2829, 9945, 2830, 2843, 32926, 32926, 26146, - 2174, -4498, 32926, 2837, 3007, 1753, 9315, 2840, 2848, 10266, - 28858, 29762, 28858, 28858, 10473, 2840, 2861, 1759, 49547, 3002, - 10863, 1761, -4498, 29762, 49547, 3357, 29762, -4498, 29762, 2862, - -4498, -4498, 5433, 5433, 5433, 2997, -4498, 2850, -4498, 32926, - 32926, -4498, 1517, 26146, -4498, -4498, 3127, -4498, -4498, 1544, - -4498, 2866, -4498, -4498, 2092, 43465, 4331, 29762, 227, 29762, - 2569, 29762, 2925, 5433, 5433, 5433, 352, 352, 190, 190, - 190, 1762, 379, -4498, -4498, -4498, 2871, 2887, 2889, 3029, - 2894, 29762, -4498, 1930, 2040, 70862, 2433, 2663, 2872, -4498, - -4498, -4498, 36025, 2888, 29762, 29762, 29762, 2897, -4498, 1855, - 11322, 114, -4498, 292, 2888, -4498, 915, 2128, 844, 47807, - -4498, -4498, 29762, -4498, -4498, -4498, 1874, -4498, -4498, -4498, - -4498, -4498, 70862, 1807, 29762, -4498, -4498, 3072, 2879, 29762, - 1577, -4498, -4498, 2910, -4498, 29762, -4498, -4498, -4498, 2327, - -4498, 3080, -4498, -4498, -4498, 36025, 2896, 2903, 38648, 3051, - -4498, 70862, -4498, 70862, 151, -4498, -4498, -4498, 2901, -4498, - -4498, 88262, 1662, -4498, 91658, -4498, 91658, -4498, 1662, 3258, - -4498, 88262, 1466, 52592, 70862, 70862, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, 52592, - 52592, 3059, 70862, 3060, 3061, 29762, 835, 70862, 2899, 2902, - 1067, 3130, 70862, -4498, 3184, 225, -4498, -4498, 2972, -4498, - 11322, -4498, -4498, -4498, -4498, -4498, 52592, 70862, -4498, 56072, - -4498, 1914, 91235, -4498, -4498, -4498, 70862, 2923, 70862, -4498, - 70862, 70862, 70862, 1996, -4498, -4498, -4498, -4498, 1004, 91235, - -4498, -4498, 70862, 70862, 628, 2977, 2980, 70862, -4498, 1062, - 2622, 10164, 70862, 70862, 70862, 3153, 70862, -4498, -4498, -4498, - -4498, 3096, -4498, -4498, 88262, -4498, 2226, 861, 2982, 2402, - 3104, -4498, 3218, 3094, -4498, 1079, -4498, 70862, 3031, -4498, - -4498, -4498, -4498, 3220, 225, 3224, 225, 70862, 70862, 70862, - 70862, 3035, -4498, -4498, -4498, -4498, 3037, 3154, -4498, 49547, - 49547, 49547, 1774, -4498, -4498, 849, -4498, -4498, -4498, -4498, - -4498, -4498, 3187, -4498, 1775, -4498, 1046, -4498, -4498, -4498, - -4498, -4498, -4498, 52592, 70862, 10496, 3231, 70862, 70862, 70862, - 1400, -4498, 1015, 91235, -4498, 89966, 52592, 70862, 49547, 70862, - 2999, 52592, 2978, -4498, -4498, -4498, 3159, 3099, -4498, 278, - 3100, 52592, 2986, -4498, 3008, -4498, -4498, 3009, 1895, 2402, - 1579, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, 901, - 383, 1923, 2402, 3011, -4498, 3017, -4498, -4498, -4498, 3156, - 3167, 3170, 3022, 3023, 3073, 3027, 3039, 3079, -4498, 3040, - 3081, 3042, 3086, 3145, 3043, 225, 91235, 3160, 849, 3068, - 3280, 225, -4498, 3046, -4498, -4498, 3383, -4498, 70862, -4498, - 3048, 1966, 2402, -4498, -4498, 52592, 70862, -4498, -4498, -4498, - 263, 91235, 70862, 3226, -4498, -4498, -4498, 263, 263, 70862, - 70862, 263, 3228, -4498, 3229, 70862, 3230, -4498, 263, -4498, - -4498, 222, -4498, -4498, -4498, 2883, 3257, 41285, -4498, 3430, - 5155, 2979, -4498, 49547, 41285, 1734, 1724, 118, -10, -4498, - 56072, 70862, 56072, -4498, 126, 3094, 70862, 70862, 2994, 2983, - -4498, -4498, -4498, -4498, 52592, 715, 52592, 2128, -4498, -4498, - 3064, -4498, 70862, 1666, 394, 3071, 3394, 2600, 325, 3125, - 1620, 3351, 2774, -4498, -4498, -4498, -4498, 70862, 70862, 809, - 849, -4498, 3000, 2996, -4498, 70862, 70862, 70862, 70862, 70862, - 2833, 3004, 3010, 91235, 46, 3198, 3199, 2404, 3427, 3321, - 1807, 2774, 3090, 3324, 70862, -4498, 1784, 125, -4498, 849, - 56072, 88685, 3316, -4498, 8225, -4498, -4498, 677, 70862, 3303, - -4498, -4498, 1807, 225, 91235, 1800, -4498, -4498, -4498, 2128, - -4498, -4498, 1343, 1343, 3020, -4498, 3021, -4498, 3413, -4498, - -4498, -4498, -4498, -4498, -4498, 3026, -4498, -4498, 70862, -4498, - 225, 167, 3082, 225, 3083, 225, 225, 70862, -4498, 70862, - -4498, -4498, 70862, 70862, -4498, -4498, 70862, 51722, 225, -4498, - 11322, 3335, -4498, -4498, 3150, 3158, 3161, 70862, 2779, 56942, - -4498, 3034, 52592, 771, -4498, -4498, 3234, -4498, -4498, 65207, - 3157, -4498, -4498, -4498, -4498, 3363, 3364, -4498, -4498, -4498, - 255, -4498, -4498, -4498, 52592, 60857, 254, 52592, -4498, 1914, - 3304, -4498, -4498, 1954, 303, -4498, 3308, 70862, 3309, -4498, - -4498, -4498, 3075, 10976, 29762, -4498, 3372, 91235, -4498, 5567, - -4498, -4498, -4498, 29762, -4498, -4498, -4498, -4498, -4498, 29762, - -4498, 29762, 3365, -4498, 23519, 3512, 3512, 3067, 91235, 32926, - 32926, 32926, 32926, 1306, 2306, 32926, 32926, 32926, 32926, 32926, - 32926, 32926, 32926, 32926, 33830, 466, -4498, 3259, 29762, 29762, - 3375, 3365, -4498, 91235, 3087, 2840, 3091, 3092, 29762, -4498, - -4498, 1816, 34713, 3093, 49547, -4498, 29762, 9333, 1817, 3121, - 11067, 1401, 5637, 849, 29762, 2496, 4557, 29762, 1822, 29762, - 3376, -4498, -4498, -4498, 3097, -4498, -4498, 91235, 29762, 3098, - 2662, 32926, 32926, 2823, -4498, 3410, 29762, 26146, -4498, 3265, - 3128, 39960, -4498, 23972, 3105, 498, 498, 498, 498, -4498, - 70862, 70862, 70862, 36462, 3378, 35587, 69992, 3106, 1856, -4498, - 69992, 70427, -4498, 3115, -4498, 3102, 1401, 29762, 3390, 709, - 709, 3265, -4498, 29762, 29762, 29310, 3110, -4498, 3390, 244, - 3111, -4498, -4498, 11322, 3114, -4498, -4498, 3113, -4498, 3117, - -4498, 2879, 231, -4498, 5689, 3311, -4498, -4498, -4498, 3106, - 30214, 3252, -4498, 1823, -4498, -4498, 3494, 3252, -4498, -4498, - 1835, 39523, 2896, 27954, 1401, 1857, 1486, -4498, -4498, 88262, - -4498, 3188, -4498, -4498, -4498, 2226, 2226, 986, 2779, 3422, - 986, 5979, -4498, -4498, 36899, 70862, 70862, -4498, 70862, 1862, - 1440, 70862, -4498, 70862, -4498, -4498, -4498, -4498, 3542, -4498, - 70862, -4498, -4498, 3178, 3179, -4498, 70862, 70862, 70862, 70862, - 3373, -4498, -4498, 1913, -4498, -4498, 52592, 70862, -4498, -4498, - -4498, 380, 2208, 2402, -4498, 3205, -4498, -4498, -4498, 3388, - -4498, 3531, 3215, 70862, 3443, 70862, 3133, -4498, 1440, 775, - 2404, 863, -4498, -4498, 3201, -4498, -4498, 70862, -4498, 70862, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, 3260, -4498, -4498, - -4498, -4498, 49982, -4498, -4498, 70862, -4498, 49547, 41285, 49547, - -4498, 1117, 387, 2271, 2402, 70862, -4498, 3212, -4498, 3213, - 3217, 3268, 953, 937, 3221, 3222, 3269, 3146, 3147, 3148, - -4498, -4498, 1866, -4498, 3162, 3290, 70862, 2226, 3164, 3185, - 309, 849, -4498, -4498, 849, 2226, 849, 70862, 70862, 70862, - 3555, 3239, 70862, 70862, 70862, 70862, 70862, 70862, 3456, 721, - 1700, 52592, 70862, 70862, 52592, 70862, 70862, 70862, 70862, 70862, - 70862, 3467, 70862, -4498, 3543, 3470, 1680, 3513, 3227, 70862, - -4498, 70862, 2622, 70862, 70862, -4498, -4498, -4498, 3165, 3414, - 263, -4498, -4498, 3415, 3419, -4498, 263, 263, 3423, 263, - -4498, -4498, -4498, -10, -4498, 222, 70862, 3117, 2128, 1900, - -4498, -4498, -4498, -4498, -4498, -4498, 2738, -4498, -4498, 2114, - -4498, -4498, 70862, 3172, 70862, 70862, 32926, -4498, 1340, 265, - -4498, 3424, 70862, 3209, -4498, -4498, -4498, 3334, 70862, -4498, - -4498, -4498, -4498, -4498, 3177, -4498, 3446, 58682, 2226, 52592, - 52592, 2226, -4498, 91235, 3180, 2774, -4498, -4498, -4498, -4498, - -4498, -4498, 52592, 2978, 52592, 325, 838, 87827, 3214, -4498, - 3181, 3481, -4498, 3186, 3189, -4498, -4498, 70862, 3094, 1867, - 1579, 3601, 600, 1652, -4498, 59987, 1863, 3446, -4498, -4498, - -4498, 3570, 3277, -4498, 1807, 70862, 2833, 3277, 849, 70862, - 2674, -4498, 88262, 29762, 29762, -4498, 3190, -4498, 3195, 8746, - -4498, 3263, 3193, 2172, -4498, -4498, -4498, -4498, -4498, -4498, - 3275, 3200, 70862, -4498, -4498, 3202, -4498, 3206, -4498, -4498, - -4498, -4498, -4498, -4498, 225, -4498, -4498, 70862, -4498, 70862, - -4498, -4498, 225, 225, 225, 225, -4498, 3323, -4498, 70862, - 70862, 70862, 70862, 2779, -4498, 303, -4498, 3497, 52157, -4498, - -4498, 1875, 70862, -4498, -4498, -4498, 3556, 79, 3503, -4498, - -4498, 3461, 311, 3462, 3464, 311, 3465, 311, -4498, 29762, - 11322, -4498, 3219, -4498, 11322, 6030, 11322, 3375, -4498, 1882, - 29762, -4498, 2890, 2890, 2890, 4364, 3509, -4498, 1064, 3232, - 2890, 2890, 2890, 397, 397, 191, 191, 191, 3512, 466, - 11322, 11322, -4498, -4498, 3225, -4498, -4498, -4498, 2840, -4498, - 30666, 3366, 3619, -4498, -4498, -4498, 3256, 3264, 3235, -4498, - 29762, 31118, 3233, 92081, 3404, -4498, 1605, 29762, 29762, 4444, - -4498, 5304, 29762, 91235, 1883, 4444, 243, 29762, 4635, 5243, - 29762, 29762, 3698, 6333, 3237, 29762, 89108, -4498, -4498, -4498, - 1890, 29762, 70862, 70862, 70862, 70862, -4498, -4498, -4498, 69992, - 70427, 3240, 24410, 1856, 3238, 70862, -4498, -4498, 3241, 36025, - 3471, 3416, -4498, 36025, 3416, 1375, 3416, 3477, 3315, 40397, - -4498, -4498, 3242, 3417, -4498, 22160, 1473, 11322, 3637, 3527, - 29762, 3243, 3245, 3246, 11322, 11322, 29762, -4498, 849, 3527, - 849, -4498, -4498, 43465, -4498, -4498, -4498, -4498, -4498, 3447, - 11322, 27502, -4498, 1807, 70862, 1401, 67, -4498, 3261, 70862, - -4498, 3252, -4498, -4498, 3318, 1892, -4498, -4498, -4498, -4498, - -4498, 3330, 60422, 3551, -4498, 29762, 1901, -4498, 3292, 3642, - 146, 1905, 1933, 1440, -4498, 3209, -4498, 1396, 3528, 192, - -4498, 225, -4498, 91235, -4498, 70862, 70862, -4498, -4498, -4498, - -4498, 70862, 2340, -4498, -4498, 70862, 70862, 70862, 70862, -4498, - 52592, 70862, -4498, 70862, -4498, 49547, 1724, 3466, -4498, -4498, - 3469, 309, 70862, -4498, 91235, 225, 225, -4498, -4498, -4498, - -4498, -4498, 3270, 3663, 3355, 70862, 70862, 70862, -4498, 70862, - 52592, 70862, 70862, 2128, 2128, 91235, 3267, -4498, 2128, 2128, - 3271, -4498, 52592, 70862, 70862, -4498, -4498, -4498, -4498, 49547, - 40837, 3350, -4498, 29762, 3664, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, 52592, 70862, 3353, -4498, 3356, -4498, -4498, - -4498, 70862, 70862, 70862, 70862, 3593, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, 70862, -4498, 70862, -4498, - -4498, 849, 849, 91235, 225, 225, -4498, -4498, -4498, 3535, - 263, -4498, 263, 263, -4498, -4498, 263, -4498, 3285, 362, - -4498, 1440, 1670, 3580, 3583, 29762, -4498, 1009, 4364, -4498, - -4498, -4498, -4498, 3209, 1666, 3345, 56942, 855, -4498, 3568, - 178, 58682, 1238, 3298, 3425, -4498, 2226, 2226, 3359, 70862, - 3725, 2226, 3185, -4498, 3515, 612, 70862, 3635, 3349, -4498, - 849, -4498, -4498, 2774, -4498, 1807, 70862, 58682, 2833, 1935, - -4498, -4498, -4498, 3346, 3199, 1863, 847, 70862, -4498, 3347, - 3732, -4498, -4498, 3611, 3511, 3319, -4498, 11322, 11322, 849, - 92504, 8225, 91235, 3618, -4498, 70862, 228, 3586, 225, -4498, - -4498, 225, 225, -4498, -4498, -4498, -4498, 70862, 2779, 2779, - 2779, -4498, 3514, -4498, -4498, 3578, -4498, 225, 52157, 311, - -4498, -4498, -4498, 311, 311, -4498, 311, -4498, 11322, -4498, - -4498, -4498, -4498, 6353, 32926, 3620, -4498, 3326, 91235, -4498, - 3327, 1939, 1940, 34276, 3478, -4498, -4498, -4498, 6707, 3379, - 11322, 3433, 3328, 3332, 4444, 4444, 5304, 1941, -4498, 4444, - 29762, 29762, 4444, 4444, 29762, -4498, -4498, 6993, 3510, -4498, - -4498, 7315, -4498, -4498, -4498, -4498, -4498, -4498, 50417, 69992, - 3336, 70862, 1856, 36025, -4498, -4498, 1698, -4498, 36025, 3587, - -4498, 36025, 56942, -4498, 70862, 3337, 70862, -4498, 114, 31570, - 29762, 3391, -4498, -4498, -4498, 3265, -4498, 3391, -4498, 3338, - 70862, 2326, -4498, -4498, 3713, 36899, 3674, 3354, -4498, -4498, - -4498, -4498, 52157, 3541, 52157, 1440, 7788, 3209, 36899, 44337, - 70862, 70862, 70862, 3506, 3209, 3345, -4498, -4498, -4498, -4498, - -4498, -4498, 3358, -4498, -4498, -4498, -4498, 3435, -4498, -4498, - 555, 2756, -4498, 1945, -4498, -4498, -4498, -4498, -4498, 3543, - -4498, -4498, 41285, 52592, 70862, -4498, 3437, -4498, -4498, -4498, - -4498, -4498, 38211, 43465, -4498, 953, 3370, 3371, 937, -4498, - -4498, -4498, -4498, -4498, -4498, 70862, 7878, 3374, 865, 2756, - 70862, 70862, -24, 1101, 1445, 2779, 3672, -4498, -4498, -4498, - -4498, 3543, -4498, -4498, 263, -4498, -4498, -4498, -4498, 49547, - -4498, 3381, -4498, -10, 3701, 56942, 3783, 3783, 70862, -4498, - 8182, 3576, -4498, 3345, 3600, 3646, -4498, 3377, 70862, 3537, - 3380, 3382, 807, 807, 70862, 70862, 70862, 1946, 1807, -4498, - 325, 3694, 58682, 3094, -4498, 1370, 3384, 3702, -4498, 3804, - 2833, 3004, 3389, -4498, -4498, 59987, 3582, 3277, 3199, 3522, - -4498, 3524, -4498, 1098, -4498, 1807, 70862, 70862, 36899, -4498, - 91658, -4498, 1947, -4498, -4498, -4498, 3463, 2888, 3500, 3518, - 3406, 70862, 653, -4498, -4498, -4498, -4498, -4498, 70862, -4498, - 254, -4498, -4498, -4498, -4498, -4498, 4625, 32926, 91235, 1959, - 29762, -4498, 29762, -4498, 3810, -4498, -4498, -4498, 740, -4498, - -4498, -4498, 4444, 4444, 4444, -4498, 3811, 3265, -4498, -4498, - 1961, 3829, -4498, 70862, 1967, -4498, 29762, 3411, -4498, -4498, - 36025, 1698, 3412, 1969, 70862, 1976, 91235, 3420, 3418, 18, - 3426, 22613, 3429, -4498, -4498, -4498, -4498, -4498, 11322, 11322, - 70862, -4498, 3421, -4498, -4498, -4498, 70862, 1991, -4498, 88, - 25694, -4498, -4498, 771, 986, 254, 3642, 3345, -4498, 3428, - -4498, -4498, -4498, 1177, 1177, 70862, 3345, -4498, -4498, 70862, - 3501, -4498, -4498, 49547, 3483, -4498, 902, 2756, 70862, 91235, - 1954, 85, -4498, 91235, 91235, -4498, -4498, -4498, 29762, 3502, - -4498, -4498, -4498, -4498, -4498, 70862, 70862, 70862, 70862, 70862, - 225, -4498, 2019, -4498, 37336, -4498, -4498, 2578, 849, 2578, - 1545, -4498, -4498, 2578, -4498, 2578, -4498, 3285, 849, 3783, - 306, -4498, -4498, -4498, 1376, 3633, -4498, 159, 3621, 3519, - 3434, -4498, 56942, 3873, 3446, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -4498, 2020, 3094, 3742, 2774, 3347, 70862, -4498, - -4498, -4498, -4498, 29762, 3596, 1807, -4498, 1863, 3446, -4498, - -4498, -4498, 3277, -4498, -4498, 3828, 3630, 3830, 2833, -4498, - 2674, 2029, -4498, 8746, 92504, 91235, 3772, 3488, 3490, -4498, - -4498, 3493, 70862, -4498, -4498, 3094, -4498, 4625, 2030, -4498, - 2037, 2038, 3607, 3495, -4498, 29762, 107, 3115, 50417, 3468, - -4498, 2039, -4498, 11322, 70862, -4498, -4498, 29762, -4498, 2044, - -4498, -4498, 29762, 3473, 29762, -4498, 31570, 3458, -4498, 3883, - -4498, -4498, 2888, 36899, -4498, 3579, -4498, 3761, -4498, 70862, - 3505, 43465, 2879, 2879, 1666, -4498, 1440, -4498, 70862, -4498, - 29762, -4498, 3559, -4498, -4498, 2050, -4498, 1140, 3622, 3771, - 2059, 2068, 8464, 70862, 2782, 1445, 2782, -4498, 2779, -4498, - -4498, 49547, -4498, 50852, -4498, -4498, -4498, 849, -4498, 849, - 3678, 70862, 46502, 849, 849, -4498, -4498, -4498, -4498, -4498, - 3803, 3748, -4498, -4498, -4498, -4498, 389, -4498, 3677, 3679, - 70862, -4498, 3484, -4498, 2074, 3603, -4498, -4498, 70862, 3907, - 3910, -4498, 630, 8501, 56942, 3347, 3199, 1863, 1724, -4498, - 3683, -4498, 3684, -4498, 3496, 2774, 8225, -4498, -4498, 301, - 3787, 3790, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - 2840, 32022, 32022, 3498, -4498, -4498, 70862, -4498, 2076, 2089, - -4498, 2090, 31570, 2097, -4498, 70862, 3504, -4498, -4498, 39523, - 52157, 1177, 3507, -4498, 3508, -4498, -4498, 3600, 1440, 2756, - 11322, 70862, 56942, 3900, -4498, -4498, -4498, 3622, -4498, -4498, - -4498, 2756, 70862, -4498, -4498, 2098, -4498, -4498, -4498, 70862, - 3181, -4498, 3181, -4498, -4498, 3638, -4498, 753, 753, 3843, - -4498, 3566, -4498, -4498, 3520, -4498, 3960, 70862, -4498, 953, - 1807, 58682, -4498, 3516, -4498, 3277, 3199, -4498, -4498, 36899, - 3277, -4498, -4498, -4498, 2192, 56942, 56942, 33378, 3644, 842, - 9793, -4498, -4498, -4498, -4498, 2099, -4498, 3658, -4498, 2109, - -4498, -4498, -4498, 941, 254, 2879, 29762, 1440, -4498, 3621, - -4498, 2756, 1954, 70862, -4498, -4498, -4498, -4498, 50852, 3181, - 3349, -4498, 3956, -4498, 233, -4498, -4498, -4498, -4498, 3094, - 3267, 3347, 49112, -4498, 3277, 2110, 2888, -4498, 1952, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, 3521, 3523, 3946, -4498, - -4498, -4498, -4498, -4498, -4498, 3530, -4498, -4498, -4498, -4498, - -4498, 8853, -4498, -4498, -4498, -4498, -4498, 3841, -4498, -4498, - -4498, -4498, -4498, -4498, 2111, -4498, -4498, -4498, -4498, -4498, - 2774, -4498, 2061, -4498, -4498, 2119, 1906, 3608, 3827, 32474, - 29762, -4498, 1440, 3692, -4498, 49112, 3277, -4498, 1952, 3639, - 3641, -4498, 8974, 56942, -4498, 2888, -4498, 3574, 3575, -4498, - 3544, -4498, 3835, 3836, 49112, 56942, 56942, 2117, -4498, -4498, - -4498 + 0, 2, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 5, + 1, 1, 0, 2, 0, 2, 0, 2, 2, 3, + 3, 1, 3, 3, 2, 1, 1, 2, 2, 2, + 3, 3, 5, 5, 5, 0, 3, 5, 5, 5, + 5, 3, 5, 3, 5, 3, 5, 5, 6, 1, + 1, 6, 4, 9, 7, 1, 0, 2, 0, 1, + 1, 1, 1, 1, 1, 3, 2, 3, 3, 2, + 5, 1, 3, 3, 3, 3, 1, 3, 3, 2, + 2, 2, 2, 3, 3, 3, 3, 1, 3, 1, + 3, 1, 1, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 1, 3, 5, 1, 1, 1, 1, 1, + 0, 1, 1, 2, 3, 1, 2, 3, 2, 1, + 1, 2, 1, 2, 1, 3, 3, 2, 3, 4, + 3, 2, 4, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 4, 6, 4, 6, 10, 13, 4, + 6, 10, 13, 4, 6, 4, 6, 5, 7, 11, + 14, 1, 3, 4, 3, 2, 5, 3, 6, 4, + 6, 6, 6, 5, 5, 6, 9, 4, 5, 7, + 6, 4, 8, 4, 2, 4, 3, 6, 4, 3, + 3, 3, 3, 2, 2, 3, 4, 4, 3, 3, + 3, 3, 3, 3, 4, 4, 3, 2, 3, 2, + 2, 3, 3, 2, 2, 3, 4, 4, 4, 5, + 1, 3, 2, 1, 1, 0, 2, 0, 2, 0, + 1, 1, 1, 3, 3, 2, 0, 1, 3, 3, + 1, 5, 3, 1, 2, 1, 3, 2, 3, 6, + 10, 1, 1, 1, 1, 3, 1, 3, 1, 1, + 1, 4, 1, 3, 4, 6, 4, 8, 2, 2, + 11, 9, 1, 1, 1, 0, 1, 1, 1, 1, + 3, 2, 0, 1, 1, 1, 3, 3, 1, 1, + 3, 3, 3, 3, 4, 3, 2, 1, 0, 2, + 0, 3, 0, 1, 0, 1, 3, 2, 1, 1, + 1, 3, 0, 1, 3, 1, 12, 15, 11, 14, + 13, 16, 1, 1, 2, 2, 2, 2, 1, 0, + 1, 0, 3, 0, 1, 3, 1, 3, 1, 1, + 1, 1, 1, 4, 2, 4, 2, 0, 3, 1, + 1, 2, 2, 1, 3, 4, 5, 2, 5, 5, + 1, 2, 1, 2, 2, 2, 3, 3, 3, 0, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 5, + 7, 3, 8, 4, 9, 11, 2, 0, 3, 0, + 1, 3, 1, 2, 2, 2, 0, 1, 3, 3, + 6, 4, 0, 1, 1, 2, 2, 0, 3, 3, + 2, 1, 1, 2, 2, 4, 0, 1, 0, 6, + 1, 1, 1, 3, 3, 3, 5, 2, 2, 2, + 0, 3, 4, 4, 0, 2, 0, 4, 0, 3, + 8, 11, 7, 10, 5, 2, 3, 0, 8, 11, + 4, 1, 0, 6, 5, 8, 4, 6, 1, 0, + 3, 0, 1, 2, 2, 2, 1, 2, 3, 2, + 2, 2, 2, 3, 3, 3, 1, 3, 1, 0, + 1, 2, 2, 1, 1, 3, 6, 10, 1, 0, + 1, 2, 2, 0, 2, 2, 1, 0, 5, 7, + 1, 0, 7, 2, 0, 3, 5, 5, 8, 2, + 0, 2, 2, 2, 1, 5, 2, 0, 2, 7, + 6, 10, 6, 6, 6, 6, 7, 6, 9, 9, + 6, 7, 6, 8, 8, 8, 8, 6, 6, 7, + 7, 8, 6, 9, 6, 7, 2, 2, 2, 2, + 1, 2, 1, 0, 7, 6, 4, 0, 1, 3, + 4, 1, 3, 1, 2, 2, 2, 2, 1, 1, + 10, 13, 2, 0, 2, 2, 1, 0, 5, 4, + 4, 11, 14, 12, 15, 5, 7, 11, 2, 1, + 4, 0, 8, 11, 1, 1, 7, 9, 8, 10, + 8, 4, 0, 5, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 1, 1, 1, 1, 1, 8, 16, + 20, 1, 1, 2, 1, 3, 1, 1, 1, 3, + 1, 2, 0, 1, 2, 4, 1, 1, 1, 1, + 1, 3, 0, 1, 0, 1, 1, 4, 0, 1, + 3, 0, 1, 1, 1, 1, 2, 0, 0, 2, + 2, 1, 2, 2, 2, 2, 11, 13, 1, 3, + 5, 1, 3, 5, 1, 2, 2, 1, 8, 4, + 5, 4, 4, 4, 3, 7, 8, 6, 6, 6, + 6, 6, 4, 7, 5, 8, 3, 1, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, + 3, 1, 0, 1, 3, 7, 9, 9, 8, 3, + 0, 13, 1, 3, 5, 5, 3, 6, 2, 1, + 0, 2, 0, 2, 4, 0, 1, 0, 6, 8, + 8, 1, 3, 5, 5, 7, 9, 7, 9, 5, + 6, 6, 4, 6, 4, 6, 8, 4, 6, 4, + 6, 5, 7, 1, 1, 1, 2, 1, 2, 1, + 1, 1, 3, 3, 3, 3, 2, 2, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, + 2, 3, 1, 3, 5, 2, 2, 0, 6, 6, + 6, 6, 6, 6, 6, 8, 9, 8, 8, 9, + 8, 9, 9, 7, 10, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 2, 3, 3, 3, 3, 2, + 1, 2, 1, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 8, 8, 8, 8, 8, 8, 9, + 2, 0, 1, 2, 1, 1, 1, 2, 1, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 1, 2, 3, 3, 3, 3, 4, 4, 3, 3, + 3, 4, 4, 3, 4, 4, 1, 1, 1, 0, + 7, 7, 10, 1, 1, 2, 4, 5, 1, 3, + 2, 2, 2, 2, 1, 2, 2, 4, 3, 2, + 2, 2, 2, 3, 2, 2, 2, 5, 5, 5, + 1, 3, 1, 2, 3, 0, 6, 6, 9, 3, + 0, 3, 0, 5, 2, 0, 3, 3, 3, 7, + 7, 10, 1, 1, 1, 1, 1, 14, 17, 1, + 0, 1, 0, 1, 0, 2, 0, 1, 3, 5, + 5, 7, 2, 0, 1, 0, 1, 1, 0, 2, + 2, 0, 9, 12, 7, 2, 0, 3, 2, 1, + 3, 1, 3, 2, 1, 1, 2, 3, 2, 1, + 3, 3, 3, 2, 2, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 4, 5, 1, 3, 3, 1, + 3, 3, 5, 6, 1, 3, 2, 1, 3, 1, + 2, 4, 5, 1, 1, 1, 1, 3, 3, 2, + 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, + 1, 1, 1, 3, 3, 5, 2, 0, 2, 1, + 3, 5, 1, 2, 1, 0, 4, 6, 4, 6, + 4, 6, 3, 5, 5, 5, 1, 3, 1, 3, + 2, 2, 1, 2, 1, 2, 11, 10, 10, 2, + 2, 0, 9, 2, 0, 10, 11, 11, 5, 5, + 8, 3, 3, 6, 6, 1, 1, 1, 1, 1, + 1, 3, 1, 5, 5, 6, 6, 6, 6, 6, + 8, 8, 6, 6, 7, 9, 9, 8, 10, 6, + 6, 6, 6, 6, 8, 6, 8, 6, 8, 7, + 9, 6, 8, 7, 9, 8, 10, 9, 11, 8, + 10, 9, 11, 8, 8, 7, 6, 6, 6, 6, + 8, 8, 8, 8, 6, 9, 1, 0, 2, 0, + 7, 9, 8, 7, 6, 6, 6, 6, 6, 6, + 6, 9, 9, 6, 8, 6, 8, 8, 8, 8, + 6, 8, 6, 8, 7, 9, 7, 9, 6, 7, + 1, 3, 3, 3, 1, 1, 1, 1, 1, 6, + 6, 6, 6, 6, 6, 7, 7, 6, 9, 9, + 6, 6, 6, 6, 8, 8, 8, 6, 7, 6, + 6, 5, 1, 0, 3, 3, 5, 6, 6, 6, + 8, 1, 3, 1, 5, 5, 6, 7, 4, 4, + 4, 6, 13, 1, 1, 3, 3, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, + 1, 0, 3, 2, 0, 2, 2, 2, 2, 3, + 3, 2, 2, 2, 2, 3, 2, 5, 4, 3, + 3, 3, 1, 1, 0, 3, 2, 2, 1, 2, + 1, 3, 2, 1, 0, 9, 11, 12, 14, 3, + 4, 4, 0, 2, 5, 1, 0, 1, 2, 3, + 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, + 0, 5, 4, 6, 4, 3, 5, 5, 4, 4, + 6, 4, 6, 6, 5, 7, 9, 6, 1, 0, + 6, 11, 11, 11, 13, 9, 11, 1, 1, 10, + 4, 2, 5, 2, 0, 4, 5, 5, 4, 6, + 1, 3, 1, 1, 1, 1, 1, 2, 4, 1, + 1, 1, 0, 1, 0, 1, 0, 3, 0, 2, + 4, 3, 5, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 2, 1, 1, 1, 1, 0, + 5, 3, 0, 1, 1, 1, 1, 3, 9, 3, + 0, 2, 3, 2, 3, 7, 1, 3, 1, 4, + 4, 7, 2, 1, 1, 1, 3, 2, 8, 5, + 0, 4, 3, 0, 2, 0, 7, 2, 0, 5, + 3, 0, 2, 2, 2, 3, 1, 3, 1, 2, + 1, 0, 1, 2, 0, 8, 1, 3, 3, 5, + 2, 1, 3, 7, 1, 0, 3, 2, 2, 2, + 0, 2, 2, 1, 1, 3, 3, 1, 2, 4, + 4, 2, 3, 5, 5, 1, 1, 9, 9, 1, + 2, 4, 4, 4, 2, 2, 3, 1, 3, 6, + 1, 0, 2, 0, 3, 3, 4, 4, 4, 4, + 3, 2, 1, 1, 0, 1, 1, 0, 1, 5, + 1, 0, 1, 0, 3, 1, 3, 4, 3, 2, + 2, 1, 1, 1, 0, 2, 4, 5, 2, 3, + 1, 1, 1, 1, 3, 0, 1, 1, 1, 1, + 1, 3, 0, 1, 3, 1, 1, 1, 1, 1, + 2, 4, 4, 5, 2, 0, 1, 3, 1, 0, + 1, 2, 3, 2, 4, 2, 3, 2, 0, 4, + 5, 2, 0, 1, 3, 2, 3, 2, 3, 2, + 3, 2, 3, 1, 4, 3, 4, 5, 4, 5, + 4, 5, 2, 4, 1, 1, 0, 1, 4, 5, + 4, 0, 2, 2, 2, 1, 1, 0, 4, 2, + 1, 2, 2, 4, 1, 3, 1, 2, 3, 6, + 4, 0, 2, 6, 2, 1, 3, 4, 0, 2, + 0, 2, 0, 2, 4, 0, 1, 0, 1, 3, + 3, 7, 12, 1, 3, 2, 3, 3, 1, 2, + 2, 2, 2, 1, 1, 3, 3, 2, 2, 3, + 5, 6, 2, 3, 3, 4, 0, 1, 1, 1, + 1, 1, 2, 4, 1, 1, 1, 1, 2, 3, + 3, 0, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 1, 3, 0, 1, 1, 1, 1, 5, + 2, 1, 1, 1, 1, 4, 1, 2, 2, 1, + 3, 3, 2, 1, 0, 5, 2, 5, 2, 1, + 3, 3, 0, 1, 1, 1, 1, 1, 1, 3, + 3, 3, 3, 3, 3, 3, 0, 1, 4, 1, + 3, 3, 5, 2, 2, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, + 3, 3, 2, 2, 3, 5, 4, 6, 3, 5, + 4, 6, 4, 6, 5, 7, 3, 2, 4, 2, + 3, 3, 4, 3, 4, 3, 4, 5, 6, 6, + 7, 6, 7, 6, 7, 3, 4, 4, 6, 2, + 3, 4, 1, 1, 3, 2, 2, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 5, 6, 6, 7, 3, 4, 1, 1, + 2, 4, 1, 1, 1, 2, 2, 2, 2, 1, + 1, 4, 3, 5, 6, 8, 6, 6, 4, 4, + 1, 1, 1, 5, 1, 1, 4, 1, 4, 1, + 4, 1, 4, 1, 1, 1, 1, 1, 1, 6, + 4, 4, 4, 4, 6, 5, 5, 5, 4, 6, + 4, 4, 4, 4, 5, 7, 7, 9, 5, 4, + 6, 5, 7, 7, 7, 2, 3, 3, 3, 4, + 0, 4, 1, 3, 3, 1, 1, 1, 2, 2, + 0, 2, 4, 4, 6, 5, 0, 5, 0, 2, + 0, 1, 3, 3, 2, 2, 0, 6, 1, 0, + 3, 0, 2, 2, 0, 1, 4, 2, 2, 2, + 2, 2, 4, 3, 5, 4, 3, 5, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 4, 1, 4, 1, + 4, 1, 2, 1, 2, 1, 3, 1, 3, 1, + 3, 3, 1, 3, 3, 3, 2, 1, 3, 3, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 4, + 3, 2, 3, 0, 3, 3, 2, 2, 1, 0, + 2, 2, 3, 2, 1, 1, 3, 5, 1, 2, + 4, 2, 0, 1, 0, 1, 2, 2, 2, 3, + 5, 1, 0, 1, 2, 0, 2, 1, 0, 1, + 0, 1, 3, 3, 2, 1, 1, 1, 3, 1, + 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 2, 6, 2, 3, + 5, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ static const yytype_uint16 yydefact[] = { - 1499, 1284, 572, 1369, 1368, 1284, 258, 0, 1371, 0, - 1284, 393, 1019, 0, 0, 0, 0, 572, 1284, 0, - 1499, 0, 0, 0, 0, 0, 1512, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1284, 0, 0, - 1519, 0, 0, 0, 0, 1512, 0, 1373, 0, 0, - 0, 0, 0, 2, 4, 67, 68, 29, 28, 34, - 33, 92, 93, 53, 17, 81, 60, 127, 126, 128, - 40, 36, 75, 25, 27, 37, 41, 62, 43, 54, - 105, 61, 23, 59, 86, 63, 89, 48, 11, 12, - 49, 79, 13, 50, 80, 14, 51, 15, 101, 69, - 94, 32, 58, 22, 85, 42, 65, 91, 66, 5, - 44, 77, 73, 10, 55, 56, 57, 82, 83, 84, - 110, 88, 122, 39, 119, 98, 99, 116, 100, 117, - 8, 102, 52, 16, 113, 112, 114, 76, 45, 78, - 64, 90, 111, 26, 115, 18, 19, 21, 20, 118, - 87, 108, 104, 123, 121, 129, 106, 70, 6, 7, - 95, 24, 47, 9, 31, 30, 46, 38, 125, 35, - 1371, 97, 109, 96, 71, 103, 74, 107, 124, 72, - 120, 1472, 1471, 1521, 1475, 1498, 0, 1487, 1283, 1282, - 1268, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 571, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1294, 2080, 2095, 2096, 2097, 2098, 2099, 2100, - 2101, 2102, 364, 2103, 2104, 2105, 2106, 2107, 2108, 2109, - 2110, 2111, 2112, 2366, 2367, 2368, 2369, 2113, 2114, 2115, - 2116, 2117, 2118, 2119, 2370, 2371, 2120, 2121, 2122, 2123, - 2124, 2372, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, - 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, - 2143, 2144, 2145, 2146, 2373, 2374, 2147, 2148, 2149, 2150, - 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, - 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, - 2171, 2172, 2375, 2173, 2174, 2175, 2376, 2176, 2177, 2178, - 2377, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2378, 2379, - 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, - 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2380, 2203, 2204, - 2205, 2206, 2381, 2382, 2383, 2207, 2208, 2209, 2210, 2211, - 2212, 2213, 2214, 2384, 2215, 2216, 2217, 2218, 2219, 2220, - 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, - 2231, 2232, 2233, 2234, 2385, 2386, 2235, 2236, 2387, 2237, - 2238, 2239, 2388, 2240, 2389, 2241, 2242, 2243, 2244, 2245, - 2246, 2247, 2248, 2390, 2249, 2391, 2250, 2251, 2252, 2253, - 2254, 2255, 2256, 2257, 2258, 2259, 2392, 2260, 2393, 2263, - 2261, 2262, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, - 2394, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, - 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, - 2291, 2395, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, - 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2396, 2307, 2308, - 2309, 2310, 2397, 2311, 2312, 2313, 2314, 2315, 2316, 2317, - 2318, 2319, 2320, 2321, 2322, 2398, 2323, 2324, 2325, 2326, - 2327, 2328, 2329, 2330, 2399, 2400, 2331, 2332, 2401, 2333, - 2402, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, - 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2403, 2404, - 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2360, - 2361, 2362, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, - 2413, 2363, 2364, 2365, 363, 1462, 2048, 2081, 2082, 1370, - 1350, 572, 0, 1271, 392, 1499, 0, 0, 0, 0, - 0, 0, 0, 0, 787, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 177, 0, 0, 416, - 415, 0, 0, 0, 992, 421, 0, 0, 0, 0, - 0, 560, 1412, 2261, 1410, 1463, 259, 262, 263, 260, - 261, 2070, 0, 1102, 1103, 1105, 0, 0, 0, 1115, - 825, 826, 0, 0, 0, 828, 0, 0, 0, 821, - 0, 0, 0, 0, 0, 0, 827, 818, 0, 817, - 0, 0, 1115, 0, 0, 0, 819, 0, 0, 1272, - 1409, 422, 1499, 0, 1387, 1388, 1389, 1371, 1378, 1390, - 1383, 1385, 1384, 1386, 1382, 2069, 2096, 930, 930, 930, - 930, 927, 928, 930, 930, 930, 2278, 0, 0, 909, - 0, 911, 2071, 930, 935, 477, 477, 477, 0, 934, - 939, 477, 0, 1265, 1303, 2053, 1511, 0, 910, 1264, - 0, 0, 0, 2331, 1401, 0, 0, 1130, 1126, 1128, - 1129, 1127, 0, 0, 0, 2294, 1276, 241, 2304, 2399, - 2331, 240, 234, 236, 208, 2100, 0, 0, 934, 0, - 1273, 1274, 895, 1518, 1516, 0, 2035, 2118, 2132, 2218, - 231, 2289, 2295, 2304, 2399, 2331, 2362, 187, 197, 192, - 0, 252, 2304, 2399, 2331, 248, 1294, 0, 1488, 1616, - 2044, 0, 1267, 1266, 1372, 0, 1375, 0, 1577, 2274, - 1492, 1495, 1377, 1493, 1484, 0, 0, 1, 1499, 1366, - 1515, 1515, 0, 1515, 0, 1476, 1484, 1479, 1483, 0, - 0, 0, 0, 2080, 2414, 2415, 2416, 2417, 2418, 2419, - 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, - 2430, 2431, 2432, 2433, 2434, 2435, 2436, 0, 0, 2054, - 2081, 2085, 0, 835, 0, 1306, 2049, 979, 0, 0, - 0, 0, 2048, 0, 0, 0, 0, 2086, 2076, 2077, - 0, 2074, 2075, 2087, 2088, 2089, 0, 2191, 0, 0, - 0, 1941, 1952, 1953, 1954, 2122, 2176, 1949, 1950, 1951, - 1943, 1944, 1945, 1946, 1947, 1948, 0, 1100, 1942, 0, - 2191, 0, 156, 0, 134, 0, 0, 2191, 0, 0, - 0, 0, 0, 2191, 0, 0, 0, 0, 0, 2223, - 0, 134, 2191, 0, 0, 1288, 0, 0, 0, 1290, - 1293, 1269, 1353, 0, 2044, 0, 0, 0, 872, 864, - 0, 873, 865, 0, 0, 875, 0, 0, 867, 0, - 0, 0, 0, 876, 0, 866, 868, 878, 869, 874, - 0, 0, 0, 0, 870, 0, 0, 1280, 0, 1403, - 1405, 1404, 1402, 477, 0, 0, 0, 0, 0, 0, - 134, 1338, 0, 2191, 134, 0, 0, 420, 419, 134, - 2074, 418, 417, 2122, 2176, 0, 1018, 0, 134, 2191, - 0, 179, 644, 575, 0, 0, 746, 2223, 134, 0, - 0, 0, 0, 0, 0, 995, 0, 0, 0, 559, - 572, 1413, 1411, 0, 1106, 233, 232, 1104, 823, 2191, - 0, 338, 0, 0, 2191, 1325, 2083, 1674, 1703, 1681, - 1703, 1703, 1670, 1670, 2160, 1683, 2191, 1671, 1672, 1710, - 0, 1703, 1670, 1675, 0, 1673, 1713, 1713, 1698, 338, - 839, 1655, 1656, 1657, 1658, 1684, 1685, 1659, 1690, 1691, - 1705, 1660, 1727, 1670, 2084, 824, 0, 822, 2191, 0, - 2191, 2078, 170, 0, 820, 2122, 2176, 2191, 0, 0, - 2191, 0, 2191, 162, 2191, 0, 2191, 338, 2191, 576, - 0, 0, 2191, 0, 2191, 338, 2191, 2223, 164, 0, - 2191, 338, 833, 0, 1406, 0, 1380, 2403, 1395, 0, - 1391, 1398, 1394, 1499, 930, 929, 0, 930, 0, 930, - 0, 930, 0, 930, 0, 0, 0, 930, 2072, 2073, - 912, 0, 936, 0, 0, 943, 942, 941, 0, 0, - 0, 944, 0, 1620, 1436, 0, 1262, 235, 186, 0, - 247, 246, 1279, 0, 0, 0, 995, 1133, 0, 1131, - 1122, 1123, 1275, 239, 237, 0, 0, 0, 0, 0, - 0, 1281, 0, 0, 0, 0, 2057, 2059, 2060, 1955, - 2025, 0, 2367, 2368, 2369, 2014, 0, 2370, 2371, 2372, - 2416, 1857, 1844, 1853, 1858, 1845, 1847, 1854, 2373, 2374, - 2375, 2376, 2067, 2377, 2378, 2379, 2381, 2382, 2383, 2384, - 1849, 1851, 2385, 2386, 0, 2068, 2388, 2389, 2245, 2391, - 2392, 2394, 2395, 1855, 2397, 2398, 2399, 2400, 2401, 2402, - 2066, 0, 1856, 2404, 2406, 2407, 2408, 2409, 2410, 2411, - 2412, 2413, 0, 0, 0, 2041, 0, 1824, 0, 1663, - 1664, 1686, 1687, 1665, 1692, 1693, 1666, 0, 2040, 1730, - 1906, 1823, 1840, 0, 1829, 1830, 0, 1822, 1818, 1501, - 2036, 0, 1819, 2056, 2058, 2015, 1501, 2034, 200, 254, - 0, 255, 2042, 2304, 188, 230, 202, 229, 203, 201, - 0, 2120, 189, 0, 0, 190, 0, 0, 0, 0, - 251, 249, 0, 1270, 0, 1618, 1617, 2022, 0, 2023, - 2045, 844, 1365, 1363, 1364, 1362, 0, 1359, 1361, 1374, - 1371, 2030, 2029, 2031, 0, 1494, 0, 0, 0, 1474, - 1473, 3, 1377, 1513, 1514, 0, 0, 0, 0, 0, - 0, 0, 0, 1567, 1529, 1530, 1532, 1564, 1568, 1576, - 0, 1480, 0, 0, 1622, 0, 1578, 0, 0, 2055, - 0, 0, 0, 0, 836, 0, 0, 0, 1312, 0, - 1314, 1315, 1316, 0, 0, 0, 1317, 1318, 1306, 243, - 1324, 1322, 1305, 1307, 1320, 0, 0, 0, 0, 0, - 0, 0, 1330, 0, 0, 168, 169, 588, 572, 0, - 2191, 0, 0, 0, 0, 0, 1058, 1065, 0, 0, - 0, 0, 0, 0, 0, 0, 1059, 1057, 1060, 245, - 1069, 1086, 1089, 0, 969, 0, 0, 0, 0, 0, - 1185, 0, 0, 0, 1185, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 268, 280, - 333, 552, 0, 0, 554, 0, 2191, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 132, 133, - 138, 0, 0, 0, 0, 0, 0, 539, 551, 0, - 0, 0, 0, 0, 548, 0, 134, 272, 532, 536, - 0, 0, 0, 653, 652, 1328, 1327, 0, 0, 1185, - 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 356, 357, 0, - 0, 0, 138, 161, 0, 0, 0, 274, 0, 0, - 1289, 1286, 1287, 0, 1292, 0, 1349, 0, 863, 0, - 0, 0, 0, 880, 0, 877, 0, 0, 871, 2122, - 2176, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 395, 0, 0, 743, 0, 0, 0, 0, 0, - 754, 0, 1306, 1337, 0, 0, 0, 581, 0, 2191, - 0, 136, 788, 0, 744, 421, 0, 0, 136, 0, - 0, 173, 0, 648, 0, 0, 0, 0, 0, 0, - 692, 691, 0, 0, 0, 745, 0, 136, 0, 2191, - 535, 2191, 0, 477, 477, 0, 0, 994, 997, 0, - 0, 0, 0, 1466, 1468, 1467, 0, 1465, 0, 338, - 336, 337, 741, 1114, 0, 0, 1702, 1689, 1697, 1696, - 0, 1679, 1678, 1677, 0, 1676, 0, 1703, 1703, 1701, - 1680, 1655, 0, 0, 0, 1709, 0, 1707, 0, 813, - 1651, 1647, 0, 0, 1695, 1716, 1717, 1718, 1715, 1728, - 1714, 0, 1661, 1719, 1670, 1667, 0, 0, 338, 0, - 0, 2191, 338, 2191, 0, 2191, 0, 0, 338, 338, - 0, 0, 0, 0, 0, 0, 649, 0, 832, 830, - 829, 831, 0, 0, 0, 0, 811, 0, 0, 0, - 2191, 338, 0, 0, 810, 1965, 0, 0, 1499, 0, - 219, 220, 218, 1396, 221, 1397, 1393, 1379, 0, 920, - 0, 924, 0, 915, 0, 921, 0, 916, 913, 914, - 0, 919, 0, 0, 478, 480, 0, 0, 2144, 2159, - 0, 2182, 2211, 2212, 2295, 2300, 0, 2326, 2336, 0, - 945, 974, 940, 662, 0, 0, 1446, 1263, 1972, 0, - 1499, 0, 0, 0, 0, 238, 209, 0, 0, 0, - 976, 2294, 1278, 894, 572, 0, 1820, 0, 1827, 1828, - 2013, 0, 0, 0, 0, 0, 0, 1826, 1980, 0, - 0, 0, 0, 0, 1753, 0, 0, 0, 1993, 0, - 1999, 0, 0, 1790, 0, 0, 0, 0, 0, 0, - 0, 0, 1754, 1734, 1735, 1824, 1965, 0, 1825, 2063, - 0, 1727, 2039, 1955, 0, 1952, 1953, 1954, 0, 0, - 0, 2028, 0, 1963, 0, 0, 1768, 1961, 1770, 0, - 0, 0, 0, 1949, 1950, 1951, 1943, 1944, 1945, 1946, - 1947, 1948, 1959, 1750, 0, 0, 1908, 0, 1749, 0, - 0, 1580, 0, 2061, 2016, 1580, 256, 257, 253, 0, - 0, 205, 204, 0, 223, 227, 228, 199, 226, 0, - 222, 207, 1897, 1896, 206, 198, 195, 193, 210, 212, - 213, 196, 194, 250, 0, 2021, 0, 2090, 2437, 2438, - 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, - 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, - 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, - 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, - 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, - 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, - 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, - 2509, 2510, 2511, 2512, 2513, 2018, 2017, 2051, 2091, 2092, - 2093, 2094, 2024, 0, 0, 338, 1357, 0, 1354, 2033, - 0, 1496, 0, 2046, 0, 1367, 1491, 1490, 1522, 1523, - 1011, 1489, 1547, 1548, 1543, 0, 0, 0, 1573, 1571, - 1539, 1533, 1538, 1536, 0, 1540, 1730, 1566, 1478, 1527, - 1528, 1531, 1477, 0, 1569, 0, 1449, 1567, 1532, 1433, - 0, 1415, 0, 1623, 0, 1033, 1035, 0, 1034, 0, - 1037, 0, 1046, 0, 0, 1032, 1051, 0, 1040, 1038, - 0, 0, 0, 0, 0, 0, 837, 0, 0, 0, - 0, 1313, 0, 0, 2326, 242, 1316, 1321, 1308, 1319, - 0, 0, 0, 0, 0, 978, 977, 0, 0, 999, - 0, 0, 0, 1333, 466, 0, 335, 0, 0, 0, - 0, 0, 0, 0, 0, 739, 736, 0, 0, 735, - 0, 586, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 623, 0, 1185, 0, 656, 0, 1067, 0, 0, - 1066, 0, 1070, 0, 0, 1068, 1063, 1064, 2295, 2304, - 2331, 244, 1088, 0, 1087, 1085, 1021, 0, 1022, 0, - 0, 0, 0, 0, 2169, 2191, 282, 297, 0, 1184, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 320, 0, 0, 323, 322, - 0, 0, 0, 0, 0, 327, 306, 0, 307, 0, - 0, 326, 0, 0, 553, 0, 0, 0, 0, 1185, - 0, 276, 0, 0, 0, 0, 0, 0, 1101, 0, - 680, 0, 159, 0, 155, 158, 0, 0, 0, 0, - 538, 550, 0, 542, 543, 540, 544, 545, 0, 0, - 0, 0, 0, 0, 537, 0, 0, 646, 645, 651, - 0, 0, 0, 0, 0, 0, 0, 0, 1135, 1134, - 0, 0, 0, 0, 0, 0, 778, 0, 0, 0, - 0, 0, 0, 0, 665, 0, 664, 0, 160, 0, - 0, 0, 0, 0, 0, 0, 217, 1285, 1291, 1352, - 2052, 1351, 0, 0, 0, 0, 879, 0, 0, 0, - 0, 0, 0, 0, 0, 881, 882, 883, 884, 0, - 0, 0, 0, 0, 370, 0, 0, 0, 2083, 0, - 767, 742, 0, 0, 755, 0, 757, 760, 0, 1304, - 439, 0, 0, 578, 623, 0, 424, 166, 0, 0, - 0, 0, 682, 131, 177, 179, 422, 0, 178, 180, - 182, 183, 184, 181, 185, 643, 647, 0, 574, 0, - 0, 0, 0, 0, 693, 697, 696, 700, 698, 0, - 694, 0, 0, 1643, 0, 154, 0, 0, 530, 534, - 0, 0, 0, 424, 508, 349, 2191, 0, 477, 0, - 2191, 0, 996, 0, 0, 0, 0, 0, 0, 0, - 0, 1464, 0, 1092, 0, 1326, 0, 0, 0, 338, - 1700, 1699, 1652, 1648, 0, 0, 0, 0, 840, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1668, - 2191, 338, 0, 1090, 171, 2079, 0, 815, 0, 0, - 0, 0, 0, 1094, 807, 0, 338, 163, 0, 338, - 338, 577, 0, 0, 338, 338, 165, 0, 0, 0, - 569, 338, 834, 1408, 0, 2191, 477, 1381, 1392, 917, - 926, 925, 923, 922, 918, 0, 937, 0, 476, 0, - 0, 0, 951, 952, 0, 0, 950, 967, 953, 0, - 955, 947, 946, 956, 957, 0, 0, 976, 660, 0, - 0, 0, 0, 1443, 0, 1441, 0, 1621, 1445, 1434, - 1400, 0, 1399, 0, 523, 0, 0, 1132, 0, 0, - 934, 0, 0, 338, 1277, 0, 896, 897, 0, 0, - 0, 0, 0, 0, 903, 900, 901, 902, 904, 0, - 905, 0, 0, 0, 2026, 1976, 0, 1977, 0, 0, - 2012, 2008, 0, 0, 0, 0, 0, 1981, 1984, 1985, - 1986, 1983, 1987, 1982, 0, 0, 1988, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2395, 0, 0, 0, - 0, 1793, 0, 0, 1936, 0, 1965, 1998, 0, 0, - 0, 0, 0, 0, 1965, 2004, 0, 0, 0, 0, - 1895, 0, 1892, 0, 0, 0, 0, 2025, 0, 0, - 2064, 1731, 1745, 1746, 1747, 1751, 2038, 0, 2027, 0, - 0, 1732, 1759, 0, 2005, 1786, 0, 1791, 1774, 0, - 1767, 0, 1772, 1776, 1755, 0, 1752, 0, 2028, 1964, - 0, 1962, 0, 1742, 1743, 1744, 1736, 1737, 1738, 1739, - 1740, 1741, 1748, 1940, 1938, 1939, 0, 0, 0, 1916, - 0, 0, 1771, 2184, 2218, 0, 1512, 1512, 1512, 1500, - 1510, 2037, 0, 1638, 0, 0, 0, 0, 1832, 0, - 1969, 1521, 1967, 1038, 1638, 2043, 0, 0, 1727, 0, - 1619, 2019, 2022, 842, 843, 841, 1377, 1360, 1356, 1355, - 2032, 1376, 0, 1499, 0, 1009, 1010, 0, 1014, 0, - 0, 1541, 1574, 0, 1565, 0, 1545, 1546, 1537, 1575, - 1447, 0, 1570, 1482, 1481, 0, 1641, 0, 0, 1425, - 1417, 0, 1624, 0, 1580, 1451, 1453, 1454, 0, 2025, - 1036, 0, 1670, 1047, 0, 1031, 0, 1030, 1670, 0, - 1048, 0, 1670, 0, 0, 0, 1222, 1137, 1193, 838, - 1223, 1138, 1194, 1224, 1139, 1323, 1311, 1310, 1309, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 718, 2191, 338, 1331, 1225, 0, 1140, - 334, 1332, 1195, 1336, 738, 737, 0, 0, 1196, 0, - 587, 0, 0, 592, 593, 594, 0, 0, 0, 595, - 0, 2122, 2176, 0, 600, 607, 612, 602, 0, 0, - 614, 608, 0, 0, 0, 0, 0, 0, 620, 627, - 0, 0, 0, 0, 0, 0, 0, 1061, 1062, 1226, - 1143, 0, 1197, 1020, 0, 1144, 167, 0, 0, 269, - 2191, 284, 0, 629, 718, 1187, 304, 0, 0, 319, - 314, 315, 313, 2191, 338, 2191, 338, 0, 0, 0, - 0, 0, 316, 311, 312, 308, 0, 0, 321, 2099, - 2161, 2305, 0, 633, 635, 0, 640, 324, 1160, 345, - 344, 343, 0, 328, 0, 350, 353, 325, 302, 305, - 303, 299, 281, 0, 0, 0, 0, 0, 0, 0, - 0, 2050, 0, 0, 1096, 0, 0, 0, 0, 0, - 0, 0, 674, 157, 1175, 147, 0, 0, 143, 0, - 0, 0, 0, 137, 0, 1232, 1150, 0, 0, 273, - 533, 541, 546, 1154, 549, 1207, 547, 1238, 1151, 0, - 1185, 0, 265, 0, 1152, 0, 1201, 1234, 1177, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1339, 0, - 0, 0, 0, 0, 0, 338, 0, 0, 0, 1187, - 2191, 338, 1233, 0, 1182, 1215, 0, 358, 0, 1176, - 0, 0, 275, 1156, 1209, 0, 0, 215, 214, 216, - 0, 0, 2159, 0, 886, 847, 885, 0, 0, 0, - 0, 0, 0, 855, 0, 0, 0, 846, 0, 845, - 369, 0, 394, 367, 368, 370, 0, 0, 766, 0, - 0, 0, 756, 0, 0, 0, 1329, 0, 134, 585, - 0, 0, 0, 580, 622, 629, 0, 0, 0, 423, - 427, 431, 432, 433, 0, 0, 0, 0, 148, 135, - 0, 796, 0, 477, 0, 678, 0, 179, 172, 0, - 0, 0, 349, 753, 751, 750, 752, 0, 0, 0, - 771, 749, 0, 1642, 1644, 0, 0, 0, 0, 0, - 523, 426, 0, 480, 0, 0, 512, 0, 0, 0, - 0, 349, 0, 0, 0, 1025, 0, 1043, 1026, 0, - 0, 0, 0, 1074, 1081, 1075, 1053, 0, 0, 557, - 1469, 1470, 0, 338, 0, 0, 1669, 1682, 814, 0, - 1712, 1711, 1713, 1713, 0, 1653, 0, 1704, 1705, 1721, - 1722, 1723, 1724, 1725, 1726, 0, 1720, 1662, 0, 624, - 338, 338, 0, 338, 0, 338, 338, 0, 671, 0, - 1260, 650, 0, 0, 726, 812, 0, 0, 338, 809, - 1966, 0, 938, 479, 0, 0, 0, 0, 949, 0, - 555, 954, 0, 966, 961, 963, 0, 970, 659, 0, - 0, 1444, 1437, 1439, 1438, 0, 0, 1435, 1973, 808, - 0, 529, 1124, 1125, 0, 0, 338, 0, 971, 0, - 0, 898, 899, 0, 0, 906, 0, 0, 0, 1517, - 1974, 1975, 0, 0, 0, 2009, 0, 0, 1870, 0, - 1846, 1848, 1860, 0, 1871, 1831, 1872, 1850, 1852, 0, - 1956, 0, 0, 1861, 0, 1795, 1796, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1811, 1810, 1862, 1935, 0, 0, - 1996, 1997, 1863, 0, 0, 2003, 0, 0, 0, 1868, - 1873, 0, 0, 0, 0, 1879, 0, 1900, 0, 0, - 0, 1821, 1966, 0, 0, 0, 0, 0, 0, 0, - 0, 1792, 1775, 1769, 0, 1773, 1777, 0, 0, 0, - 1763, 0, 0, 1761, 1787, 1757, 0, 0, 1788, 0, - 0, 0, 1839, 0, 0, 1512, 1512, 1512, 1512, 1509, - 0, 0, 0, 0, 2292, 0, 1602, 1579, 1581, 1589, - 1602, 1607, 1841, 1636, 1842, 0, 2044, 0, 1550, 1521, - 1521, 1521, 1838, 0, 0, 0, 0, 1520, 1550, 191, - 0, 224, 211, 2021, 0, 1358, 2047, 0, 1524, 0, - 1957, 1014, 0, 1526, 0, 0, 1572, 1534, 1448, 1432, - 0, 1430, 1419, 0, 1420, 2025, 0, 1430, 1416, 1459, - 0, 0, 1641, 0, 1458, 0, 1670, 1028, 1029, 0, - 1052, 0, 1221, 1136, 1192, 981, 982, 0, 980, 0, - 0, 0, 465, 998, 0, 0, 0, 718, 0, 0, - 469, 0, 1334, 0, 1239, 1174, 589, 590, 0, 601, - 0, 610, 609, 0, 0, 597, 0, 0, 0, 0, - 0, 596, 616, 561, 617, 619, 0, 0, 618, 621, - 626, 1185, 0, 657, 1162, 0, 1213, 1055, 1188, 0, - 1023, 0, 0, 0, 0, 0, 0, 439, 298, 0, - 0, 0, 286, 296, 0, 1191, 330, 0, 301, 0, - 294, 317, 309, 318, 310, 329, 331, 0, 637, 638, - 636, 632, 0, 639, 641, 0, 347, 0, 0, 0, - 1228, 0, 1185, 0, 277, 0, 1158, 0, 1211, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1229, 1198, 0, 1217, 0, 0, 0, 679, 0, 676, - 0, 0, 140, 139, 0, 146, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 359, 340, 0, 774, 0, 0, 0, - 361, 0, 0, 0, 0, 1227, 1145, 848, 0, 0, - 0, 849, 860, 0, 0, 850, 0, 0, 0, 0, - 862, 372, 373, 134, 371, 0, 0, 2245, 1943, 1944, - 764, 769, 761, 763, 765, 762, 0, 768, 718, 0, - 758, 759, 0, 0, 0, 0, 0, 451, 0, 0, - 445, 0, 0, 1081, 438, 441, 442, 0, 0, 581, - 584, 582, 583, 615, 0, 458, 504, 0, 150, 0, - 0, 151, 149, 0, 0, 349, 683, 687, 685, 684, - 686, 681, 0, 674, 0, 175, 422, 0, 0, 573, - 699, 702, 695, 0, 770, 772, 747, 0, 629, 0, - 535, 0, 477, 1409, 518, 0, 508, 504, 506, 505, - 507, 0, 514, 348, 0, 0, 523, 514, 0, 0, - 999, 1024, 0, 0, 0, 1071, 1076, 1072, 0, 0, - 1039, 0, 1073, 0, 1054, 1017, 1255, 1256, 1253, 1254, - 0, 0, 0, 1461, 1093, 0, 1688, 0, 1708, 1706, - 1649, 1654, 1694, 1729, 338, 1091, 816, 0, 803, 0, - 805, 1095, 338, 338, 338, 338, 666, 0, 570, 0, - 0, 0, 0, 948, 968, 0, 964, 0, 0, 931, - 973, 0, 0, 1442, 1440, 521, 0, 976, 0, 932, - 975, 0, 0, 0, 0, 0, 0, 0, 1978, 0, - 2011, 2007, 0, 1843, 1979, 0, 1991, 1990, 1936, 0, - 0, 1794, 1806, 1807, 1808, 1992, 0, 1816, 0, 0, - 1803, 1804, 1805, 1797, 1798, 1799, 1800, 1801, 1802, 1809, - 2001, 2000, 1994, 1995, 0, 1865, 1866, 1867, 2002, 1874, - 0, 2113, 1901, 1878, 1894, 1893, 0, 0, 0, 1881, - 0, 0, 1890, 0, 1937, 2065, 1733, 0, 0, 1760, - 2006, 1778, 0, 0, 0, 1756, 1956, 0, 0, 0, - 0, 0, 1765, 0, 0, 0, 1919, 1914, 1915, 1933, - 0, 0, 0, 0, 0, 0, 1503, 1502, 1508, 1602, - 1607, 0, 1484, 0, 1589, 0, 1601, 1587, 1600, 0, - 0, 1613, 1611, 0, 1613, 0, 1613, 0, 1583, 0, - 1603, 1585, 1600, 0, 1628, 0, 2045, 1637, 0, 1563, - 0, 0, 0, 0, 1970, 1971, 0, 1968, 1833, 1563, - 0, 2020, 1497, 0, 1525, 1012, 1013, 1542, 1535, 2140, - 1639, 0, 1431, 0, 0, 1422, 1428, 1414, 0, 0, - 1452, 1430, 1455, 1049, 0, 0, 1041, 987, 988, 986, - 989, 0, 0, 0, 718, 0, 0, 485, 0, 1006, - 1006, 0, 0, 471, 517, 1081, 721, 0, 0, 0, - 719, 338, 1141, 0, 611, 0, 0, 606, 604, 603, - 605, 0, 562, 1237, 1142, 0, 0, 0, 0, 1056, - 0, 0, 1161, 0, 283, 0, 436, 0, 291, 1186, - 0, 0, 0, 290, 0, 338, 338, 332, 634, 346, - 351, 352, 355, 0, 0, 0, 0, 0, 1190, 0, - 0, 0, 0, 0, 0, 0, 797, 780, 0, 0, - 798, 799, 0, 0, 0, 1098, 1099, 1097, 1216, 0, - 0, 0, 1148, 0, 0, 670, 144, 141, 142, 145, - 1172, 1155, 1208, 0, 0, 0, 1153, 0, 1202, 1168, - 1164, 0, 0, 0, 0, 0, 1236, 1181, 1206, 1235, - 1179, 1204, 1178, 1203, 1180, 1205, 0, 1173, 0, 1646, - 777, 0, 0, 0, 338, 338, 668, 1157, 1210, 0, - 0, 851, 0, 0, 853, 854, 0, 857, 377, 397, - 688, 740, 0, 0, 717, 0, 443, 0, 449, 453, - 454, 452, 444, 1081, 477, 516, 0, 0, 730, 0, - 579, 424, 455, 0, 0, 428, 153, 152, 0, 0, - 0, 677, 676, 179, 2191, 0, 0, 704, 708, 748, - 0, 1645, 663, 349, 531, 0, 0, 424, 523, 0, - 429, 434, 435, 0, 512, 508, 0, 0, 520, 1302, - 0, 524, 526, 0, 0, 0, 1027, 1044, 1045, 0, - 0, 1081, 0, 0, 1080, 0, 0, 564, 338, 1650, - 625, 338, 338, 672, 1261, 1121, 727, 0, 960, 959, - 958, 556, 0, 962, 661, 0, 522, 338, 0, 0, - 908, 889, 907, 0, 0, 888, 0, 887, 2010, 1859, - 1869, 1989, 1935, 1966, 0, 0, 1817, 0, 0, 1864, - 2405, 0, 0, 0, 0, 1898, 1899, 1880, 0, 2236, - 1885, 0, 0, 0, 1784, 1782, 1779, 0, 1780, 1764, - 0, 0, 1762, 1758, 0, 1789, 1905, 0, 1921, 1918, - 1932, 1966, 1507, 1506, 1505, 1504, 1588, 1586, 0, 1591, - 1598, 0, 1582, 0, 1612, 1608, 0, 1609, 0, 0, - 1610, 0, 0, 1584, 0, 1598, 0, 1635, 1521, 0, - 0, 1910, 1836, 1837, 1834, 1521, 2062, 1910, 225, 0, - 0, 1429, 1418, 1421, 0, 0, 0, 0, 1460, 1450, - 1042, 1050, 0, 0, 0, 467, 0, 1081, 0, 0, - 0, 1008, 1008, 0, 1081, 516, 723, 722, 725, 720, - 724, 1335, 0, 598, 599, 613, 1163, 0, 1214, 1170, - 0, 1446, 285, 0, 630, 287, 288, 289, 292, 340, - 300, 293, 0, 0, 0, 1159, 0, 1212, 1166, 1230, - 1146, 1199, 0, 0, 786, 0, 0, 0, 0, 1231, - 1147, 1200, 1218, 1219, 1220, 0, 0, 0, 0, 1446, - 0, 0, 0, 0, 0, 1344, 0, 1189, 339, 776, - 775, 340, 360, 1183, 0, 852, 858, 859, 856, 0, - 366, 374, 398, 134, 0, 0, 1112, 1112, 0, 718, - 0, 0, 440, 516, 484, 0, 446, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 669, - 174, 0, 424, 629, 703, 0, 0, 0, 773, 0, - 523, 426, 0, 1407, 425, 0, 0, 514, 512, 0, - 509, 0, 513, 0, 1295, 0, 0, 0, 0, 1077, - 0, 1083, 0, 1038, 1015, 1078, 0, 1638, 0, 0, - 0, 0, 568, 1113, 804, 806, 667, 965, 0, 972, - 338, 890, 891, 892, 893, 1937, 1812, 0, 0, 0, - 0, 1875, 0, 1876, 1903, 1902, 1882, 1886, 0, 1883, - 1884, 1781, 1785, 1783, 1766, 1907, 0, 1521, 1934, 1631, - 0, 1634, 1590, 0, 0, 1592, 0, 0, 1594, 1596, - 0, 0, 0, 0, 0, 0, 2048, 0, 2139, 2379, - 2291, 0, 1549, 1551, 1554, 1556, 1555, 1557, 1553, 1562, - 0, 1486, 0, 1485, 1958, 1640, 0, 0, 1000, 0, - 0, 1457, 1456, 966, 0, 338, 1006, 516, 486, 2245, - 487, 1005, 1007, 1011, 1011, 0, 516, 718, 591, 0, - 0, 270, 628, 0, 342, 354, 0, 1446, 0, 0, - 0, 793, 781, 0, 0, 800, 1149, 673, 0, 0, - 266, 1169, 1165, 1346, 1347, 0, 0, 0, 0, 0, - 338, 861, 0, 400, 407, 378, 383, 1338, 0, 1338, - 0, 380, 384, 1338, 379, 1338, 376, 377, 0, 1112, - 0, 1109, 1108, 716, 0, 475, 447, 0, 495, 0, - 0, 731, 0, 0, 504, 464, 463, 460, 459, 461, - 462, 457, 456, 0, 629, 790, 349, 1302, 0, 642, - 705, 706, 701, 0, 0, 0, 519, 508, 504, 430, - 439, 413, 514, 510, 511, 0, 0, 0, 523, 1348, - 999, 0, 1082, 0, 0, 0, 0, 0, 0, 1116, - 563, 0, 0, 567, 558, 629, 933, 1813, 0, 1814, - 0, 0, 0, 1888, 1887, 0, 1924, 1636, 0, 0, - 1630, 0, 1599, 1615, 0, 1595, 1593, 0, 1604, 0, - 1606, 1833, 0, 0, 0, 1558, 0, 1909, 1911, 0, - 1835, 1427, 1638, 0, 1424, 0, 983, 0, 984, 1008, - 490, 0, 1014, 1014, 477, 718, 468, 1171, 0, 631, - 0, 295, 0, 278, 1167, 0, 784, 0, 795, 793, - 0, 0, 0, 0, 1340, 0, 1341, 1342, 1345, 362, - 375, 0, 405, 0, 403, 402, 404, 0, 391, 0, - 0, 0, 0, 0, 0, 365, 396, 1107, 1111, 1110, - 0, 0, 448, 481, 482, 483, 0, 450, 491, 492, - 0, 728, 0, 733, 0, 0, 503, 654, 0, 0, - 0, 1296, 0, 0, 0, 1302, 512, 508, 437, 411, - 0, 1299, 0, 525, 0, 349, 1081, 1084, 1079, 1259, - 0, 0, 566, 565, 658, 1815, 1891, 1877, 1904, 1889, - 1920, 0, 0, 0, 1629, 1632, 0, 1597, 0, 0, - 1605, 0, 0, 0, 1552, 0, 0, 1426, 1001, 0, - 0, 1011, 0, 718, 0, 1003, 1002, 484, 470, 1446, - 341, 0, 0, 0, 791, 794, 782, 795, 802, 801, - 675, 1446, 0, 401, 410, 0, 408, 381, 386, 0, - 390, 388, 387, 382, 385, 0, 474, 0, 0, 0, - 493, 0, 494, 515, 0, 732, 0, 0, 789, 0, - 0, 424, 707, 0, 1297, 514, 512, 1300, 1301, 0, - 514, 1016, 1258, 1257, 1499, 0, 0, 2366, 2140, 2338, - 0, 1922, 1925, 1923, 1917, 0, 1614, 1627, 1560, 0, - 1559, 1912, 1913, 1638, 338, 1014, 0, 472, 488, 495, - 271, 1446, 0, 0, 783, 267, 1343, 406, 0, 389, - 708, 500, 0, 499, 0, 497, 496, 729, 734, 629, - 779, 1302, 711, 414, 514, 0, 1638, 1241, 1499, 1240, - 1242, 1250, 1247, 1249, 1248, 1246, 1119, 1120, 0, 1929, - 1928, 1927, 1931, 1930, 1633, 0, 1625, 1561, 1423, 985, - 1004, 0, 718, 279, 785, 792, 409, 0, 498, 502, - 501, 655, 1298, 713, 0, 709, 712, 714, 715, 412, - 349, 990, 0, 1251, 1245, 1484, 1471, 0, 0, 0, - 0, 489, 473, 0, 689, 0, 514, 1243, 1499, 0, - 0, 1926, 0, 0, 710, 1638, 1244, 0, 0, 1626, - 0, 991, 0, 0, 711, 0, 0, 0, 1117, 1118, - 690 + 1621, 1404, 621, 1490, 1489, 1404, 257, 0, 1492, 0, + 1404, 418, 1096, 0, 0, 0, 0, 621, 1404, 0, + 1621, 0, 0, 0, 0, 0, 1634, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1404, 0, 0, + 1641, 0, 0, 0, 0, 1634, 0, 1494, 0, 0, + 0, 0, 0, 2, 4, 71, 72, 31, 30, 91, + 54, 18, 62, 125, 124, 126, 41, 37, 79, 26, + 28, 38, 42, 64, 66, 44, 55, 103, 63, 24, + 61, 86, 67, 89, 49, 12, 13, 50, 14, 51, + 15, 52, 16, 99, 73, 92, 35, 60, 23, 43, + 69, 70, 5, 45, 81, 77, 11, 56, 57, 59, + 83, 84, 85, 108, 87, 120, 40, 117, 96, 97, + 114, 98, 115, 9, 100, 53, 17, 111, 110, 112, + 80, 46, 82, 68, 90, 109, 27, 113, 19, 20, + 22, 21, 58, 29, 65, 32, 88, 116, 106, 102, + 121, 119, 127, 104, 74, 7, 8, 93, 6, 25, + 48, 10, 34, 33, 47, 39, 123, 36, 1492, 95, + 107, 94, 75, 101, 78, 105, 122, 76, 118, 1594, + 1593, 1643, 1597, 1620, 0, 1609, 1403, 1402, 1388, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 620, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1414, 2215, 2230, 2231, 2232, 2233, 2234, + 2235, 2236, 2237, 389, 2238, 2239, 2240, 2241, 2242, 2243, + 2244, 2245, 2246, 2247, 2248, 2512, 2513, 2514, 2515, 2249, + 2250, 2251, 2252, 2253, 2254, 2255, 2516, 2517, 2256, 2257, + 2258, 2259, 2260, 2518, 2261, 2262, 2263, 2264, 2265, 2266, + 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, + 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2519, 2520, 2284, + 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, + 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, + 2305, 2306, 2307, 2308, 2309, 2310, 2521, 2311, 2312, 2313, + 2522, 2314, 2315, 2316, 2523, 2317, 2318, 2319, 2320, 2321, + 2322, 2323, 2324, 2524, 2525, 2325, 2326, 2327, 2328, 2329, + 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, + 2340, 2341, 2526, 2342, 2343, 2344, 2345, 2527, 2528, 2529, + 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2530, 2354, + 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, + 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2531, + 2532, 2374, 2375, 2376, 2533, 2377, 2378, 2379, 2534, 2380, + 2535, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, + 2536, 2390, 2537, 2391, 2392, 2393, 2394, 2395, 2396, 2397, + 2398, 2399, 2400, 2401, 2538, 2402, 2539, 2405, 2403, 2404, + 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2540, + 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, + 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, + 2435, 2541, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, + 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2542, 2452, + 2453, 2454, 2455, 2543, 2456, 2457, 2458, 2459, 2460, 2461, + 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2544, 2469, 2470, + 2471, 2472, 2473, 2474, 2475, 2476, 2545, 2546, 2477, 2478, + 2547, 2479, 2548, 2480, 2481, 2482, 2483, 2484, 2485, 2486, + 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, + 2549, 2550, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, + 2505, 2506, 2507, 2508, 2551, 2552, 2553, 2554, 2555, 2556, + 2557, 2558, 2559, 2560, 2561, 2509, 2510, 2511, 388, 1584, + 2183, 2216, 2217, 1491, 1471, 621, 0, 1391, 417, 1621, + 0, 0, 0, 0, 0, 0, 0, 0, 849, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 176, 0, 0, 0, 0, 443, 442, 0, 0, + 0, 1069, 448, 0, 0, 0, 0, 0, 609, 1533, + 2403, 1531, 1585, 258, 261, 262, 259, 260, 2205, 0, + 1191, 1192, 1194, 0, 0, 0, 1204, 889, 890, 0, + 0, 0, 898, 0, 0, 0, 887, 0, 0, 0, + 903, 900, 0, 904, 901, 884, 902, 891, 0, 883, + 0, 0, 1204, 905, 0, 0, 885, 0, 0, 0, + 0, 1392, 1530, 449, 1621, 0, 1508, 1509, 1510, 1492, + 1499, 1511, 1504, 1506, 1505, 1507, 1503, 2204, 2231, 1009, + 1009, 1009, 1009, 1006, 1007, 1009, 1009, 1009, 2422, 0, + 0, 988, 0, 990, 2206, 1009, 1014, 509, 509, 509, + 0, 1013, 1018, 509, 0, 1385, 1423, 2188, 1633, 0, + 989, 1384, 0, 0, 0, 2477, 1522, 0, 0, 1219, + 1215, 1217, 1218, 1216, 0, 0, 0, 2438, 1396, 240, + 2449, 2545, 2477, 239, 233, 235, 207, 2235, 0, 0, + 1013, 0, 1393, 1394, 971, 1640, 1638, 0, 2170, 2254, + 2269, 2357, 230, 2433, 2439, 2449, 2545, 2477, 2508, 186, + 196, 191, 0, 251, 2449, 2545, 2477, 247, 1414, 0, + 1610, 1740, 2179, 0, 1387, 1386, 1493, 0, 1496, 0, + 2417, 1614, 1617, 1498, 1615, 1606, 0, 0, 1, 1621, + 1487, 1637, 1637, 0, 1637, 0, 1598, 1606, 1601, 1605, + 0, 0, 0, 0, 2215, 2562, 2563, 2564, 2565, 2566, + 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 2576, + 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 0, 0, + 0, 2189, 2216, 2220, 0, 908, 0, 1426, 2184, 1055, + 0, 0, 0, 0, 0, 0, 0, 1105, 1104, 2221, + 2211, 2212, 0, 2209, 2210, 2222, 2223, 2224, 0, 2330, + 0, 0, 0, 2081, 2092, 2093, 2094, 2258, 2314, 2089, + 2090, 2091, 2083, 2084, 2085, 2086, 2087, 2088, 0, 0, + 1186, 2082, 0, 2330, 0, 0, 155, 0, 132, 0, + 0, 2330, 0, 0, 0, 0, 0, 0, 0, 2330, + 0, 0, 0, 0, 0, 155, 2362, 0, 132, 2330, + 0, 0, 1408, 0, 0, 0, 1410, 1413, 1389, 1474, + 0, 2179, 0, 0, 0, 942, 935, 0, 943, 950, + 0, 0, 952, 0, 0, 936, 0, 0, 0, 0, + 955, 956, 0, 957, 937, 958, 938, 959, 939, 960, + 0, 0, 0, 0, 940, 0, 0, 0, 1400, 0, + 1524, 1526, 1525, 1523, 509, 0, 0, 0, 0, 2330, + 0, 0, 132, 1459, 0, 2330, 132, 0, 0, 447, + 446, 132, 2209, 445, 444, 2258, 2314, 0, 1095, 0, + 1343, 132, 2330, 0, 178, 2330, 693, 2330, 1498, 0, + 624, 0, 0, 804, 2362, 132, 0, 0, 0, 0, + 0, 0, 1072, 0, 0, 0, 608, 621, 1534, 1532, + 0, 1195, 232, 231, 1193, 896, 2330, 1137, 345, 345, + 0, 0, 2330, 1445, 2218, 1815, 1844, 1822, 1844, 1844, + 1811, 1811, 2298, 1824, 2330, 1812, 1813, 1849, 0, 1844, + 1811, 1816, 0, 1814, 1852, 1852, 1839, 345, 912, 1796, + 1797, 1798, 1799, 1825, 1826, 1800, 1831, 1832, 1836, 1801, + 1866, 1811, 2219, 897, 0, 888, 2330, 345, 1101, 2330, + 2213, 165, 0, 886, 2258, 2314, 2330, 345, 1188, 0, + 2330, 161, 2330, 345, 2330, 625, 0, 0, 2330, 345, + 2330, 2362, 163, 0, 2330, 345, 906, 2330, 345, 2181, + 2330, 0, 0, 1527, 0, 1501, 2549, 1516, 0, 1512, + 1519, 1515, 1621, 1009, 1008, 0, 1009, 0, 1009, 0, + 1009, 0, 1009, 0, 0, 0, 1009, 2207, 2208, 991, + 0, 1015, 0, 0, 1022, 1021, 1020, 0, 0, 0, + 1023, 0, 1744, 1561, 0, 1382, 234, 185, 0, 246, + 245, 1399, 0, 0, 0, 1072, 1222, 0, 1220, 1211, + 1212, 1395, 238, 236, 0, 0, 0, 0, 0, 0, + 1401, 0, 0, 0, 0, 2192, 2194, 2195, 2095, 2165, + 0, 2513, 2514, 2515, 2154, 0, 2516, 2517, 2518, 2564, + 1997, 1984, 1993, 1998, 1985, 1987, 1994, 2519, 2520, 1932, + 2521, 2522, 2202, 2523, 2524, 2525, 2527, 2528, 2529, 2530, + 1989, 1991, 2531, 2532, 0, 2203, 2534, 2535, 2386, 2537, + 2538, 2540, 2541, 1995, 2543, 2544, 2545, 2546, 2547, 2548, + 2201, 0, 1996, 2550, 2552, 2553, 2554, 2555, 2557, 2558, + 2559, 2560, 0, 0, 0, 2176, 0, 1964, 0, 1804, + 1805, 1827, 1828, 1806, 1833, 1834, 1807, 0, 2175, 1869, + 2046, 1963, 1980, 0, 1969, 1970, 0, 1962, 1958, 1623, + 2171, 0, 1959, 2191, 2193, 2155, 1623, 2169, 199, 253, + 0, 254, 2177, 2449, 187, 229, 201, 228, 202, 200, + 0, 2256, 188, 0, 0, 189, 0, 0, 0, 0, + 250, 248, 0, 1390, 0, 1742, 1741, 2162, 0, 2163, + 2180, 917, 1486, 1484, 1485, 1483, 0, 1480, 1482, 1495, + 1492, 2105, 0, 1616, 0, 0, 0, 1596, 1595, 3, + 1498, 1635, 1636, 0, 0, 0, 0, 0, 0, 0, + 0, 1689, 1651, 1652, 1654, 1686, 1690, 1698, 0, 1602, + 0, 0, 1746, 0, 0, 0, 0, 0, 0, 1136, + 2190, 0, 0, 0, 0, 0, 909, 0, 0, 0, + 1432, 0, 1434, 1435, 1436, 0, 0, 0, 1437, 1438, + 1426, 242, 1444, 1442, 1425, 1427, 1440, 0, 0, 0, + 0, 0, 0, 0, 1451, 0, 169, 170, 0, 637, + 621, 0, 2330, 0, 0, 0, 0, 0, 1144, 1151, + 0, 0, 0, 0, 0, 0, 0, 0, 1145, 1143, + 1146, 244, 1155, 1172, 1175, 0, 1103, 1106, 0, 0, + 0, 0, 0, 1277, 0, 0, 0, 1277, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 269, 281, 340, 600, 0, 0, 0, 603, 0, + 2330, 0, 0, 0, 0, 1190, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, + 131, 136, 0, 0, 0, 0, 0, 0, 0, 586, + 599, 0, 0, 0, 0, 0, 596, 0, 0, 132, + 273, 576, 582, 0, 0, 0, 700, 699, 0, 0, + 0, 0, 1359, 1358, 0, 0, 0, 0, 1449, 1448, + 0, 0, 0, 0, 1277, 0, 263, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 381, 382, 0, 0, 0, 136, 0, + 0, 0, 0, 275, 0, 0, 1409, 1406, 1407, 0, + 1412, 0, 1470, 0, 949, 0, 0, 0, 0, 951, + 0, 944, 0, 0, 941, 2258, 2314, 0, 0, 0, + 0, 0, 0, 0, 954, 0, 0, 0, 420, 0, + 0, 801, 0, 0, 0, 0, 0, 0, 812, 0, + 1426, 1458, 0, 0, 0, 630, 0, 2330, 0, 134, + 850, 0, 802, 448, 0, 0, 0, 1167, 1342, 134, + 0, 0, 172, 0, 0, 697, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 742, 741, 0, 0, 0, + 803, 0, 0, 134, 0, 2330, 579, 2330, 0, 509, + 509, 0, 0, 1071, 1074, 0, 0, 0, 0, 1588, + 1590, 1589, 0, 1587, 0, 343, 344, 0, 1178, 799, + 1203, 0, 0, 1843, 1830, 1838, 1837, 0, 1820, 1819, + 1818, 0, 1817, 0, 1844, 1844, 1842, 1821, 1796, 0, + 0, 0, 1848, 0, 1846, 0, 879, 1792, 1788, 0, + 1855, 1856, 1857, 1854, 1867, 1853, 0, 1802, 1858, 1811, + 1808, 899, 0, 0, 1176, 0, 0, 2330, 345, 2330, + 0, 2330, 0, 0, 0, 1180, 345, 0, 0, 1360, + 0, 895, 893, 892, 894, 0, 0, 877, 0, 0, + 0, 2330, 345, 0, 0, 872, 0, 0, 874, 0, + 0, 0, 0, 1621, 0, 218, 219, 217, 1517, 220, + 1518, 1514, 1500, 0, 999, 0, 1003, 0, 994, 0, + 1000, 0, 995, 992, 993, 0, 998, 0, 0, 510, + 512, 0, 0, 2281, 2297, 0, 2320, 2350, 2351, 2439, + 2445, 0, 2472, 2482, 0, 1024, 1050, 1019, 711, 0, + 0, 1571, 1383, 2112, 0, 1621, 0, 0, 0, 0, + 237, 208, 0, 0, 0, 1052, 2438, 1398, 970, 621, + 0, 1960, 0, 1967, 1968, 2153, 0, 0, 0, 0, + 0, 0, 1966, 2120, 0, 0, 0, 0, 0, 1892, + 0, 0, 0, 2133, 0, 2139, 0, 0, 1929, 0, + 0, 0, 0, 0, 0, 0, 0, 1893, 1873, 1874, + 1964, 2105, 0, 1965, 2198, 0, 1866, 2174, 2095, 0, + 2092, 2093, 2094, 0, 0, 0, 2168, 0, 2103, 0, + 0, 1907, 2101, 1909, 0, 0, 0, 0, 2089, 2090, + 2091, 2083, 2084, 2085, 2086, 2087, 2088, 2099, 1889, 0, + 0, 2048, 0, 1888, 0, 0, 1702, 0, 2196, 2156, + 1702, 255, 256, 252, 0, 0, 204, 203, 0, 222, + 226, 227, 198, 225, 0, 221, 206, 2037, 2036, 205, + 197, 194, 192, 209, 211, 212, 195, 193, 249, 0, + 2161, 0, 2225, 2585, 2586, 2587, 2588, 2589, 2590, 2591, + 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, + 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, + 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, + 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, + 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640, 2641, + 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, + 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661, + 2158, 2157, 2186, 2226, 2227, 2228, 2229, 2164, 0, 0, + 345, 1478, 0, 1475, 1699, 0, 1618, 0, 0, 1488, + 1613, 1612, 1644, 1645, 1088, 1611, 1669, 1670, 1665, 0, + 0, 0, 1695, 1693, 1661, 1655, 1660, 1658, 0, 1662, + 1869, 1688, 1600, 1649, 1650, 1653, 1599, 0, 1691, 0, + 1574, 1689, 1654, 1558, 0, 1536, 0, 1747, 0, 0, + 0, 0, 0, 1116, 1118, 0, 1117, 0, 1120, 0, + 1129, 0, 0, 1115, 1134, 0, 1123, 1121, 0, 1447, + 0, 0, 910, 0, 0, 0, 0, 1433, 0, 0, + 2472, 241, 1436, 1441, 1428, 1439, 0, 0, 0, 0, + 0, 1054, 1053, 0, 0, 1076, 0, 0, 0, 1454, + 498, 0, 342, 0, 0, 0, 0, 0, 0, 0, + 0, 797, 794, 0, 0, 793, 0, 635, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 673, 0, + 1277, 0, 705, 0, 1153, 0, 0, 1152, 0, 1156, + 0, 0, 1154, 1149, 1150, 2439, 2449, 2477, 243, 1174, + 0, 1173, 1171, 1098, 0, 1099, 0, 0, 0, 0, + 0, 2307, 2330, 285, 304, 0, 1276, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 327, 0, 0, 330, 329, 0, 0, 0, + 0, 0, 334, 313, 0, 314, 0, 0, 333, 0, + 0, 601, 602, 0, 0, 0, 0, 1277, 0, 277, + 0, 0, 0, 0, 0, 0, 0, 1187, 0, 728, + 0, 0, 0, 0, 0, 1346, 0, 0, 158, 0, + 153, 157, 0, 0, 0, 0, 584, 585, 598, 0, + 589, 590, 587, 591, 592, 0, 0, 0, 0, 0, + 0, 0, 583, 0, 0, 695, 694, 698, 0, 0, + 0, 1355, 0, 1167, 0, 0, 1354, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1224, 1223, 0, + 0, 0, 0, 0, 0, 840, 0, 0, 0, 0, + 0, 0, 0, 0, 160, 715, 0, 714, 0, 154, + 159, 0, 0, 0, 0, 0, 0, 0, 216, 1405, + 1411, 1473, 2187, 1472, 0, 0, 0, 0, 953, 0, + 0, 0, 0, 0, 0, 0, 945, 946, 947, 948, + 0, 0, 0, 0, 0, 395, 0, 0, 0, 2218, + 0, 828, 800, 0, 0, 0, 814, 0, 817, 820, + 0, 1424, 467, 0, 0, 627, 673, 0, 0, 451, + 167, 0, 0, 0, 0, 730, 0, 0, 0, 1341, + 129, 176, 178, 449, 0, 177, 179, 181, 182, 183, + 180, 184, 0, 692, 696, 0, 0, 0, 0, 623, + 0, 0, 0, 0, 0, 743, 747, 746, 750, 748, + 0, 744, 0, 0, 1767, 0, 0, 152, 0, 0, + 574, 578, 0, 0, 0, 0, 451, 550, 356, 2330, + 0, 509, 0, 2330, 0, 1073, 0, 0, 0, 0, + 0, 0, 0, 0, 1586, 345, 1138, 0, 1446, 0, + 0, 0, 345, 1841, 1840, 1793, 1789, 0, 0, 0, + 0, 913, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1809, 345, 1102, 166, 2214, 0, 881, 0, 0, + 0, 0, 345, 1189, 869, 162, 345, 626, 0, 345, + 164, 0, 0, 0, 618, 345, 907, 345, 2182, 0, + 345, 1529, 2330, 509, 1502, 1513, 996, 1005, 1004, 1002, + 1001, 997, 0, 1016, 0, 508, 0, 0, 0, 1030, + 1031, 0, 0, 1029, 1032, 0, 1034, 1026, 1025, 1035, + 1036, 0, 0, 1052, 709, 0, 0, 0, 0, 1568, + 0, 1566, 0, 1745, 1570, 1559, 1521, 0, 1520, 0, + 567, 0, 0, 1221, 0, 0, 1013, 0, 0, 345, + 1397, 0, 972, 978, 0, 0, 0, 0, 0, 0, + 981, 982, 983, 974, 984, 975, 985, 0, 976, 0, + 0, 0, 0, 2166, 2116, 0, 2117, 0, 0, 2152, + 2148, 0, 0, 0, 0, 0, 2121, 2124, 2125, 2126, + 2123, 2127, 2122, 0, 0, 2128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2541, 0, 0, 0, 0, + 1933, 0, 0, 2076, 0, 2105, 2138, 0, 0, 0, + 0, 0, 0, 2105, 2144, 0, 0, 0, 0, 2035, + 0, 2032, 0, 0, 0, 0, 2165, 0, 0, 2199, + 1870, 1884, 1885, 1886, 1890, 2173, 0, 2167, 0, 0, + 1871, 1898, 0, 2145, 1925, 0, 1930, 1913, 0, 1906, + 0, 1911, 1915, 1894, 0, 1891, 0, 2168, 2104, 0, + 2102, 0, 1881, 1882, 1883, 1875, 1876, 1877, 1878, 1879, + 1880, 1887, 2080, 2078, 2079, 0, 0, 0, 2056, 0, + 0, 1910, 2323, 2357, 0, 1634, 1634, 1634, 1622, 1632, + 2172, 0, 1762, 0, 0, 0, 0, 1972, 0, 2109, + 1643, 2107, 1121, 1762, 2178, 0, 0, 1866, 0, 1743, + 2159, 2162, 915, 916, 914, 1498, 1481, 1477, 1476, 2106, + 1497, 1621, 0, 1086, 1087, 0, 1091, 0, 0, 1663, + 1696, 0, 1687, 0, 1667, 1668, 1659, 1697, 1572, 0, + 1692, 1604, 1603, 0, 1765, 0, 0, 0, 1550, 1538, + 0, 1748, 0, 1702, 1576, 0, 2165, 1700, 1319, 1225, + 1284, 1119, 0, 1811, 1130, 0, 1114, 0, 1113, 1811, + 0, 1131, 0, 1811, 1320, 1226, 1285, 911, 1321, 1227, + 1286, 1322, 1228, 1443, 1431, 1430, 1429, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 778, 2330, 345, 1452, 1323, 0, 1229, 341, 1453, + 1287, 1457, 796, 795, 0, 0, 1288, 0, 636, 0, + 640, 0, 642, 643, 644, 0, 0, 0, 645, 0, + 2258, 2314, 647, 650, 657, 662, 652, 0, 0, 664, + 658, 0, 0, 0, 0, 0, 0, 670, 675, 0, + 0, 0, 0, 0, 0, 0, 1147, 1148, 1324, 1232, + 0, 1289, 1097, 0, 1233, 168, 0, 0, 270, 2330, + 287, 0, 677, 778, 1279, 311, 0, 0, 326, 321, + 322, 320, 2330, 345, 2330, 345, 0, 0, 0, 0, + 0, 323, 318, 319, 315, 0, 0, 328, 2234, 2299, + 2450, 0, 681, 683, 0, 688, 331, 1251, 352, 351, + 350, 0, 335, 0, 357, 360, 332, 309, 312, 310, + 306, 282, 0, 0, 0, 0, 0, 0, 0, 0, + 2185, 0, 0, 1182, 0, 1327, 1290, 0, 1310, 0, + 0, 0, 0, 722, 1347, 1349, 1339, 1239, 1348, 156, + 1266, 145, 0, 0, 141, 0, 0, 0, 0, 135, + 0, 1330, 1240, 0, 0, 274, 577, 588, 593, 1245, + 597, 594, 1300, 595, 1337, 1241, 1333, 1269, 1295, 1340, + 1356, 1242, 1167, 1351, 1353, 0, 1277, 0, 264, 266, + 0, 284, 0, 1243, 0, 1293, 1332, 1268, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1460, 0, 0, + 0, 0, 0, 0, 345, 0, 0, 0, 1279, 2330, + 345, 1331, 0, 1274, 0, 1308, 0, 383, 0, 1267, + 0, 0, 276, 1247, 1302, 0, 0, 214, 213, 215, + 962, 922, 961, 0, 2297, 0, 921, 923, 0, 0, + 0, 924, 0, 0, 0, 0, 920, 918, 919, 394, + 0, 419, 392, 393, 395, 0, 0, 827, 0, 0, + 0, 0, 816, 0, 0, 0, 1450, 0, 132, 634, + 0, 0, 0, 629, 672, 677, 0, 0, 0, 0, + 450, 454, 458, 459, 460, 0, 0, 0, 0, 146, + 133, 0, 858, 0, 509, 0, 732, 1345, 1344, 1166, + 0, 178, 171, 0, 0, 693, 0, 1498, 0, 0, + 356, 811, 809, 808, 810, 0, 0, 0, 832, 807, + 0, 1766, 1768, 0, 0, 0, 0, 0, 0, 567, + 453, 0, 0, 512, 0, 0, 554, 0, 0, 0, + 0, 356, 0, 0, 0, 1108, 0, 1126, 1109, 0, + 0, 0, 0, 1160, 1167, 1161, 1139, 0, 0, 606, + 1591, 1592, 0, 1179, 0, 0, 1810, 1823, 880, 0, + 1851, 1850, 1852, 1852, 0, 1794, 0, 1835, 1860, 1861, + 1862, 1863, 1864, 1865, 0, 1859, 1803, 1177, 345, 0, + 345, 0, 345, 1181, 1361, 0, 878, 0, 0, 345, + 871, 873, 0, 875, 0, 1017, 511, 0, 0, 0, + 0, 1028, 604, 1033, 0, 1045, 1040, 1042, 0, 1046, + 708, 0, 0, 1569, 1562, 1564, 1563, 0, 0, 1560, + 2113, 870, 0, 573, 1213, 1214, 0, 0, 345, 0, + 1047, 0, 0, 979, 973, 0, 0, 977, 0, 980, + 0, 0, 1639, 2114, 2115, 0, 0, 0, 2149, 0, + 0, 2010, 0, 1986, 1988, 2000, 0, 2011, 1971, 2012, + 1990, 1992, 0, 2096, 0, 0, 2001, 0, 1935, 1936, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1951, 1950, 2002, + 2075, 0, 0, 2136, 2137, 2003, 0, 0, 2143, 0, + 0, 0, 2008, 2013, 0, 0, 0, 0, 2019, 0, + 2040, 0, 0, 0, 1961, 2106, 0, 0, 0, 0, + 0, 0, 0, 0, 1931, 1914, 1908, 0, 1912, 1916, + 0, 0, 0, 1902, 0, 0, 1900, 1926, 1896, 0, + 0, 1927, 0, 0, 0, 1979, 0, 0, 1634, 1634, + 1634, 1634, 1631, 0, 0, 0, 0, 2436, 2561, 0, + 1726, 1701, 1703, 1713, 1726, 1731, 1726, 1981, 1760, 1982, + 0, 2179, 0, 1672, 1643, 1643, 1643, 1978, 0, 0, + 0, 0, 1642, 1672, 190, 0, 223, 210, 2161, 0, + 1479, 0, 1646, 0, 2097, 1091, 0, 1648, 0, 0, + 1694, 1656, 1573, 1557, 0, 1555, 1542, 1544, 1543, 0, + 0, 1545, 2165, 0, 1555, 1537, 1581, 0, 0, 1765, + 0, 1580, 0, 1811, 1111, 1112, 0, 1135, 0, 1057, + 1058, 0, 1056, 0, 0, 0, 497, 1075, 0, 0, + 0, 778, 0, 0, 501, 0, 1455, 0, 1338, 1265, + 638, 639, 0, 651, 0, 660, 659, 0, 0, 0, + 0, 0, 0, 0, 646, 666, 610, 667, 669, 0, + 0, 668, 671, 674, 1277, 0, 706, 1253, 0, 1306, + 1141, 1280, 0, 1100, 0, 0, 0, 0, 0, 0, + 467, 305, 0, 0, 0, 365, 0, 289, 297, 363, + 303, 0, 1283, 337, 0, 308, 0, 301, 324, 316, + 325, 317, 336, 338, 0, 685, 686, 684, 680, 0, + 687, 689, 0, 354, 0, 0, 0, 1326, 0, 1277, + 0, 278, 0, 1249, 0, 1304, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1309, 0, 0, + 0, 0, 727, 0, 724, 0, 0, 138, 137, 0, + 144, 0, 0, 0, 0, 0, 1357, 0, 0, 0, + 0, 0, 0, 0, 283, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 384, 347, 0, 835, 0, 0, 0, 386, + 0, 0, 0, 0, 0, 1325, 1234, 0, 0, 0, + 933, 0, 0, 0, 0, 0, 0, 397, 398, 132, + 396, 0, 0, 826, 2386, 2083, 2084, 824, 830, 821, + 823, 825, 822, 0, 829, 778, 0, 0, 813, 818, + 819, 0, 0, 0, 0, 0, 482, 0, 0, 0, + 473, 0, 0, 1167, 466, 469, 470, 0, 0, 630, + 633, 631, 632, 665, 0, 453, 489, 536, 0, 148, + 0, 0, 149, 147, 0, 0, 356, 729, 0, 726, + 0, 174, 449, 0, 697, 0, 0, 0, 1167, 622, + 749, 752, 745, 0, 831, 833, 805, 0, 677, 0, + 0, 579, 0, 509, 1530, 562, 0, 538, 453, 536, + 548, 547, 549, 0, 556, 355, 0, 0, 567, 556, + 0, 0, 1076, 1107, 0, 0, 0, 1157, 1162, 1158, + 0, 0, 1122, 0, 1159, 1140, 1094, 1377, 1378, 1375, + 1376, 0, 0, 0, 1583, 0, 1829, 0, 1847, 1845, + 1790, 1795, 1868, 882, 0, 865, 0, 867, 345, 716, + 0, 619, 345, 0, 0, 0, 0, 1027, 0, 1043, + 0, 0, 1010, 1049, 0, 0, 1567, 1565, 565, 0, + 1052, 0, 1011, 1051, 0, 0, 0, 0, 0, 0, + 0, 2118, 0, 2151, 2147, 0, 1983, 2119, 0, 2131, + 2130, 2076, 0, 0, 1934, 1946, 1947, 1948, 2132, 0, + 1956, 0, 0, 1943, 1944, 1945, 1937, 1938, 1939, 1940, + 1941, 1942, 1949, 2141, 2140, 2134, 2135, 0, 2005, 2006, + 2007, 2142, 2014, 0, 2249, 2041, 2018, 2034, 2033, 0, + 0, 0, 2021, 0, 0, 2030, 0, 2077, 2200, 1872, + 0, 0, 1899, 2146, 1917, 0, 0, 0, 1895, 2096, + 0, 0, 0, 0, 0, 1904, 0, 0, 0, 2059, + 2054, 2055, 2073, 0, 0, 0, 0, 0, 0, 1625, + 1624, 1630, 1726, 1731, 1726, 0, 0, 1606, 0, 1713, + 0, 1725, 1711, 1724, 0, 0, 1737, 1735, 0, 1737, + 0, 1737, 0, 1705, 0, 1727, 1707, 1724, 1709, 0, + 1752, 0, 2180, 1761, 0, 1685, 0, 0, 0, 0, + 2110, 2111, 0, 2108, 1973, 1685, 0, 2160, 1619, 0, + 1647, 1089, 1090, 1664, 1657, 2277, 1763, 0, 1556, 0, + 0, 0, 1547, 1553, 1535, 0, 0, 1577, 1555, 1578, + 1132, 0, 0, 1124, 1063, 1066, 1064, 1062, 1065, 0, + 0, 0, 778, 0, 0, 517, 0, 1083, 1083, 0, + 0, 503, 559, 1167, 781, 0, 0, 0, 779, 345, + 1230, 0, 661, 0, 0, 656, 654, 653, 655, 0, + 611, 1336, 1231, 0, 0, 0, 0, 1142, 0, 0, + 1252, 0, 286, 0, 463, 0, 298, 0, 294, 0, + 1278, 0, 0, 0, 0, 293, 367, 0, 364, 0, + 345, 345, 339, 682, 353, 358, 359, 362, 0, 0, + 0, 0, 0, 1282, 0, 0, 0, 0, 0, 0, + 0, 859, 842, 0, 0, 860, 861, 0, 0, 0, + 1184, 1185, 1183, 1311, 1312, 1317, 1314, 1313, 1316, 1318, + 1315, 0, 1237, 0, 0, 720, 142, 139, 140, 143, + 1263, 1246, 1301, 1352, 0, 0, 0, 1244, 0, 1294, + 0, 1259, 1255, 0, 0, 0, 0, 0, 1335, 1273, + 1299, 1334, 1271, 1297, 1270, 1296, 1272, 1298, 0, 1264, + 0, 1770, 839, 0, 0, 0, 345, 345, 838, 718, + 1248, 1303, 0, 0, 925, 0, 0, 927, 928, 0, + 930, 402, 422, 738, 798, 0, 0, 815, 777, 0, + 471, 0, 477, 480, 0, 0, 484, 485, 483, 472, + 1167, 509, 558, 0, 0, 788, 0, 628, 0, 451, + 0, 486, 0, 0, 455, 151, 150, 0, 0, 0, + 733, 737, 735, 734, 736, 731, 0, 722, 178, 2330, + 0, 0, 0, 0, 560, 1350, 0, 762, 806, 0, + 1769, 712, 0, 356, 575, 0, 0, 0, 451, 567, + 0, 456, 461, 462, 467, 0, 550, 537, 0, 538, + 0, 0, 564, 1422, 0, 568, 570, 0, 0, 0, + 1110, 1127, 1128, 0, 0, 1167, 0, 0, 0, 0, + 613, 345, 1791, 345, 345, 1210, 0, 876, 1039, 1038, + 1037, 605, 0, 1041, 710, 0, 566, 345, 0, 987, + 967, 986, 966, 968, 0, 965, 963, 964, 2150, 1999, + 2009, 2129, 2075, 2106, 0, 0, 1957, 0, 0, 2004, + 2551, 0, 0, 0, 0, 2038, 2039, 2020, 0, 2376, + 2025, 0, 0, 0, 1923, 1921, 1918, 0, 1919, 1903, + 0, 0, 1901, 1897, 0, 1928, 2045, 0, 2061, 2058, + 2072, 2106, 1629, 1628, 1627, 1626, 1712, 1708, 1710, 0, + 2556, 0, 1715, 1722, 0, 1704, 0, 1736, 1732, 0, + 1733, 0, 0, 1734, 0, 0, 1706, 0, 1722, 0, + 1759, 1643, 0, 0, 2050, 1976, 1977, 1974, 1643, 2197, + 2050, 224, 0, 0, 1554, 1539, 0, 1540, 1546, 0, + 0, 0, 0, 1582, 1575, 1125, 1133, 0, 0, 0, + 499, 0, 1167, 0, 0, 0, 1085, 1085, 0, 1167, + 558, 783, 782, 785, 780, 784, 1456, 0, 648, 649, + 663, 1254, 0, 1307, 1261, 0, 1571, 288, 0, 678, + 0, 0, 290, 366, 368, 291, 292, 295, 347, 307, + 300, 0, 0, 0, 1250, 0, 1305, 1257, 1328, 1235, + 1291, 0, 0, 848, 0, 0, 0, 0, 1329, 1236, + 1292, 0, 0, 0, 0, 1571, 0, 0, 0, 0, + 0, 0, 0, 1465, 0, 1281, 346, 837, 836, 347, + 385, 1275, 0, 926, 931, 932, 929, 0, 391, 399, + 423, 132, 0, 0, 1201, 1201, 0, 778, 0, 0, + 468, 481, 0, 558, 516, 0, 474, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 725, 724, 173, 0, 451, 0, 677, 0, 756, + 757, 751, 753, 0, 764, 768, 834, 0, 0, 567, + 453, 0, 0, 1528, 452, 0, 0, 464, 0, 554, + 538, 550, 0, 551, 0, 555, 0, 1415, 0, 0, + 0, 0, 1163, 0, 1169, 0, 1121, 1092, 1164, 0, + 1762, 0, 0, 0, 0, 617, 1202, 866, 868, 717, + 1044, 0, 1048, 345, 969, 2077, 1952, 0, 0, 0, + 0, 2015, 0, 2016, 2043, 2042, 2022, 2026, 0, 2023, + 2024, 1920, 1924, 1922, 1905, 2047, 0, 1643, 2074, 1755, + 0, 1758, 0, 0, 1714, 0, 0, 1716, 0, 0, + 1718, 1720, 0, 0, 0, 0, 0, 0, 2183, 0, + 2276, 2525, 2435, 0, 1671, 1673, 1676, 1678, 1677, 1679, + 1675, 1684, 0, 1608, 0, 1607, 2098, 1764, 0, 0, + 0, 1077, 0, 1579, 1045, 0, 345, 1083, 558, 518, + 2386, 519, 1082, 1084, 1088, 1088, 0, 558, 778, 641, + 0, 0, 271, 676, 0, 0, 299, 349, 361, 0, + 1571, 0, 0, 846, 855, 855, 843, 0, 0, 862, + 1238, 721, 0, 0, 267, 1260, 1256, 0, 0, 1467, + 1468, 0, 0, 0, 0, 0, 345, 934, 0, 425, + 432, 403, 408, 1459, 0, 1459, 0, 405, 409, 1459, + 404, 1459, 401, 402, 0, 1201, 0, 1198, 1197, 776, + 0, 507, 581, 475, 0, 527, 0, 0, 789, 0, + 0, 453, 536, 0, 496, 495, 491, 490, 492, 493, + 494, 488, 487, 0, 677, 852, 356, 1422, 719, 0, + 0, 690, 0, 754, 759, 758, 1459, 763, 0, 0, + 0, 677, 0, 563, 538, 453, 536, 457, 467, 540, + 0, 541, 556, 550, 554, 552, 553, 0, 0, 0, + 567, 1469, 1076, 0, 1168, 0, 0, 0, 0, 0, + 0, 1205, 612, 0, 0, 616, 607, 677, 1012, 1953, + 0, 1954, 0, 0, 0, 2028, 2027, 0, 2064, 1760, + 0, 0, 1754, 0, 0, 1784, 0, 0, 0, 1723, + 1739, 0, 1719, 1717, 0, 1728, 0, 1730, 1973, 0, + 0, 0, 1680, 0, 2049, 2051, 0, 1975, 0, 1552, + 1762, 0, 1549, 0, 1059, 0, 1060, 1085, 522, 0, + 1091, 1091, 509, 778, 500, 1262, 0, 679, 581, 0, + 302, 0, 279, 1258, 0, 0, 857, 857, 0, 0, + 0, 0, 379, 378, 373, 380, 0, 376, 372, 371, + 374, 0, 1461, 0, 1462, 1463, 1466, 387, 400, 0, + 430, 0, 428, 427, 429, 0, 416, 0, 0, 0, + 0, 0, 0, 390, 421, 1196, 1200, 1199, 0, 0, + 476, 0, 478, 513, 514, 515, 0, 479, 523, 524, + 0, 786, 0, 791, 0, 0, 0, 677, 535, 701, + 0, 0, 0, 1416, 0, 0, 561, 0, 765, 766, + 761, 0, 0, 713, 1422, 550, 0, 538, 465, 0, + 438, 554, 556, 0, 1419, 0, 569, 0, 356, 1167, + 1170, 1165, 1381, 0, 0, 615, 614, 707, 1955, 2031, + 2017, 2044, 2029, 2060, 0, 0, 0, 1753, 1756, 0, + 1787, 0, 0, 0, 0, 1773, 0, 1721, 0, 0, + 1729, 0, 0, 0, 1674, 0, 0, 1541, 1551, 1078, + 0, 0, 1088, 0, 778, 0, 1080, 1079, 516, 502, + 1571, 296, 348, 0, 0, 0, 853, 856, 844, 845, + 864, 863, 723, 1571, 0, 0, 369, 0, 0, 426, + 435, 0, 433, 406, 411, 0, 415, 413, 412, 407, + 410, 0, 506, 0, 0, 0, 0, 525, 0, 526, + 557, 0, 790, 0, 0, 0, 703, 851, 0, 0, + 451, 677, 755, 760, 0, 0, 1417, 554, 538, 550, + 0, 0, 542, 1083, 1083, 556, 436, 1420, 1421, 0, + 556, 1093, 1380, 1379, 1621, 0, 0, 2512, 2277, 2484, + 0, 2062, 2065, 2063, 2057, 0, 0, 1785, 1786, 1771, + 0, 0, 1775, 1738, 1751, 1682, 0, 1681, 2052, 2053, + 1762, 345, 1091, 0, 504, 520, 527, 272, 1571, 847, + 0, 268, 0, 377, 375, 1464, 431, 0, 414, 768, + 580, 532, 0, 531, 0, 529, 528, 787, 792, 0, + 677, 841, 1422, 691, 767, 0, 556, 550, 554, 0, + 539, 0, 1085, 1085, 440, 0, 1762, 1363, 1621, 1362, + 1364, 1372, 1369, 1371, 1370, 1368, 1208, 1209, 0, 2069, + 2068, 2067, 2071, 2070, 1757, 0, 1774, 1777, 0, 0, + 0, 1783, 1776, 1778, 0, 1749, 1683, 1548, 1061, 1081, + 0, 778, 280, 854, 0, 434, 0, 530, 534, 533, + 677, 702, 1418, 771, 439, 554, 556, 1083, 543, 545, + 544, 356, 1067, 0, 1373, 1367, 1606, 1593, 0, 0, + 0, 0, 1780, 1781, 1782, 1779, 0, 521, 505, 0, + 0, 704, 773, 0, 769, 772, 774, 775, 556, 437, + 1085, 556, 1365, 1621, 0, 0, 2066, 0, 0, 370, + 0, 739, 0, 441, 546, 1762, 1366, 0, 0, 0, + 1750, 0, 770, 1068, 0, 0, 1772, 771, 0, 0, + 0, 1206, 1207, 740 }; - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = { - -4498, -4498, -4498, 3236, -4498, -848, 333, 2511, -597, -4498, - -4498, -4498, 3135, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - 3169, -4498, -4498, 1691, -2234, -4498, -4498, 136, 158, -1220, - 119, 2750, 1347, -4498, -1065, -4498, -4498, -531, 112, -4498, - 218, -700, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -4498, - -752, 1834, 1183, -312, -2620, -4498, -4498, -1316, -2963, -4498, - 543, -4498, -4498, 1771, -4498, -4498, -4498, 1023, 455, -536, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -679, -4498, -4498, - -865, 156, 48, -2251, -353, -4498, -4498, 422, -354, -1357, - -4498, -3319, -4498, -23, -4498, -4498, -4498, -328, -1319, 1290, - -4498, -649, -1088, 1590, -758, -4498, -218, -4498, -838, -687, - -684, -783, -3502, -3508, -3928, -3532, -3486, 1296, 157, -2874, - -2966, 160, 392, -4498, 162, 164, -4498, 409, -755, -1368, - -4498, -818, -4498, -4498, -4498, -2715, -4498, -4498, -4498, -4498, - 72, -4498, -4498, -4498, -4498, 451, -4498, -4498, -4498, -4498, - -4498, -4498, -2465, 1748, 1749, -4498, -4498, -2938, -4498, -822, - -4498, 589, -2764, 1204, -4498, -4498, -4498, 2492, -4498, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -1488, -4498, -4498, - -4498, -4498, -4498, 433, -25, -4498, -4498, -4498, -4498, -4498, - 166, -4498, 1763, 1010, -4498, -4498, -4498, -832, -924, -903, - -4498, -2757, -4498, -4498, -4498, -4498, -295, -4498, -4498, -4498, - -4498, -4498, -4498, -909, -4498, 1061, -2887, -4498, -4498, 1068, - -4498, -4498, -4498, -4498, -4498, -773, -237, 2520, -4498, -620, - -737, -4498, -4498, -4498, -235, -4498, -4498, -4498, -4498, -4498, - -4498, -1009, 93, -981, -483, -4498, -4498, -4498, -4498, -2147, - -4498, -4498, -4498, -3334, -4498, 4044, 385, 492, 168, -4498, - -29, 61, 2967, -1070, -2415, 357, -417, -4498, -1685, -4498, - -4498, -4498, -2356, -4498, -4498, -4498, -4498, -3248, 169, -4498, - 2953, -4498, -3520, -4199, -3275, -3731, -4059, -4171, -3246, -4498, - -4498, -1029, -4498, -4498, -4498, -1335, 2054, -1786, -4498, -1918, - 418, 1360, -871, -2533, -3530, -645, -3000, -4498, -4498, -3452, - -532, -4498, -4498, -4498, -4498, -4498, -4498, -4498, -1023, -560, - -4498, -4498, 3480, -4498, -4024, -4498, 3452, -4498, -4498, -4498, - -4498, 2342, 2346, -4498, 2347, -4498, -4498, -1336, 1141, -4498, - -4498, -4498, -4498, 106, -4498, -4498, -4498, -4498, -754, -869, - -4498, -4498, -4498, 172, -4498, -4498, -4498, -4498, 2072, -840, - -661, 3367, 173, -4349, -4498, -4498, -894, -4498, 2752, -4498, - -4498, -4498, -4498, -4498, -4498, -4498, -4498, -2545, -4498, -4498, - -4103, -4498, -4498, -4498, -4498, -4498, 2134, 2142, 83, -40, - -4498, -4498, -1198, -4498, -519, -4498, 2413, -4498, -4498, -4498, - -4498, -1592, 174, 469, -4498, 3, -4498, -4498, -4498, 234, - -4498, -4498, -3171, 5, -4498, -4498, -4498, -4498, -4093, -4498, - 6, -674, 756, -4498, -4498, -2588, -4498, 175, 16, -4498, - -4498, 1, 2, -43, -41, -32, 4, 117, 2834, -4498, - 2881, -4498, -2, 1810, -4498, -4498, -759, -144, -4498, 1446, - -583, 2115, 2804, 2810, -4498, 1437, -4498, -4498, 1448, -4498, - 797, -656, -527, -4498, -4498, -4498, -4498, 262, -582, 2125, - -4498, 2817, -4498, -4498, -4498, -1710, 1444, -3158, 830, -3148, - -3121, 320, 296, -1266, -319, 26, -686, 2836, -4498, -4498, - 848, -486, -4498, -4498, -484, -2603, 793, -4498, -4041, -2142, - 624, 2542, -970, -4498, -4498, -940, 14299, -4498, -4498, -4498, - 14936, 15038, -4498, -4498, 15300, 16352, -4498, -804, 1048, 16536, - 7166, -944, -1649, -14, 13548, -2275, -762, -2407, -4498, -3282, - -2334, -4498, -4498, -4498, -270, 905, 475, -4498, -4498, -4498, - -4498, -75, -4498, -619, -4498, -621, -4498, -4498, -4498, -602, - -4497, 2335, -4498, -4498, -4498, -194, -4498, 17317, 1496, -4498, - -878, -2516, -2532, -3156, -1666, -4498, -4498, -4498, -4498, -4498, - -4498, -4498, -1432, -3046, -616, 1568, -4498, -4498, 1656, -4498, - -4498, -4498, -1231, 1518, -770, -2422, 1571, -1863, -4498, -763, - -4498, -695, 2341, -711, 6432, -1257, 7065, -485, -2059, -1163, - -1439, -4498, -54, -4498, -7, -16, 8, -133, -160, -453, - 3712, 12813, -589, -1233, 10067, 12405, 13518, -2854 + -1, 52, 53, 54, 55, 1491, 2410, 2280, 3159, 3160, + 56, 57, 1487, 58, 59, 60, 61, 1410, 62, 993, + 1632, 2425, 63, 2121, 760, 761, 762, 1942, 1943, 2359, + 1944, 1932, 1296, 1769, 1431, 734, 735, 1392, 1432, 65, + 66, 1290, 1923, 67, 68, 69, 1461, 1537, 1462, 1404, + 1678, 4181, 4900, 2972, 2248, 3208, 2973, 2974, 3578, 3579, + 3654, 4915, 4921, 4916, 4917, 70, 1553, 1554, 71, 72, + 3124, 3120, 3699, 4518, 4519, 4752, 570, 2387, 4521, 4522, + 4738, 4739, 4933, 5071, 5072, 2426, 1624, 3202, 3787, 3150, + 4270, 3151, 4271, 3152, 4272, 3136, 3734, 3735, 4215, 3736, + 3153, 4231, 4781, 3154, 2140, 4950, 2467, 1791, 1789, 4765, + 4044, 4045, 5044, 4957, 4958, 4959, 5175, 4233, 4276, 4277, + 4810, 5111, 5112, 3206, 3794, 4282, 4536, 2861, 74, 666, + 1658, 3303, 667, 2470, 605, 668, 2427, 79, 2460, 4952, + 2461, 1512, 2289, 4918, 3283, 80, 1017, 3545, 4605, 4835, + 4836, 81, 222, 82, 1640, 83, 84, 2405, 3143, 85, + 2157, 2878, 86, 87, 2907, 2908, 2909, 88, 3570, 4458, + 1463, 2961, 2962, 2963, 2964, 3600, 89, 1635, 2434, 2435, + 90, 91, 92, 93, 2576, 2577, 94, 2346, 95, 96, + 97, 98, 3634, 4145, 4247, 3003, 3166, 3759, 4245, 99, + 2428, 1648, 2450, 2451, 4257, 4561, 4562, 4563, 4796, 5102, + 4565, 4798, 4980, 4800, 5273, 5274, 4527, 3524, 4058, 101, + 4224, 4225, 4964, 102, 2155, 103, 104, 105, 1608, 2397, + 2398, 3708, 1601, 2390, 2391, 3773, 3774, 106, 3077, 107, + 4121, 4122, 606, 4971, 4906, 5058, 108, 109, 4125, 4126, + 110, 111, 112, 113, 114, 658, 659, 660, 1105, 1106, + 2833, 1057, 115, 2040, 116, 956, 957, 3101, 117, 1183, + 2620, 2621, 4320, 118, 691, 1124, 1125, 2429, 120, 700, + 2596, 702, 1804, 3285, 3286, 3852, 121, 122, 2573, 2599, + 123, 1397, 2131, 2132, 4039, 2430, 607, 1664, 2474, 2856, + 4680, 4681, 4436, 4694, 2786, 3477, 125, 608, 1436, 2204, + 1077, 1078, 2477, 3216, 2100, 2101, 2102, 3811, 2103, 3218, + 2104, 1369, 2105, 1027, 1028, 3224, 3225, 3226, 3807, 3814, + 2419, 4594, 4595, 126, 1434, 2202, 127, 128, 129, 1475, + 878, 1087, 1088, 130, 620, 621, 131, 4757, 132, 1031, + 133, 4603, 134, 135, 725, 726, 1167, 1168, 136, 137, + 2218, 3581, 138, 139, 140, 2997, 2998, 4137, 141, 142, + 1627, 1628, 143, 144, 3042, 3043, 145, 146, 147, 5199, + 5253, 5254, 5255, 3821, 5124, 5201, 1155, 149, 150, 151, + 188, 916, 917, 918, 2431, 4587, 153, 154, 1393, 1394, + 1395, 1396, 2126, 155, 156, 157, 158, 159, 160, 161, + 1612, 162, 163, 4731, 164, 165, 1572, 166, 1326, 1327, + 167, 168, 564, 778, 1330, 1336, 169, 670, 1118, 1119, + 1120, 1771, 170, 1163, 959, 671, 1113, 172, 672, 2084, + 2808, 3489, 3490, 3491, 3494, 4421, 4018, 673, 2804, 175, + 1811, 2582, 2585, 2800, 674, 2813, 2814, 2815, 3497, 675, + 693, 1020, 2483, 676, 1257, 180, 181, 182, 787, 781, + 782, 184, 1916, 2748, 709, 1343, 747, 748, 795, 3462, + 2052, 2053, 2075, 2076, 1352, 1353, 2065, 2067, 2788, 2068, + 2796, 2058, 3995, 4664, 4665, 4666, 4667, 4668, 4669, 4404, + 2071, 2072, 1355, 1356, 1357, 2080, 185, 2752, 3441, 3442, + 3443, 3971, 3972, 3986, 3982, 4388, 4650, 3444, 1153, 1363, + 4396, 5225, 3445, 4639, 4640, 4852, 3990, 3453, 3485, 3190, + 3191, 3192, 3446, 5024, 5025, 5222, 5223, 4854, 4855, 2106, + 1708, 1059, 1258, 1060, 1720, 1259, 1692, 1062, 1260, 1261, + 1262, 1065, 1263, 1264, 1265, 1068, 1684, 1266, 1267, 1702, + 1717, 1718, 1331, 4856, 1269, 1270, 1271, 3448, 1272, 3925, + 4352, 4341, 2680, 2681, 1939, 3921, 3386, 1911, 2738, 4673, + 4874, 4875, 3425, 3950, 4368, 4637, 5016, 5131, 5132, 1273, + 1274, 1275, 2735, 1907, 881, 1276, 3710, 1909, 2674, 2760, + 2761, 1814, 1834, 2627, 2643, 2644, 2654, 3345, 2662, 2667, + 3373, 3374, 2675, 2704, 1277, 2629, 2630, 3329, 1836, 1278, + 1319, 1951, 1370, 1831, 2699, 1286, 1279, 1280, 1805, 771, + 4646, 1109, 837, 2989, 2031, 920, 706, 1281, 1282, 1283, + 1284, 1468, 852, 1080, 1081, 560, 831, 854, 2965, 561, + 562, 833, 2036 }; - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -4583 +static const int yypact[] = +{ + 9436, 810, 12815, -4583, -4583, 810, -4583, 65551, 434, 654, + 1021, 165, 13899, 65999, 73167, 900, 828, 14963, 810, 73167, + 1568, 50319, 62415, 845, 73167, 1129, 858, 50319, 73167, 1778, + 73615, 1121, 1272, 886, 74063, 66447, 61071, 1442, 73167, 1247, + 1349, 74511, 66895, 1184, 67343, 858, 46763, 326, 1137, 74959, + 73167, 2388, 1699, 1312, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 434, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 1645, + -4583, 957, 1831, 1433, 978, 1140, -4583, -4583, -4583, 58831, + 73167, 73167, 73167, 1564, 73167, 1419, 73167, 320, 58831, 54799, + 67791, 1671, 1481, 43173, 75407, -4583, 73167, 53007, 73167, 73167, + 75855, 73167, 73167, 73167, 1361, 63759, 73167, 1607, 73167, 73167, + 53455, 76303, 1754, 1224, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, 73167, 15410, 1129, -4583, -4583, 2388, + 73167, 1738, 58831, 73167, 1546, 76751, 1631, 73167, -4583, 73167, + 1648, 77199, 443, 1956, 54799, 2009, 43622, 1747, 73167, 73167, + 54799, 77647, 78095, 78543, 73167, 73167, -4583, -4583, 1741, 73167, + 73167, -4583, 1878, 55247, 1535, 1904, 2098, 2004, 1278, -4583, + 68239, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 57935, + 828, -4583, -4583, 1862, 59279, 73167, 2028, -4583, -4583, 78991, + 94153, 1838, -4583, 459, 59727, 55695, 2146, 1833, 44071, 2229, + -4583, -4583, 56143, -4583, -4583, -4583, -4583, -4583, 79439, -4583, + 79887, 1927, 2028, -4583, 94587, 56591, -4583, 2079, 80335, 80783, + 81231, -4583, 1819, 1515, 1403, 39108, -4583, -4583, -4583, 434, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 191, 1820, + 209, 206, 293, -4583, -4583, 208, 213, 215, 191, 2287, + 2287, -4583, 73167, -4583, -4583, 1820, 36, 1849, 1849, 1849, + 2103, -23, -4583, 1849, 1984, -4583, -4583, -4583, -4583, 67343, + -4583, 1902, 68687, 73167, 69135, 1129, 1909, 2356, 1917, -4583, + -4583, -4583, -4583, -4583, 1977, 73167, 73167, 73167, -4583, -4583, + 2365, 1992, 2206, 1946, -4583, -4583, -4583, 2159, 2167, 2213, + 98, 1129, 2066, -4583, 2325, -4583, 2240, 27638, 27638, 1129, + 69583, 81679, 258, 57935, 1129, 70031, 2102, 1200, 2255, -4583, + -4583, -4583, 650, -4583, 2513, 2115, 2349, 1946, 1224, 40460, + -4583, 2120, 785, 67343, -4583, -4583, -4583, 332, 2425, 29498, + 73167, 2126, -4583, 2124, 2126, 2142, 2161, 1433, -4583, 9436, + 73167, 1421, 1421, 2552, 1421, 1877, 1905, -4583, 2007, -4583, + 2458, 2426, 67343, 2170, 214, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 1476, 2176, + 785, -4583, 241, -4583, 1492, 2179, 1487, 967, -4583, -4583, + 234, 73167, 207, 2220, 70479, 6278, 2241, 785, 2245, -4583, + -4583, -4583, 2395, 1071, -4583, -4583, -4583, -4583, 2533, 2579, + 6185, 306, 70927, -4583, -4583, -4583, -4583, 73167, 73167, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 2259, 1077, + -4583, -4583, 2261, 2583, 2472, 776, 2560, 2430, 1031, 2485, + 1618, 2608, 9287, 1190, 1651, 889, 68687, 73167, 2574, 2612, + 7016, 1425, 709, 2503, 1202, 2560, 2633, 2476, 1031, 2657, + 9008, 73167, -4583, 2588, 2699, 677, -4583, 108, -4583, 2406, + 2553, 52, 2585, 58831, 2362, -4583, -4583, 73167, -4583, -4583, + 95021, 2434, -4583, 678, 58831, -4583, 2582, 2433, 44520, 73167, + -4583, -4583, 73167, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + 2518, 2709, 73167, 95021, -4583, 2656, 73167, 73167, -4583, 2401, + -4583, -4583, -4583, -4583, 1849, 73167, 2403, 2806, 95021, 2621, + 114, 73167, 1592, 2838, 73167, 2625, 1592, 2441, 82127, -4583, + -4583, 1592, -4583, -4583, -4583, 73167, 73167, 2411, 1503, 2613, + 2723, 1592, 2630, 2842, 2843, 2637, 2491, 2639, 2124, 2809, + 2614, 903, 1204, 175, 1952, 1592, 2474, 82575, 83023, 73167, + 2475, 73167, 2821, 58831, 73167, 2746, -4583, 2603, -4583, -4583, + 1134, -4583, -4583, -4583, -4583, -4583, 2760, -4583, 155, 229, + 2761, 2440, 2768, -4583, -4583, -4583, 2496, -4583, 2496, 2496, + 2450, 2450, 2627, 2452, 2777, -4583, -4583, -4583, 2154, 2496, + 2450, -4583, 95889, -4583, 1561, 1611, -4583, 182, -4583, 2890, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 2459, -4583, + 966, 1993, -4583, -4583, 2494, -4583, 2784, 185, -4583, 2786, + -4583, 2463, 83471, -4583, 83919, 84367, 2791, 269, -4583, 54799, + 2792, 2463, 2795, 229, 2797, -4583, 914, 2781, 2798, 182, + 2799, 1954, 2463, 58383, 2801, 288, -4583, 2807, 316, -4583, + 2808, 2688, 29498, -4583, 2580, -4583, 1137, -4583, 1737, -4583, + 49423, -4583, 1403, 1820, -4583, 73167, 1820, 73167, 1820, 73167, + 1820, 73167, 1820, 73167, 73167, 73167, 1820, -4583, -4583, -4583, + 73167, 2489, 73167, 73167, -4583, -4583, -4583, 62863, 54799, 63311, + -4583, 73167, -4583, 89, 1129, -4583, -4583, -4583, 1289, -4583, + 1946, -4583, 95021, 2923, 54799, 2821, -4583, 1764, -4583, -4583, + -4583, -4583, -4583, -4583, 2740, 73167, 2812, 2815, 62863, 54799, + -4583, 84815, 57935, 2697, 2498, -4583, -4583, -4583, -4583, -4583, + 2008, 2961, 192, 2968, 29498, 2507, 192, 192, 2509, 2824, + -4583, -4583, -4583, 244, 2515, 2516, -4583, 199, 199, -4583, + 2517, 2519, -4583, 220, 2520, 2523, 2980, 2987, 225, 2526, + 2527, 2529, 2154, 192, 29498, -4583, 2531, 199, 2534, 2536, + 2537, 3000, 2539, -4583, 3003, 2542, 318, 338, 2543, 2544, + -4583, 2517, -4583, 245, 2545, 2554, 2555, 2556, 2559, 2561, + 2562, 2563, 29498, 29498, 29498, -4583, 26243, 785, 1129, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, 262, 5583, -4583, + 2589, -4583, -4583, 2742, -4583, -4583, 29498, -4583, -4583, 87, + -4583, 264, -4583, -4583, -4583, 785, 2823, 2564, -4583, -4583, + 276, 2565, -4583, 376, -4583, -4583, -4583, -4583, -4583, -4583, + 57039, 2997, -4583, 349, 1129, 108, 1416, 2939, 48527, 48975, + -4583, -4583, 2814, -4583, 73167, -4583, -4583, 29498, 46315, -4583, + 785, 130, -4583, -4583, -4583, -4583, 1829, -4583, -4583, -4583, + 434, 13029, 1830, 2126, 73167, 73167, 3002, -4583, -4583, -4583, + 2124, -4583, -4583, 1433, 1433, 29498, 1433, 235, 1145, 28103, + 29498, 2881, 2779, 254, 742, 2883, -4583, 2782, 1877, 1905, + 67343, 73167, 85263, 2694, 29498, 2658, 2660, 2708, 47659, -4583, + 785, 2661, 2628, 2664, 2716, 51215, 2586, 2666, 2670, 2726, + -4583, 2840, -4583, -4583, 2672, 2741, 2678, 85711, -4583, -4583, + 864, -4583, -4583, -4583, 864, -4583, 2611, 1404, 976, 1354, + 2680, 255, 1127, 2986, -4583, 201, -4583, -4583, 2733, -4583, + 6034, 73167, 2926, 9835, 2810, 306, 2811, 2730, -4583, -4583, + 2857, 2693, 73167, 2700, 2833, 306, 802, 86159, -4583, -4583, + -4583, -4583, -4583, -4583, 4609, 25374, -4583, -38, 2702, 2681, + 2713, 73167, 60175, 350, 2828, 2829, 1682, 2097, 197, 2763, + 73167, 1551, 2836, 73167, 2632, 2712, 2717, 2928, 2634, 2038, + 3024, 2638, -4583, -4583, -4583, 1396, 1804, 2827, -4583, 2929, + 2966, 7801, 2704, 2705, 92851, -4583, 2735, 579, 44969, 73167, + 73167, 2736, 2744, 2743, 2745, 602, 3027, 1397, 2747, -4583, + -4583, -4583, 1397, 73167, 2748, 2749, 73167, 95889, 306, -4583, + 3081, 306, 306, 1765, 3085, 2753, 400, 2900, 81, 1592, + 2638, 1716, -4583, 2755, 2756, 279, -4583, 2876, 2769, 2770, + 2822, 1129, -4583, -4583, 2772, 2844, 2773, 631, -4583, -4583, + 2771, 67343, 2877, 2878, 178, 1287, 2638, -4583, 2776, 2778, + 2634, 2634, 73167, 73167, 73167, 73167, 73167, 195, 3123, 3125, + 2780, 161, 2837, 2706, -4583, 1397, 53903, 2785, -4583, 1397, + 73167, 2787, 1512, 2638, 1692, 110, -4583, -4583, -4583, 1224, + -4583, 73167, -4583, 73167, -4583, 2970, 95021, 2913, 2978, -4583, + 2752, -4583, 2981, 306, -4583, 73167, 73167, 2982, 2925, 2932, + 930, 95021, 2933, 2994, -4583, 2995, 2996, 2804, 2775, 2818, + 48093, -4583, 2411, 2739, 3177, 3072, 73167, 51215, -4583, 3194, + 864, -4583, 95021, 2955, 3079, -4583, 73167, 2974, 41, -4583, + 3115, 2816, -4583, -4583, 987, 73167, 246, 2800, -4583, -4583, + 3084, 54799, 1466, 3086, 1129, 2817, 3087, 2967, 1129, 54799, + 3006, 73167, 73167, 73167, 73167, -4583, -4583, 2975, 711, 122, + -4583, 53903, 2989, -4583, 73167, 2990, 1716, 2991, 3203, 94, + 1849, 86607, 3088, -4583, 87055, 2783, 3208, 95021, 3032, -4583, + 2063, -4583, 2907, -4583, 58831, -4583, -4583, 58831, -4583, -4583, + -4583, 95021, 73167, -4583, 2788, -4583, -4583, 29498, -4583, -4583, + -4583, 2287, -4583, 95021, 2496, 2496, -4583, -4583, 3214, 2863, + 2865, 2287, -4583, 2287, -4583, 95021, -4583, 2802, 2803, 2287, + 2868, 2872, 2882, -4583, 2805, 2885, 2287, -4583, -4583, 2074, + -4583, -4583, 58831, 58831, -4583, 54799, 54799, 3108, 288, 3119, + 2854, 3121, 2860, 44969, 44969, -4583, 442, 54799, 73167, -4583, + 73167, -4583, -4583, -4583, -4583, 95021, 95021, -4583, 54799, 53903, + 3129, 3130, 229, 73167, 73167, -4583, 73167, 73167, -4583, 73167, + 73167, 1843, 87503, 1403, 57487, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, 73167, -4583, 73167, -4583, 73167, -4583, 73167, + -4583, 73167, -4583, -4583, -4583, 73167, -4583, 73167, 1844, -4583, + -4583, 1863, 121, 73167, 73167, 328, 58831, 73167, 3016, 73167, + 73167, 73167, 73167, 73167, 2889, 2565, 563, -4583, 1169, 450, + 67343, 3023, -4583, -4583, 1864, 2388, 1239, 73167, 1230, 1977, + -4583, -4583, 63311, 62415, 3117, 96, 73167, -4583, -4583, 4789, + 29498, 785, 27173, -4583, -4583, 13029, 2855, 29498, 29498, 2820, + 2287, 2287, -4583, 997, 29498, 29498, 29498, 2287, 2287, 4231, + 29498, 44969, 29498, 33683, 23540, 29498, 29498, 26708, -4583, 29498, + 3040, 34607, 29498, 1416, 3041, 29498, 1416, 4231, 3274, 3274, + 1824, 6368, 2825, 785, -4583, 2287, 1105, -4583, 416, 95021, + 29498, 29498, 29498, 29498, 51215, 2902, 240, 73167, 29498, 2826, + 1221, -4583, 29498, -4583, 2831, 29498, 2912, 805, 29498, 29498, + 29498, 29498, 29498, 29498, 29498, 29498, 29498, -4583, 35957, 418, + 3133, 3148, 33, 410, 71375, 27638, 3143, 22608, -4583, 193, + 3143, -4583, -4583, -4583, 73167, 2997, -4583, -4583, 2917, -4583, + -4583, -4583, -4583, -4583, 265, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, 2839, -4583, -4583, -4583, -4583, 2839, -4583, 2841, + 11459, 2845, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 3134, 3136, + 229, 73167, 332, 64207, -4583, 29498, -4583, 1865, 2851, -4583, + 3106, -4583, 2850, -4583, 9364, 3106, -4583, -4583, 302, 2973, + 3118, 3064, -4583, -4583, -4583, 2861, 13029, -4583, 1910, 13029, + 1938, -4583, -4583, -4583, -4583, -4583, -4583, 1270, -4583, 73167, + 963, 2881, 742, 2922, 1073, 3299, 73167, -4583, 40910, 1873, + 54799, 73167, 73167, 3061, -4583, 3283, -4583, 95889, -4583, 2869, + -4583, 95455, 91535, -4583, -4583, 585, -4583, 921, 54799, -4583, + 73167, 73167, -4583, 51215, 54799, 73167, 73167, -4583, 54799, 73167, + 73167, -4583, -4583, -4583, -4583, -4583, 49871, 850, 62415, 3001, + 61519, -4583, -4583, 2874, 73167, 2931, 3135, 3137, 1310, -4583, + -4583, 87951, -4583, 3083, 54799, 73167, 73167, 29498, 3090, 73167, + 73167, -4583, 298, 2962, 2963, -4583, 73167, 2964, 3112, 58831, + 2886, 73167, 73167, 95021, 2969, 750, 58831, 2934, 45418, 73167, + 73167, 73167, 73167, 3015, 3199, 95021, 73167, 3147, 1408, 67343, + 174, 1612, 2638, 3104, -4583, 3217, 1215, -4583, 54799, -4583, + 73167, 3095, -4583, -4583, -4583, 71823, 3322, 3007, -4583, -4583, + 88399, -4583, -4583, -4583, 1881, -4583, 54799, 54799, 73167, 10484, + 88847, 1447, 3116, -4583, -4583, 95021, -4583, 73167, 73167, 73167, + 3222, 3150, 73167, 64655, 89295, 89743, 78, 1522, 3151, 73167, + 65103, 3152, -4583, 3042, 73167, -4583, -4583, 51663, 54799, 73167, + 814, 51215, -4583, -4583, 73167, -4583, 3110, 771, -4583, 73167, + 8184, -4583, -4583, 2985, 2999, 73167, 3120, 180, 1832, 2638, + 73167, 73167, 2910, 1887, 54799, 73167, 51215, -4583, 3122, 1065, + 67343, 67343, 54799, 73167, 67343, -4583, 73167, 81679, -4583, 54799, + 1057, -4583, 3063, 54799, 73167, 13282, -4583, -4583, -4583, 306, + -4583, -4583, -4583, -4583, -4583, 73167, 73167, 306, 73167, 73167, + 306, 1365, -4583, 54799, 73167, -4583, -4583, -4583, 54799, 73167, + 73167, -4583, 54799, 2800, 73167, 51215, -4583, 73167, 7535, 73167, + 73167, 73167, 73167, 73167, 73167, 54799, 73167, -4583, -4583, 1283, + 1405, 88, 1269, 718, 73167, 3204, 73167, 90191, 54799, 73167, + 73167, 1129, 73167, 364, -4583, -4583, 3038, -4583, 54799, 1057, + -4583, 11625, 73167, 73167, 3004, 3005, 230, 3080, -4583, -4583, + -4583, -4583, -4583, -4583, 282, 3354, 90639, 282, -4583, 282, + 3184, 2983, 2984, 282, 73167, 73167, -4583, -4583, -4583, -4583, + 3179, 73167, 282, 282, 282, 3093, 3138, 139, 3209, 2942, + 1891, -4583, -4583, 29498, 95021, 73167, -4583, 1906, -4583, 2943, + 711, -4583, -4583, 51215, 73167, 187, 643, 3255, 3140, 60623, + 1087, 3247, 73167, 2992, 73167, 3370, 3028, 67343, 2411, -4583, + 1087, 73167, -4583, 1870, 62415, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, 73167, -4583, -4583, 3248, 73167, 29498, 3105, -4583, + 1129, 2411, 2411, 2411, 2411, -4583, -4583, -4583, -4583, 3153, + 1799, -4583, 2945, 2411, 73167, 3066, 3272, 1087, 2958, 3281, + -4583, 1716, 3282, 1285, 73167, 3167, 60623, 2137, 3009, 3185, + 3395, 1849, 1129, 3186, 3174, -4583, 25808, 6583, 3180, 3236, + 57935, 3275, 3277, 3293, -4583, 155, -4583, 3419, -4583, 29498, + 1913, 2993, 182, -4583, -4583, 2998, 2803, 3010, 3012, 3008, + 3011, -4583, 2287, 198, 3013, 1279, 150, 3128, 2287, 3226, + 3018, -4583, 185, -4583, 2463, -4583, 73167, -4583, 73167, 73167, + 73167, 73167, 269, -4583, -4583, 2463, 229, -4583, 3260, 182, + 2463, 3126, 3317, 57935, -4583, 288, -4583, 316, -4583, 3212, + 229, -4583, 3229, 1849, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, 1914, -4583, 73167, -4583, 3302, 3303, 3305, 3020, + 3021, 3060, 73167, 3029, 3020, 306, 3020, 2565, 2565, 3020, + 3021, 54351, 3475, 3332, -4583, 3114, 3036, 3342, 137, -4583, + 692, 75, 3266, -4583, -4583, -4583, -4583, 95021, -4583, 54799, + 3076, 73167, 73167, -4583, 100, 3241, 3037, 54351, 3456, 229, + -4583, 58831, -4583, -4583, 95021, 3124, 3139, 58831, 3251, 3101, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, 95021, -4583, 3301, + 73167, 73167, 1918, -4583, -4583, 1776, -4583, 1795, 29498, 181, + -4583, 11966, 1920, 29498, 3050, 3057, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, 3058, 3371, -4583, 1928, 1958, 1964, 3069, + 3070, 5235, 3071, 11591, 3073, 3067, 33683, 33683, 26243, 2075, + -4583, 33683, 3074, 3263, 1969, 11479, 3075, 3077, 12061, 28568, + 29498, 28568, 28568, 12326, 3075, 3082, 1970, 51215, 3257, 12364, + 1978, -4583, 29498, 51215, 5493, 29498, -4583, 29498, 3089, -4583, + -4583, 2624, 2624, 2624, 4231, -4583, 3094, -4583, 33683, 33683, + -4583, 2960, 26243, -4583, -4583, 3385, -4583, -4583, 1573, -4583, + 3091, -4583, -4583, 3109, 44969, 6717, 29498, 375, 29498, 2826, + 29498, 3160, 2624, 2624, 2624, 435, 435, 257, 257, 257, + 394, 410, -4583, -4583, -4583, 3096, 3098, 3107, 3276, 3111, + 29498, -4583, 2198, 2218, 73167, 2548, 2725, 2793, -4583, -4583, + -4583, 36858, 3146, 29498, 29498, 29498, 3113, -4583, 2351, 13029, + 84, -4583, 268, 3146, -4583, 1224, 2287, 1105, 49423, -4583, + -4583, 29498, -4583, -4583, -4583, 2124, -4583, -4583, -4583, 13029, + -4583, 2388, 29498, -4583, -4583, 907, 3099, 29498, 1910, -4583, + -4583, 3144, -4583, 29498, -4583, -4583, -4583, 2565, -4583, 3325, + -4583, -4583, -4583, 36858, 3156, 3145, 851, 40009, 3290, -4583, + 73167, -4583, 73167, 109, -4583, 3141, -4583, -4583, -4583, -4583, + -4583, -4583, 91535, 1993, -4583, 95455, -4583, 95455, -4583, 1993, + 3508, -4583, 91535, 1790, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, 54799, 54799, 3309, + 73167, 3310, 3326, 29498, 865, 73167, 3127, 3131, 1474, 3403, + 73167, -4583, 3451, 229, -4583, -4583, 3211, -4583, 13029, -4583, + -4583, -4583, -4583, -4583, 54799, 73167, -4583, 57935, -4583, 73167, + -4583, 95021, -4583, -4583, -4583, 73167, 3172, 73167, -4583, 73167, + 73167, 73167, -4583, -4583, -4583, -4583, -4583, 974, 95021, -4583, + -4583, 73167, 73167, 636, 3219, 3224, 73167, -4583, 1102, 2876, + 11994, 73167, 73167, 73167, 3414, 73167, -4583, -4583, -4583, -4583, + 3358, -4583, -4583, 91535, -4583, 2463, 1245, 3231, 2638, 3373, + -4583, 3476, 3352, -4583, 909, -4583, 73167, 3286, -4583, -4583, + -4583, -4583, 3484, 229, 3487, 229, 73167, 73167, 73167, 73167, + 3292, -4583, -4583, -4583, -4583, 3294, 3415, -4583, 51215, 51215, + 51215, 1979, -4583, -4583, 1129, -4583, -4583, -4583, -4583, -4583, + -4583, 3449, -4583, 2012, -4583, 1583, -4583, -4583, -4583, -4583, + -4583, -4583, 54799, 73167, 12317, 3491, 73167, 73167, 73167, 1706, + -4583, 945, 95021, -4583, 93285, -4583, -4583, 2016, -4583, 3188, + 73167, 3252, 54799, 3230, 3175, 3175, -4583, -4583, 3175, -4583, + -4583, -4583, 3423, 3360, -4583, 309, 3362, 54799, 3242, -4583, + 3264, -4583, -4583, 3265, 1990, 2638, 1716, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, 1010, -4583, -4583, 1375, 301, 2140, 2638, -4583, + 3494, -4583, 3267, -4583, 3268, -4583, -4583, -4583, 3429, 3430, + 3431, 3279, 3280, 3327, 3284, 3287, 3333, -4583, 3291, 3334, + 3295, 3337, 3416, 3304, 229, 95021, 3418, 1129, 3331, 3542, + 229, -4583, 3306, -4583, 3312, -4583, 3648, -4583, 73167, -4583, + 3313, 2152, 2638, -4583, -4583, 54799, 73167, -4583, -4583, -4583, + -4583, -4583, -4583, 95021, 73167, 3485, -4583, -4583, 282, 73167, + 73167, -4583, 3490, 3496, 73167, 3501, -4583, -4583, -4583, -4583, + 231, -4583, -4583, -4583, 3093, 3520, 42263, -4583, 3694, 6388, + 3240, 116, -4583, 51215, 42263, 1879, 2289, 138, 1592, -4583, + 57935, 73167, 57935, -4583, 643, 3352, 73167, 73167, 73167, 3243, + 3238, -4583, -4583, -4583, -4583, 54799, 212, 54799, 2287, -4583, + -4583, 3314, -4583, 73167, 1849, 3710, 3557, -4583, 3175, -4583, + 3672, 2843, 1466, 3396, 1650, 2491, 3612, 2124, 144, 51215, + 3009, -4583, -4583, -4583, -4583, 73167, 73167, 711, 1129, -4583, + 3253, 3249, -4583, 73167, 3565, 73167, 73167, 73167, 73167, 3076, + 3256, 73167, 3258, 95021, 67, 3460, 3464, 2634, 3697, 3589, + 2388, 3009, 3347, 3591, 73167, -4583, 2023, 166, -4583, 1129, + 57935, 92417, 3580, -4583, 5887, -4583, -4583, 1016, 73167, 3568, + -4583, -4583, 2388, -4583, 95021, 2029, -4583, -4583, -4583, 2287, + -4583, -4583, 1698, 1698, 3278, -4583, 3285, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, 3270, -4583, -4583, -4583, 288, 3336, + 229, 3338, 229, -4583, -4583, 73167, -4583, 73167, 53903, 229, + -4583, -4583, 73167, -4583, 3598, -4583, -4583, 3408, 3411, 3417, + 73167, 3020, -4583, 3288, 54799, 1260, -4583, -4583, 3483, -4583, + -4583, 67343, 3406, -4583, -4583, -4583, -4583, 3613, 3614, -4583, + -4583, -4583, 247, -4583, -4583, -4583, 54799, 62863, 448, 54799, + -4583, 3549, 3554, -4583, -4583, 3559, 306, -4583, 3567, -4583, + 3570, 3571, -4583, -4583, -4583, 3315, 12636, 29498, -4583, 3638, + 95021, -4583, 7005, -4583, -4583, -4583, 29498, -4583, -4583, -4583, + -4583, -4583, 29498, -4583, 29498, 3616, -4583, 24006, 3770, 3770, + 3318, 95021, 33683, 33683, 33683, 33683, 1636, 2534, 33683, 33683, + 33683, 33683, 33683, 33683, 33683, 33683, 33683, 34148, 384, -4583, + 3506, 29498, 29498, 3628, 3616, -4583, 95021, 3320, 3075, 3323, + 3324, 29498, -4583, -4583, 2031, 35057, 3328, 51215, -4583, 29498, + 11499, 2036, 3364, 12948, 785, 7317, 1129, 29498, 3427, 3504, + 29498, 2040, 29498, 3631, -4583, -4583, -4583, 3330, -4583, -4583, + 95021, 29498, 3340, 3142, 33683, 33683, 3519, -4583, 3771, 29498, + 26243, -4583, 3518, 3367, 41360, -4583, 24472, 3335, 858, 858, + 858, 858, -4583, 73167, 73167, 73167, 37308, 3633, 3343, 36407, + 72271, 3341, 1364, -4583, 72271, 72719, 72271, -4583, 3345, -4583, + 3348, 785, 29498, 3630, 608, 608, 3518, -4583, 29498, 29498, + 29033, 3349, -4583, 3630, 108, 3351, -4583, -4583, 13029, 3350, + -4583, 3355, -4583, 3353, -4583, 3099, 1042, -4583, 7634, 3532, + -4583, -4583, -4583, 3341, 29963, 3498, -4583, -4583, -4583, 3393, + 2041, -4583, -4583, 3741, 3498, -4583, -4583, 2055, 40910, 3156, + 29498, 785, 2057, 1816, -4583, -4583, 91535, -4583, 3428, 2463, + 2463, 853, 3020, 3668, 853, 7893, -4583, -4583, 37758, 73167, + 73167, -4583, 73167, 2071, 1685, 73167, -4583, 73167, -4583, -4583, + -4583, -4583, 3792, -4583, 73167, -4583, -4583, 3420, 3422, 73167, + 73167, 73167, 73167, 3617, -4583, -4583, 2179, -4583, -4583, 54799, + 73167, -4583, -4583, -4583, 374, 2164, 2638, -4583, 3440, -4583, + -4583, -4583, 3634, -4583, 3781, 3455, 73167, 3691, 73167, 3372, + -4583, 1685, 3674, 1594, 2634, 400, 4603, -4583, 86, -4583, + -4583, 3443, -4583, -4583, 73167, -4583, 73167, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, 3505, -4583, -4583, -4583, -4583, 51663, + -4583, -4583, 73167, -4583, 51215, 42263, 51215, -4583, 1376, 413, + 2267, 2638, 73167, -4583, 3450, -4583, 3458, 3463, 3521, 1035, + 224, 3471, 3472, 3527, 3375, 3397, 3398, -4583, 51215, 42724, + 3551, 73167, 2463, 3401, 3441, 191, 1129, -4583, -4583, 1129, + 2463, 1129, 73167, 73167, 73167, 51215, -4583, 3819, 3493, 73167, + 73167, 73167, 73167, 3459, -4583, 73167, 73167, 3718, 693, 1965, + 54799, 73167, 73167, 54799, 73167, 73167, 73167, 73167, 73167, 73167, + 3730, 73167, -4583, 3807, 3734, 2129, 3776, 3486, 73167, -4583, + 73167, 1129, 2876, 73167, 73167, -4583, -4583, 3425, 3685, 282, + -4583, 3688, 3690, 282, 282, 3693, 282, -4583, -4583, 1592, + -4583, 231, 73167, -4583, 3353, 1396, 1804, -4583, -4583, -4583, + -4583, -4583, -4583, 2942, -4583, -4583, 2160, 73167, -4583, -4583, + -4583, 73167, 3435, 73167, 73167, 33683, -4583, 1707, 793, 1178, + -4583, 3687, 73167, 2800, -4583, -4583, -4583, 3603, 73167, -4583, + -4583, -4583, -4583, -4583, 72, 3256, -4583, 3715, 60623, 2463, + 54799, 54799, 2463, -4583, 95021, 3444, 3009, -4583, 281, 3522, + 54799, 1466, 1616, 91087, 2817, 3473, 3642, 36858, 1010, -4583, + 3442, 3601, -4583, 3448, 3446, -4583, -4583, 73167, 3352, 53903, + 2078, 1716, 3877, 735, 1819, -4583, 61967, 3636, 3256, 3715, + -4583, -4583, -4583, 3841, 3543, -4583, 2388, 73167, 3076, 3543, + 1129, 73167, 2931, -4583, 91535, 29498, 29498, -4583, 3453, -4583, + 3461, 8497, -4583, 3524, 3454, -4583, -4583, -4583, -4583, -4583, + -4583, 3538, 3465, 73167, -4583, 3462, -4583, 3468, -4583, -4583, + -4583, -4583, -4583, -4583, 73167, -4583, 73167, -4583, 229, -4583, + 3584, -4583, 229, 73167, 73167, 73167, 73167, 3020, 306, -4583, + 3759, 54351, -4583, -4583, 2083, 73167, -4583, -4583, -4583, 3831, + 96, 3774, -4583, -4583, 523, 523, 523, 3731, 523, 523, + 523, -4583, 29498, 13029, -4583, 3470, -4583, 13029, 7950, 13029, + 3628, -4583, 2090, 29498, -4583, 622, 622, 622, 3569, 3777, + -4583, 1659, 3474, 622, 622, 622, 415, 415, 221, 221, + 221, 3770, 384, 13029, 13029, -4583, -4583, 3478, -4583, -4583, + -4583, 3075, -4583, 30428, 3635, 3887, -4583, -4583, -4583, 3514, + 3515, 3480, -4583, 29498, 30893, 3479, 95889, 3675, -4583, 1642, + 29498, 29498, 5202, -4583, 4342, 29498, 95021, 2105, 5202, 426, + 29498, 5320, 5354, 29498, 29498, 4648, 8272, 3489, 29498, 91969, + -4583, -4583, -4583, 2106, 29498, 73167, 73167, 73167, 73167, -4583, + -4583, -4583, 72271, 72719, 72271, 3488, 35507, 24923, 1364, 3500, + 73167, -4583, -4583, 3502, 36858, 3744, 3679, -4583, 36858, 3679, + 1797, 3679, 3752, 3596, 41810, -4583, -4583, 3516, -4583, 3711, + -4583, 22608, -38, 13029, 3932, 3812, 29498, 3525, 3529, 3530, + 13029, 13029, 29498, -4583, 1129, 3812, 1129, -4583, -4583, 44969, + -4583, -4583, -4583, -4583, -4583, 3726, 13029, 27638, -4583, 2388, + 1986, 73167, 785, 583, -4583, 3533, 73167, -4583, 3498, 13029, + -4583, 3597, 2117, -4583, -4583, -4583, -4583, -4583, -4583, 3611, + 62415, 3838, -4583, 29498, 2135, -4583, 3572, 3930, 141, 2147, + 2155, 1685, -4583, 2800, -4583, 1478, 3813, 359, -4583, 229, + -4583, 95021, -4583, 73167, 73167, -4583, -4583, -4583, -4583, 73167, + 2586, -4583, -4583, 73167, 73167, 73167, 73167, -4583, 54799, 73167, + -4583, 73167, -4583, 51215, 2289, 1707, 3825, 3749, -4583, 306, + -4583, 1707, 3750, 191, 73167, -4583, -4583, 2107, -4583, 95021, + 229, 229, -4583, -4583, -4583, -4583, -4583, 3552, 3954, 3632, + 73167, 73167, 73167, -4583, 73167, 54799, 73167, 73167, 2287, 2287, + 95021, 3540, -4583, 2287, 2287, 3544, -4583, 54799, 73167, 73167, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, 3625, -4583, 29498, 3952, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, 54799, 73167, 3645, -4583, 3647, -4583, + 1869, -4583, -4583, 73167, 73167, 73167, 73167, 3875, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 73167, -4583, + 73167, -4583, -4583, 1129, 1129, 95021, 229, 229, -4583, -4583, + -4583, -4583, 3816, 282, -4583, 282, 282, -4583, -4583, 282, + -4583, 3573, 391, -4583, 1685, 1571, 3862, -4583, 3874, 29498, + -4583, 1002, 3569, -4583, 3927, 4006, -4583, -4583, -4583, -4583, + 2800, 1849, 3637, 58831, 353, -4583, 3857, 187, 3782, 60623, + 3494, 1639, 3577, 3698, -4583, 2463, 2463, 3639, 73167, 4011, + -4583, -4583, -4583, -4583, -4583, -4583, 54799, 3230, -4583, 3796, + 1009, 3890, 73167, 29498, 3341, -4583, 1691, 3894, -4583, 1129, + -4583, -4583, 3705, 3009, -4583, 2388, 73167, 3794, 60623, 3076, + 2156, -4583, -4583, -4583, 3626, 4005, 2137, -4583, 3494, 3636, + 1227, 73167, -4583, 3629, 4025, -4583, -4583, 3900, 3797, 3599, + -4583, 13029, 13029, 1129, 96323, 5887, 95021, 3907, 73167, 800, + 3878, 229, -4583, 229, 229, -4583, 73167, -4583, 3020, 3020, + 3020, -4583, 3798, -4583, -4583, 3864, -4583, 229, 54351, -4583, + -4583, -4583, -4583, -4583, 523, -4583, -4583, -4583, 13029, -4583, + -4583, -4583, -4583, 8631, 33683, 3910, -4583, 3606, 95021, -4583, + 3607, 2157, 2182, 34607, 3763, -4583, -4583, -4583, 8649, 3660, + 13029, 3714, 3615, 3618, 5202, 5202, 4342, 2184, -4583, 5202, + 29498, 29498, 5202, 5202, 29498, -4583, -4583, 8751, 3802, -4583, + -4583, 8793, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 52111, + 3621, 3257, 72271, 3623, 73167, 1364, 36858, -4583, -4583, 1857, + -4583, 36858, 3882, -4583, 36858, 58831, -4583, 73167, 3627, 73167, + -4583, 84, 31358, 29498, 3663, -4583, -4583, -4583, 3518, -4583, + 3663, -4583, 3641, 73167, 2564, -4583, 851, -4583, -4583, 4010, + 37758, 3969, 29498, -4583, -4583, -4583, -4583, 54351, 3830, 54351, + 1685, 9820, 2800, 37758, 45867, 73167, 73167, 73167, 3785, 2800, + 3637, -4583, -4583, -4583, -4583, -4583, -4583, 3643, -4583, -4583, + -4583, -4583, 3713, -4583, -4583, 30, 3023, -4583, 2188, -4583, + 4064, 3958, -4583, -4583, -4583, -4583, -4583, -4583, 3807, -4583, + -4583, 42263, 54799, 73167, -4583, 3716, -4583, -4583, -4583, -4583, + -4583, 39559, 44969, -4583, 1035, 3646, 3649, 224, -4583, -4583, + -4583, 73167, 9839, 3652, 31, 3023, 73167, 73167, 3653, 3654, + 1654, 1472, 1647, 3020, 3948, -4583, -4583, -4583, -4583, 3807, + -4583, -4583, 282, -4583, -4583, -4583, -4583, 51215, -4583, 2352, + -4583, 1592, 3992, 58831, 4077, 4077, 73167, -4583, 9959, 3858, + -4583, -4583, 3937, 3637, 3889, 3936, -4583, 3661, 73167, 3827, + 3666, 73167, 3659, 3783, 1252, 1252, 73167, 73167, 73167, 2197, + 2388, 2463, 3441, 1466, 3990, 60623, 4034, 3352, 183, -4583, + -4583, 1691, -4583, 1530, 4009, 3717, -4583, 73167, 4109, 3076, + 3256, 73167, 3677, -4583, -4583, 61967, 3876, 2289, 96757, 3464, + 3636, 2137, 3814, -4583, 3815, -4583, 1350, -4583, 2388, 73167, + 73167, 37758, -4583, 95455, -4583, 2199, -4583, -4583, -4583, 3753, + 3146, 3789, 3791, 3686, 73167, 129, -4583, -4583, -4583, -4583, + -4583, 73167, -4583, 448, -4583, -4583, 5436, 33683, 95021, 2201, + 29498, -4583, 29498, -4583, 4102, -4583, -4583, -4583, 766, -4583, + -4583, -4583, 5202, 5202, 5202, -4583, 4103, 3518, -4583, -4583, + 2208, 4122, 32753, 4084, -4583, 73167, 2209, -4583, 29498, 3692, + -4583, -4583, 36858, 1857, 3696, 2210, 73167, 2214, 95021, 3701, + 3699, 45, 3704, 23074, 3689, -4583, -4583, -4583, -4583, -4583, + 13029, 13029, 73167, -4583, 3706, -4583, -4583, -4583, 3748, 73167, + 2215, -4583, 745, 13029, 1260, 853, 448, 3930, 3637, -4583, + 3708, -4583, -4583, -4583, 365, 365, 73167, 3637, -4583, -4583, + 73167, 3804, -4583, -4583, 51215, 3987, -4583, 3761, -4583, 532, + 3023, 73167, 95021, -4583, 74, 4019, -4583, 95021, 95021, -4583, + -4583, -4583, 29498, 3805, -4583, -4583, -4583, 809, 407, -4583, + -4583, 73167, 73167, 73167, 73167, 73167, 229, -4583, 2216, -4583, + 38658, -4583, -4583, 2838, 1129, 2838, 1679, -4583, -4583, 2838, + -4583, 2838, -4583, 3573, 1129, 4077, 1004, -4583, -4583, -4583, + 1538, 3929, 3719, -4583, 1026, 3916, 3808, 3721, -4583, 58831, + 4185, 3256, 3715, 73167, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, 2223, 3352, 4040, 3009, 3629, -4583, 73167, + 3758, -4583, 36858, -4583, -4583, -4583, 2838, -4583, 1644, 3727, + 4049, 3352, 2388, -4583, 3636, 3256, 3715, -4583, -4583, -4583, + 3728, -4583, 3543, 2137, 3464, -4583, -4583, 4131, 3928, 4134, + 3076, -4583, 2931, 2230, -4583, 8497, 96323, 95021, 4075, 3772, + 3773, -4583, -4583, 3790, 73167, -4583, -4583, 3352, -4583, 5436, + 2238, -4583, 2252, 2264, 3892, 3795, -4583, 29498, 1623, 3345, + 52111, 3739, -4583, 33683, 2268, -4583, 3308, 73167, 2272, -4583, + 13029, 73167, -4583, -4583, 29498, -4583, 2307, -4583, -4583, 29498, + 3740, 29498, -4583, 31358, 3737, -4583, 4175, -4583, 2388, -4583, + 3146, 37758, -4583, 3865, -4583, 4050, -4583, 73167, 3787, 44969, + 3099, 3099, 1849, -4583, 1685, -4583, 73167, -4583, 3719, 29498, + -4583, 3837, -4583, -4583, 2309, 759, 3908, 3908, 2321, 2323, + 10331, 73167, -4583, -4583, -4583, -4583, 2328, -4583, -4583, -4583, + -4583, 2335, 3021, 1647, 3021, -4583, 3020, -4583, -4583, 51215, + -4583, 52559, -4583, -4583, -4583, 1129, -4583, 1129, 3963, 73167, + 47211, 1129, 1129, -4583, -4583, -4583, -4583, -4583, 4090, 4033, + -4583, 1716, -4583, -4583, -4583, -4583, 216, -4583, 3961, 3962, + 73167, -4583, 3757, -4583, 2339, 3494, 3888, 3352, -4583, -4583, + 73167, 4201, 4202, -4583, 1141, 73167, 3341, 73167, -4583, -4583, + -4583, 29498, 3938, -4583, 3629, 2137, 3494, 3636, 2289, 38208, + -4583, 3464, 3543, 3972, -4583, 3975, -4583, 3778, 3009, 5887, + -4583, -4583, 972, 4074, 4085, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, 3075, 31823, 31823, 3784, -4583, -4583, 73167, + 3569, 3779, 32753, 51215, 2345, -4583, 93719, -4583, 2355, 2360, + -4583, 2367, 31358, 2368, -4583, 73167, 3786, -4583, -4583, -4583, + 40910, 54351, 365, 3793, -4583, 3800, -4583, -4583, 3889, 1685, + 3023, -4583, 13029, 73167, 58831, 4204, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, 3023, 3866, 809, -4583, 407, 73167, -4583, + -4583, 2375, -4583, -4583, -4583, 73167, 3442, -4583, 3442, -4583, + -4583, 3925, -4583, 1186, 916, 916, 4143, -4583, 3852, -4583, + -4583, 3801, -4583, 4267, 3926, 73167, -4583, -4583, 1035, 2388, + 60623, 3352, -4583, -4583, 10456, 58831, -4583, 3464, 3636, 2137, + 29498, 2376, -4583, 3930, 141, 3543, -4583, -4583, -4583, 37758, + 3543, -4583, -4583, -4583, 2572, 58831, 58831, 33218, 3941, 194, + 11572, -4583, -4583, -4583, -4583, 2380, 34607, -4583, -4583, -4583, + 73167, 4002, 1020, -4583, 3956, -4583, 2381, -4583, -4583, -4583, + 1468, 448, 3099, 29498, 1685, -4583, 3916, -4583, 3023, -4583, + 73167, -4583, 3817, -4583, -4583, -4583, -4583, 52559, 3442, 3717, + -4583, -4583, 4258, -4583, 1070, -4583, -4583, -4583, -4583, 73167, + 3352, 3540, 3629, -4583, -4583, 3818, 3543, 2137, 3464, 10635, + -4583, 38208, 73167, 73167, -4583, 2382, 3146, -4583, 2330, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, 3810, 3811, 4254, -4583, + -4583, -4583, -4583, -4583, -4583, 3257, -4583, -4583, 33683, 33683, + 4031, -4583, 1020, -4583, 3821, -4583, -4583, -4583, -4583, -4583, + 10862, -4583, -4583, -4583, 809, -4583, 4145, -4583, -4583, -4583, + 3352, -4583, -4583, 50767, -4583, 3464, 3543, 3930, -4583, -4583, + -4583, 3009, -4583, 2174, -4583, -4583, 2190, 2161, 3902, 4130, + 32288, 4220, 3569, 3569, -4583, -4583, 29498, -4583, 1685, 2386, + 3995, -4583, -4583, 2391, -4583, -4583, -4583, -4583, 3543, -4583, + 73167, 3543, -4583, 2330, 3940, 3942, -4583, 73167, 10981, -4583, + 58831, -4583, 50767, -4583, -4583, 3146, -4583, 3868, 3869, 2392, + -4583, 3842, -4583, -4583, 4140, 4146, -4583, 50767, 58831, 58831, + 2396, -4583, -4583, -4583 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = { - -1, 52, 53, 54, 55, 1440, 2307, 2194, 3028, 3029, - 56, 57, 1436, 58, 59, 60, 61, 62, 63, 64, - 1368, 65, 66, 960, 1561, 2318, 67, 2045, 738, 739, - 740, 1867, 1868, 2257, 1869, 1857, 1256, 1694, 1389, 712, - 713, 1350, 1390, 69, 70, 1250, 1848, 71, 72, 73, - 1418, 1419, 1362, 1602, 4029, 4681, 2863, 2171, 3068, 2864, - 2865, 74, 1487, 1488, 75, 76, 2995, 2991, 3563, 4340, - 4341, 4556, 556, 2286, 4343, 4344, 4542, 4543, 4705, 4815, - 4816, 2319, 1556, 3062, 3646, 3019, 4099, 3020, 4100, 3021, - 4101, 3006, 3594, 3595, 3596, 3022, 4072, 4581, 3023, 2064, - 4722, 2354, 1716, 1714, 4568, 3906, 3907, 4793, 4727, 4728, - 4729, 4895, 4074, 3066, 3652, 4108, 4356, 2753, 644, 1582, - 3171, 645, 2357, 588, 646, 2320, 82, 2348, 2349, 1459, - 2202, 3570, 3151, 83, 980, 3412, 4412, 4623, 4624, 84, - 221, 85, 1565, 86, 87, 2303, 3013, 88, 2081, 2770, - 89, 90, 2798, 2799, 2800, 91, 92, 3437, 4283, 1420, - 2852, 2853, 2854, 2855, 3463, 93, 1563, 1464, 2327, 94, - 95, 96, 97, 98, 2470, 2471, 99, 2245, 100, 101, - 102, 103, 104, 3499, 3995, 3623, 2892, 3035, 3621, 105, - 2321, 1573, 2339, 2340, 4088, 4375, 4592, 4377, 4944, 4945, - 4349, 3390, 3920, 107, 108, 4067, 4068, 4734, 109, 2079, - 110, 111, 112, 1540, 2295, 2296, 3571, 1534, 2289, 2290, - 3633, 3634, 113, 2948, 114, 3976, 3977, 589, 4739, 4688, - 4806, 115, 116, 3980, 3981, 117, 118, 119, 120, 121, - 638, 1071, 1072, 1334, 1019, 122, 1965, 123, 926, 2975, - 124, 1144, 2512, 4151, 125, 669, 1085, 1086, 2322, 127, - 678, 2490, 680, 1729, 3153, 3154, 3719, 2456, 825, 128, - 129, 2467, 2493, 130, 1355, 2055, 2056, 3901, 2323, 590, - 1588, 2361, 2748, 4487, 4488, 4261, 4503, 2678, 3343, 132, - 591, 1394, 2127, 2364, 3076, 2022, 2023, 2024, 3669, 2025, - 3078, 2026, 1328, 2027, 3084, 3085, 3086, 3665, 3672, 3675, - 4401, 4402, 133, 1392, 2125, 134, 135, 136, 1431, 856, - 137, 603, 604, 138, 4561, 139, 993, 140, 4410, 141, - 142, 703, 704, 1128, 1129, 143, 144, 2141, 3444, 145, - 146, 147, 3492, 3493, 148, 149, 4909, 4952, 4953, 4954, - 3680, 4854, 150, 4911, 1116, 152, 153, 154, 190, 889, - 890, 891, 2324, 4394, 156, 157, 1351, 1352, 1353, 1354, - 2050, 158, 159, 160, 161, 162, 163, 1544, 164, 165, - 4535, 166, 167, 1506, 168, 1286, 1287, 169, 170, 550, - 756, 1290, 1298, 171, 648, 1079, 1080, 1081, 1696, 172, - 1124, 928, 649, 1074, 174, 650, 2010, 2699, 3353, 3354, - 3357, 4246, 3882, 651, 2696, 177, 1736, 2476, 2479, 2692, - 652, 2704, 2705, 2706, 2707, 2708, 3360, 653, 671, 983, - 2370, 654, 1217, 182, 183, 184, 766, 760, 761, 186, - 1841, 2639, 687, 1305, 725, 726, 774, 3327, 1978, 1979, - 2001, 2002, 1314, 1315, 1991, 1993, 2680, 1994, 2688, 1984, - 3859, 4472, 4473, 4474, 4475, 4476, 4477, 4231, 1997, 1998, - 1317, 1318, 1319, 2006, 187, 2643, 3307, 3308, 3309, 3836, - 3837, 3851, 3847, 4215, 4458, 3310, 1114, 1325, 4223, 4926, - 3311, 4449, 4450, 4640, 3854, 3318, 3351, 3052, 3053, 3054, - 2028, 1631, 1021, 1218, 1022, 1645, 1219, 1615, 1024, 1220, - 1221, 1222, 1027, 1223, 1224, 1225, 1030, 1607, 1634, 1226, - 1227, 1625, 1642, 1643, 1685, 2550, 1229, 1230, 1231, 3313, - 1232, 3792, 4182, 4171, 2571, 2572, 1864, 3788, 3253, 1836, - 2629, 4481, 4657, 4658, 3292, 3817, 4198, 4447, 4773, 4861, - 4862, 1233, 1234, 1235, 2626, 1832, 858, 1236, 3573, 1834, - 2565, 2651, 2652, 1739, 1759, 2518, 2534, 2535, 2545, 3212, - 2553, 2558, 3240, 3241, 2566, 2595, 1237, 2520, 2521, 3196, - 1761, 1238, 1279, 1876, 1280, 1756, 2590, 1293, 1294, 758, - 1246, 1239, 1240, 1730, 749, 4454, 545, 815, 2880, 1956, - 893, 684, 1241, 1242, 1243, 1244, 1424, 830, 1041, 1042, - 546, 809, 832, 2856, 547, 548, 811, 1961 + -4583, -4583, -4583, 3523, -4583, -862, 333, 2757, -689, -4583, + -4583, -4583, 1267, -4583, -4583, -4583, -4583, 3466, -4583, 1892, + -2354, -4583, -4583, 134, -383, -1279, 112, 3014, 1548, -4583, + -1110, -4583, -4583, -574, 90, -4583, -351, 250, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -761, 1996, 2067, 1386, + 4454, -2735, -4583, -4583, -1352, -3085, -4583, 717, -4583, 744, + -4054, -4476, -4583, -909, -738, -4583, -4583, 1985, -4583, -4583, + -4583, 1205, 629, -421, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -596, -4583, -4583, -833, 151, 35, -2367, -3620, -4583, + -4583, 587, -239, -1406, -4583, -3474, -4583, 127, -2520, -4583, + -4583, -4583, -206, -1361, 1486, -4583, -672, -1126, 1789, -702, + -4583, -86, -4583, -808, -610, -607, -725, -3654, -4127, -4583, + -4583, -4583, -837, -4144, -4389, -3684, -4157, 1497, -4583, 153, + -3024, -3112, 156, 559, -4583, 158, 159, -4583, 584, -532, + -890, -1488, -4583, -721, -4583, -4583, -4583, -2839, -4583, -4583, + -4583, -4583, 53, -4583, -4583, -4583, -4583, 628, -4583, -4583, + -4583, -4583, -4583, -4583, -2619, 1962, 1963, -4583, -3034, -4583, + -860, -4583, 772, -2876, 1411, -4583, -4583, 1197, 3482, 612, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -1588, -4583, -4583, + -4583, -4583, 143, -175, -4583, -4583, -4583, -4583, -4583, -4583, + 160, -4583, 1987, 1198, -4583, -4583, -173, -4583, -4583, -4583, + -4583, -4583, -4583, -778, -921, -900, -4583, -2881, -4583, -4583, + -4583, -143, -4583, -4583, -4583, -4583, -4583, -4583, -770, -4583, + 1263, -3049, -4583, -4583, 1265, -4583, -4583, -4583, -4583, -4583, + -699, -84, 2789, -4583, -314, -504, -4583, -4583, -4583, -83, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -1047, -57, + -805, -537, -4583, -4583, -4583, -4583, -4583, -2079, -4583, -4583, + -4583, -4583, -3570, -4583, 4378, 2011, -218, 163, -4583, -22, + 47, 3259, -1124, -2556, 555, -274, -4583, -4583, -4583, -2484, + -4583, -4583, -4583, -4583, -3406, 167, -4583, 3250, -4583, -3681, + -4396, -3432, -3941, -4291, -4450, -3396, -4583, -4583, -4583, -4583, + -783, -186, -4583, -4583, -1387, 2310, -1867, -4583, -2004, 610, + 1585, 3452, -2642, -129, 2750, -3688, -668, -3148, -4583, -4583, + -2213, -407, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -578, 2687, -199, -4583, -4583, 3803, -4583, -4196, -4583, 3769, + -4583, -4583, -4583, -4583, 2604, 2607, -4583, 2610, -4583, -4583, + -1396, 1348, -4583, -4583, -4583, -4583, 799, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, 1251, 786, -4583, -4583, -4583, -4583, + -4583, -691, -849, -4583, -4583, 169, -4583, -4583, -4583, -4583, + 2270, -864, -693, 3667, 170, -4582, -4583, -4583, -1073, -4583, + 3045, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -2578, -4583, -4583, -4181, -4583, -4583, -4583, -4583, -4583, 2394, + 2397, 51, -50, -4583, -4583, -937, -4583, -544, -4583, 2677, + -4583, -4583, -4583, -4583, -1693, 171, 660, -4583, 3, -4583, + -4583, 29, -4583, 425, -4583, -4583, -3300, 6, -4583, -4583, + -4583, -4583, -4275, -4583, 7, -593, 950, -2703, -4583, 172, + 15, -4583, -4583, 59, 322, -36, -42, -19, 1, 124, + 3132, -4583, 3163, -4583, 27, 1898, -4583, -4583, -793, -163, + -4583, 1668, -617, 2369, 3103, 3149, -4583, 1664, -4583, -4583, + 1672, -4583, 996, -571, -411, -4583, -4583, -4583, -4583, 458, + -603, 2383, -4583, 3154, -4583, -4583, -4583, -1792, -2737, -3323, + 1028, -3318, -3245, 502, 488, -1277, -184, 49, -729, 3155, + -4583, -4583, 1034, -379, -4583, -4583, -377, -2720, 977, -4583, + -4213, -2233, 1039, -810, -662, -4583, -743, -4583, -541, 1022, + 2790, -1024, -4583, -4583, -985, 13038, -4583, -4583, -4583, 15135, + 15285, -4583, -4583, 15708, 16135, -4583, -856, 16558, 6393, -997, + -1734, -329, 13711, -1723, -1165, -2555, -4583, -3438, -2470, -4583, + -4583, -4583, -137, 1097, 370, -4583, -4237, -4583, -4583, 77, + -4583, -546, -4583, -545, -4583, -4583, -4583, -525, -4174, 2581, + -4583, -4583, -4583, -164, -4583, 17359, -2649, -4583, -730, -2650, + -2663, -3319, -1759, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -1469, -3171, -515, 1773, -4583, -4583, 1866, -4583, -4583, -4583, + -1246, 1723, -734, -2541, 1780, -4583, -731, 2587, -739, 7322, + -635, 6280, -472, -2173, -1210, -1514, -4583, 1580, -4583, 13, + -16, -8, -145, 140, -543, 2720, 13145, -587, -1298, 9508, + 12811, 12541, -3032 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -2568 static const yytype_int16 yytable[] = { - 605, 180, 181, 175, 185, 176, 178, 717, 765, 685, - 1648, 857, 955, 986, 672, 1713, 1693, 1251, 1320, 1326, - 672, 1423, 181, 544, 185, 1658, 1105, 1106, 1107, 673, - 595, 1247, 1111, 1492, 1652, 673, 2457, 2063, 1329, 775, - 1972, 831, 2136, 751, 1621, 1957, 1554, 1463, 864, 1962, - 1504, 3328, 1644, 764, 1082, 3018, 2649, 1575, 2128, 881, - 587, 1048, 1611, 1612, 1535, 1281, 2259, 3438, 2148, 1749, - 748, 984, 1620, 1627, 1265, 863, 3176, 3603, 940, 3629, - 2137, 3038, 3418, 679, 3674, 3458, 880, 3460, 2344, 637, - 2214, 2517, 1542, 2945, 3644, 3874, 1547, 718, 1962, 2165, - 1957, 1551, 3909, 647, 1975, 2715, 2717, 2670, 3657, 3908, - 1558, 3157, 68, 1458, 3321, 3359, 1457, 3581, 3946, 1599, - 1577, 3804, 1471, 1076, 2882, 4112, 2983, 995, 3319, 3320, - 769, 1497, 3903, 2224, 2987, 2654, 2989, 807, 4104, 4121, - 4115, 4065, 986, 3575, 777, 4105, 826, 3833, 2482, 2362, - 3575, 1065, 2580, 778, 711, 3261, 77, 78, 2228, 2229, - 79, 745, 80, 3850, 81, 2121, 106, 763, 126, 131, - 2036, 1053, 151, 155, 173, 179, 4387, 737, 3365, 4262, - 1391, 1493, 1068, 4463, 3641, 4465, 3887, 776, 4511, 3848, - 2427, 1313, 1316, 655, 3772, 1686, 1608, 1609, 655, 4611, - 1258, 1804, 3218, 4504, 1963, -2178, -2083, 1619, -2213, 554, - -2235, 2235, 1632, -2264, -2083, -2083, 4260, 1574, 1600, 1365, - 4537, 4538, 1600, 2472, 2588, 596, 4530, 601, 1611, 1612, - 1810, 2149, 697, 3009, 3663, 3312, 1600, 2714, 4741, 4687, - 874, 2240, -1670, -1698, 2492, 601, -2084, 1620, -2110, -1941, - 3031, 754, -2181, 1627, -2084, -2084, -1941, 655, 2623, 3597, - 1812, 655, 1839, 1695, 601, 2624, 2588, 2608, 601, -1960, - 1734, 2967, 3215, 3216, 1087, -1683, -1960, 3235, 1091, -1710, - 1600, 601, 601, 601, 1531, 812, 814, 3364, 3312, 818, - -2419, 820, 1140, -2055, 601, 2793, 2449, -2054, -2419, -2419, - -1698, 2993, 3174, 4269, 1538, 3648, 2297, 1421, 3314, 1600, - 2642, 878, 655, 698, 3265, 3266, 601, -1703, 655, 4723, - 2069, 2071, 2139, 4562, 1366, 1476, 2352, 4244, 4852, -1703, - 1102, 2222, 4672, 4673, 3419, 4664, 3194, 3010, 1797, 1501, - -1713, 2869, 4939, 2473, 4718, -1713, 2630, 2065, 1593, 1255, - 3123, 1521, 3125, 1608, 1609, 885, 1282, 3725, 2341, 4653, - 4918, 3314, 2310, 1804, 661, -835, 1477, 661, 2739, 661, - 2794, 601, 661, 2890, -1703, 2066, 4061, 1268, 857, 1619, - 772, 2887, 3875, 3, 4, 2751, 662, 4408, 188, 662, - 1804, 662, 1810, 2859, 662, 4533, 4844, 2609, 549, -2234, - 1594, 4155, 2610, 4157, 2779, 4771, 670, 661, 3218, 1438, - 950, 661, 670, 2316, 551, 950, 4534, 2139, 2139, 1810, - 3616, 2116, 1812, 4649, 4683, 1504, 950, 857, 682, 662, - 1439, 189, 4772, 662, 2672, 1964, 4724, 949, 2611, 2752, - 2891, 3876, 958, 1269, 2860, 1858, 2740, 1798, 886, 1812, - 1870, 1870, 2139, 968, 2047, 2139, 1136, 699, 2072, 2139, - 4602, 2452, 4971, 4265, 3512, 2458, 2764, 2460, -134, 2450, - 2463, 2311, 1770, -134, 2895, 1844, 2631, 3218, -399, 1601, - 986, 1333, 597, 1601, 4940, 4719, 4665, 2267, 823, 2317, - 887, 1103, 986, 1595, 700, 701, 4853, 1601, 2271, 3726, - 2164, 2451, 1502, 4827, 935, 4725, 3011, 2888, 3617, 2117, - 2217, 1283, 2067, 1284, 2974, 2150, 4062, 945, 1036, 2994, - 1840, 4245, 2342, 1478, 2353, 2514, 2151, 2474, 2152, 3502, - 2797, 2861, 2870, 3598, 598, 4717, 927, 1650, 1681, 1430, - 2073, 1601, 1514, 888, 1596, 755, 2475, 1735, 2589, 3419, - 1996, 2896, 4942, 990, 986, 2107, 932, 181, 929, 185, - 930, 931, 4150, 1039, 1697, 2115, 2612, 1962, 3664, 599, - 1601, 600, 3325, -1941, 602, 2236, 2586, 2241, 1735, 3561, - 3562, 3961, 2625, 702, 2153, 2968, 985, 605, 3618, 3012, - 3281, 1110, 4812, -1960, 4270, 1367, 1659, 4388, 1277, 1539, - 765, 1110, 1278, 2897, 1633, 4409, 2210, 1083, 2212, 3361, - 4791, 4353, 1753, 1962, 3575, 555, 2070, -2234, 1479, 2105, - 4875, 1628, 2519, 925, 2445, 1683, 2291, 2223, 2200, 1597, - 3913, 2203, 2204, 1321, 667, 668, 1539, 3105, 2262, 1650, - 1831, 3233, 2219, 2679, 181, 764, 185, 4187, 2299, 672, - 4905, 672, 4080, 672, 938, -2083, 1731, 2898, 941, 672, - 1098, 1099, -2178, 2258, 1084, -2213, 1089, -2235, 1093, 4404, - -2264, 986, 1741, 2431, 1097, 2181, 966, 1122, 2343, 986, - 986, 4212, 3850, -2234, 2862, 4216, 1100, 1750, 3383, 1075, - 4111, 1610, -1698, 667, 668, -2084, -2234, 667, 668, 2268, - 4092, 4161, 1503, 1141, 2399, -2110, 4880, 1629, 4206, -2181, - 2453, 1248, 3718, 1113, 1257, 985, 1259, 857, 4885, 2464, - 4249, 1606, 2802, 2877, 1614, 777, 1078, 3619, -1710, 1852, - 1800, 1842, 2377, 1606, 778, 4865, 2192, 2007, 2008, -2419, - 1277, 2195, -2055, 2657, 1278, 1666, -2054, 2124, 667, 1422, - 2765, 2899, 824, 1676, 667, 668, 1622, 3935, 2777, 1684, - 3513, 1622, 4342, 1285, 3965, 4669, -1703, 2803, 776, 180, - 181, 175, 185, 176, 178, 1623, 2821, 1113, -1703, 4507, - 1623, 946, 1037, 1356, 1854, 1421, 601, 4828, 4933, 1624, - 655, 3676, 3620, 3867, 1626, 2454, 3367, 3414, 3368, 1828, - 1829, 1830, 1831, 3625, 1957, 4497, 1515, 1324, 4891, 711, - 1119, 1121, 4506, 2380, 2381, 4421, 2719, 2807, 4845, 4422, - 4423, 4051, 4424, 3547, 1826, 1827, 1828, 1829, 1830, 1831, - 3551, 3552, 672, 4575, 3555, 3641, 3895, 3161, 1288, 3163, - 1267, 3560, 1509, 2878, 3230, 3231, 3232, 3233, 2139, 1118, - 1371, 4050, 2943, 1516, 601, 4601, 4096, 2140, 2649, 2649, - 2649, 2527, 2900, 601, 686, 1254, 1566, 4566, 2352, 1262, - 2901, 3677, 2188, 2902, 2729, 4012, 1295, 2513, 1668, 2516, - 68, 4576, 3609, 1438, 2066, 2523, 4096, 4358, 1357, 4577, - 1855, 2537, 2538, 2539, 1481, 4510, 3312, 4621, 3312, 2057, - 1482, 2555, 2557, 2121, 1439, 2808, 2567, 1567, 1117, -134, - -134, 3228, 3229, 3230, 3231, 3232, 3233, 4578, 4904, 1669, - 3553, 3554, 1589, 2335, 77, 78, 4451, 1349, 79, 3112, - 80, 2866, 81, 3885, 106, 2355, 126, 131, 1428, 1429, - 151, 155, 173, 179, 3752, 3753, 3754, 3755, 1635, -2052, - 3760, 3761, 3762, 3763, 3764, 3765, 3766, 3767, 3768, 3769, - 2697, 4389, 2528, 3909, 1338, 3949, 2895, 4127, 1443, 3314, - 2057, 3314, 2071, 2059, 4390, 772, 3909, 3312, 770, 2466, - 1009, 2214, 2275, 3908, 4633, 2737, 3024, 2058, 696, 711, - 1119, 2060, 4579, 1349, 3362, 4920, 4359, 4892, 779, 1483, - 1365, 569, 1856, 2336, 1444, 2720, 3808, 3809, 2721, 3331, - 3678, 4670, 4429, 1650, 2461, 2462, 2551, 1636, 1650, 1529, - 4675, 3947, 2778, 2276, 2569, 1798, 885, 1639, 3077, 1466, - 2455, 2529, 3415, 4013, 697, 1358, 3610, 3482, 3059, 771, - 3162, 1339, 3164, 2896, 2059, 2944, 1552, 1553, 2722, 1621, - 3314, 695, 1592, 985, 4097, 4455, -1670, 4622, 1268, 571, - 4459, 4452, 2060, 4461, 1568, 985, 4372, 1586, 3007, 4893, - 4749, 1359, 4735, 3583, 672, 3679, 1670, 1637, 780, 3572, - 1638, 3337, 3406, 4756, 4841, 181, 3572, 185, 1465, 4746, - 4754, 2530, 1340, 4894, 2531, 2897, 4747, 2412, 3978, 1737, - 1082, 1360, 1699, 4314, 1701, 1366, 1703, 772, 1705, 3950, - 1707, 1708, 1709, 746, 3973, 698, 3909, 1711, 3586, 886, - 2375, 3674, 1635, 3407, 1269, 976, 2061, 985, 4921, 2747, - 4379, -1670, 4383, 2379, 3431, 4391, 3575, 1136, 1654, 1656, - 641, 1277, 3483, 2690, 3025, 1278, 1484, 4255, 3897, 2898, - 1088, 1090, 1092, 1758, 4605, 1094, 1095, 1096, 3165, 1569, - 14, 887, 4606, 3670, 1361, 1101, 4580, 3860, 2051, 2437, - 2186, 1671, 1767, 765, 3510, 1639, 4634, 1411, 2052, 1982, - 2277, 4284, 1485, -999, 40, 1341, 4165, 1460, 4166, 2532, - 3717, 1636, 2425, 19, 2337, 2053, 2404, 2061, 3148, 3979, - 722, 3432, 1799, 1783, 1862, 4529, 3439, 2338, 579, 2417, - 580, 1801, 1486, 2675, 888, 3974, 2543, 44, 1795, 3951, - 3, 4, 3952, 1461, 2426, 1843, 667, 1422, 2062, 3718, - 40, 2793, 3166, 773, 1555, 2046, 2187, 1020, 857, 4846, - 2691, 3511, 4682, 2899, 985, 1863, 4667, 1860, 1861, 2935, - 1968, 1637, 985, 985, 1638, 4351, 672, 48, 1020, 699, - 3590, 672, 672, 44, 1976, 1977, 885, 1981, 723, 1309, - 49, 1983, 4628, 778, 778, 2278, 778, 757, 641, 1640, - 3408, 4748, 781, 1303, 3026, 2936, 2929, 2373, -1670, 3484, - 977, 50, 2930, 2533, 2689, 2676, 700, 701, 14, 2062, - 3591, 4248, 4645, 48, 4851, 2698, 2794, 776, 776, 552, - 776, 4058, 3975, 4903, 3592, 2937, 49, 2164, 4906, 4607, - 4167, 3898, 2938, 1650, 1462, 3485, -622, 3027, 3867, 2246, - 1346, 19, 1347, 2054, 4235, 3251, 2403, 50, 1311, 4228, - 2407, 3258, 1309, 1411, 978, 1985, 2413, 2414, 1324, 1639, - 979, 51, 767, 3899, 2900, 3486, 4451, 3317, 32, 886, - 1650, 719, 2901, 4685, 724, 2902, 672, 4690, 4691, 2430, - -1484, 4147, 4949, 3120, 3900, 3409, 672, 4362, 1312, 1304, - 2819, 3909, -1484, 1986, 2911, 40, 1435, -1484, 4788, 3126, - 3963, 2931, 2914, 3440, 2916, 1846, 3109, 3121, 188, 3361, - 2315, 887, 3593, 4041, 2328, 4515, 4803, 1109, 2793, 4044, - 4045, 1311, 4047, 4536, 4596, 1099, 2246, 1570, 44, 3441, - 4363, 3043, 3044, 3045, 3046, 768, 4795, 4796, 3756, 1539, - 3757, -1484, 3312, 3051, 4975, 4589, 3312, 1571, 3575, 672, - 2100, 189, 672, 672, 2910, 2075, 2218, 2909, 1330, 569, - 188, -1484, 4059, 1640, 888, 2076, 3110, 3964, 48, 2468, - 1847, 986, 2483, 857, 3714, -1670, 2797, 2751, 3335, 2922, - 4804, 49, 1641, 1985, -1670, 2205, 1610, -1670, 1333, 3430, - -1670, 2205, 1988, 2794, 1331, 3378, -156, 3916, 1110, 3468, - 2405, -1484, 50, 189, 2221, 4091, 32, 2962, 3095, -1484, - 3892, 3093, 3469, 2159, 1264, 3314, 51, 571, 4266, 3314, - 672, 1986, 661, 2795, 1332, -2074, -528, 4060, 2246, -156, - 4533, 3386, 2837, 40, 2156, 1803, 3738, 1512, 1804, 2156, - 4720, 2783, 1335, 562, 662, 3841, 2166, 1989, 2932, 2649, - 2469, 4534, 2214, 1650, 2372, -156, 2325, 1527, 1349, 2796, - 3572, 3916, 3758, 1349, 1639, 2157, 44, 1810, 2734, 2672, - 2157, 1537, 3759, -2420, 3917, 3842, 1987, 3909, 1336, 2230, - 2231, 2232, 2233, 4267, 2933, 2144, 1698, 2145, 2838, 1700, - 4218, 1702, 857, 1704, 3514, 1706, 782, 1812, 1572, 1710, - 3844, 2030, 4564, 2402, 2839, 2956, 48, 2903, 1337, 2077, - 642, 1482, 1617, 1618, 2934, 2206, 40, 2378, 2207, 49, - 1988, 2206, 2269, 2270, 2207, 569, 1804, 2386, 2273, 2387, - 3918, 2282, 3919, 4740, 1438, -1484, 2392, 2031, 3917, 4930, - 50, 2294, 1446, 2146, 2398, 2078, -993, 2211, 4131, 44, - 4132, 3150, 4753, 2797, 643, 1439, 4737, 817, 1343, 3707, - 2840, 2903, 3267, 2665, 819, 3494, 579, 2032, 580, 2330, - 2331, 2332, 2333, 1472, 3389, 1989, 3270, 826, 3271, 4514, - 947, 3217, 948, 571, 3479, 1812, 2274, 2816, 2167, 48, - 1447, 35, 585, 3245, 3918, 1277, 3919, 4764, 1299, 1278, - 181, 3272, 185, -2420, 4590, 3846, 4620, 839, -2420, 1473, - 1483, 2254, 1622, 1474, 4031, 2168, 2893, 1491, 969, 3071, - 3480, 4540, 876, 2255, 2439, 3268, 2440, 3039, 2441, 2489, - 2442, 1623, 2443, 569, 4032, 4591, 2444, 51, 2169, 1475, - 2170, 3366, 2252, 4420, -2420, 1624, 1622, 2722, 2256, 970, - 3481, 932, 181, 929, 185, 930, 931, 1738, 3649, 4679, - 4676, 3653, 2536, 3294, 2416, 1623, 3674, 2419, 2525, 2526, - 3405, 2477, 1448, 2164, 1622, 2540, 2541, 2424, 2253, 1626, - 2297, 971, 1078, 1804, 840, 2139, 2432, 690, 986, 1819, - 3747, 571, 2399, 1623, 2147, 2551, 2551, 3840, 3583, 884, - 2551, 4710, 4850, 2579, 3584, 3273, 4711, 1678, 937, 2939, - 3274, 3312, 1810, 691, 4616, 3585, 3312, 692, 2488, 3773, - 1449, 3312, 934, 1450, 3312, 2166, 2594, 972, 1679, 2596, - 4361, 2597, 579, 2213, 580, 2941, 2511, 2551, 2551, 2940, - 870, 4345, 1812, 3586, 582, 3587, 3089, 4493, 3312, 4495, - 986, 1870, 4712, 2658, 2598, 584, 4382, 1343, 1555, 4370, - 1260, 3312, 1452, 1277, 4014, 2942, 871, 1278, 3841, 939, - -1484, 4346, -2420, -422, 4533, 1309, 4273, 4274, 3323, 3324, - 1310, 1850, -1484, 2726, 3314, 4015, -2074, -1484, 2730, 3314, - 35, -1520, 2733, 942, 3314, 4534, -1520, 3314, 3842, 4426, - 3713, 2313, 3326, 4335, 1454, 4336, 4337, 857, 3138, 4338, - 3397, 2686, 2687, 3843, 2174, 2591, 1491, 4763, 2757, 655, - 2345, 3314, 3588, 3844, 1688, 3371, 2225, 1689, 4798, -1483, - 1610, -1484, 2037, 969, 3314, 1277, 956, -2055, 3275, 1278, - 579, -1483, 580, 1456, 1311, 3894, -1483, -527, 3276, 3845, - 1610, -1484, 2037, 2599, 3244, 3840, 3246, 3247, 2600, 3914, - -1520, 2809, 2166, 2601, 970, -2420, 1555, 2167, 4456, 3630, - 964, 4941, 1826, 1827, 1828, 1829, 1830, 1831, 3639, 950, - 3589, 3048, -422, 973, 1312, 3590, 3049, 672, 3420, 1743, - -1483, -1484, 1744, 3190, 2168, 1438, 3627, 4966, 2434, -1484, - -1520, 3312, 2681, 3191, 3582, 3329, 2815, 974, 3192, 3049, - -1483, 2857, 4707, 3443, 4709, 975, 1439, 2169, 4713, 2170, - 4714, 2700, 181, 988, 770, 3591, 3841, 1966, 3846, 1969, - 1967, 3784, 1970, 2741, 2433, 2744, -1521, 2434, 2771, 3592, - 2514, -1521, 972, 950, 985, 826, 4877, 2905, 2446, 992, - -1483, 2447, 2164, 672, 2448, 3279, 3842, 2447, -1483, 3423, - 1288, 1035, 2166, 3312, 2185, 2917, 2166, 1043, 2738, 4787, - 2894, 3843, 2480, 1044, 3314, 2481, 2927, 3098, 2166, 2649, - 986, 3844, 3572, 2671, 2649, 771, 2672, 222, 3944, 2952, - 2649, 2602, 553, 2813, 1049, 3936, 2814, 950, 1060, 3119, - 639, 2603, 1069, 2884, 2167, -1521, 2885, 3845, 4457, 951, - 1803, 952, 1259, 1804, 3128, 3728, 1073, 3130, 3131, 720, - -1544, -1544, 3134, 3135, 2959, -1484, 1610, 3593, 1333, 3139, - 1104, 2168, 2166, 3474, 3948, 3953, 3314, 2998, 2801, 1757, - 2999, 51, 1810, 2514, 2263, -1521, 3966, 655, -2420, 3002, - 40, 1108, 3003, 772, 2169, 3096, 2170, 1112, 2434, 2279, - 2166, 1115, 4627, 2251, 3733, 1123, 1125, 2804, 3688, 3689, - 3599, 3142, 1812, 3189, 2447, 1127, 2434, 3198, 2300, 2879, - 2434, 1133, 1126, 44, -1483, 4962, 3846, 2773, 2774, 2164, - 986, 3178, 1149, 1135, 1134, 3218, 2785, 4541, 2787, 3219, - 3220, 3221, 2791, 2166, 2167, 672, 3204, 1137, 2167, 2434, - 28, 3205, 1139, 672, 2434, 672, 3206, 1138, 3237, 2434, - 2167, 2434, 1136, 48, 3250, 2366, 3255, 2434, 1143, 3256, - 4114, 2168, 2368, 3509, 2369, 2168, 49, 3278, 2374, 3461, - 3466, 3312, 3462, 3467, 2866, 1142, 3962, 2168, 3396, 3661, - 1020, 1610, 3662, 2037, 2169, 1145, 2170, 50, 2169, 2976, - 2170, 3515, 2388, 1266, 1270, 3686, 3312, 2976, 2434, 1272, - 2169, 51, 2170, 2573, 2167, 2976, 2576, 2976, -2420, 773, - 4928, 3779, 3789, -2420, 3780, 3790, 1263, 3800, 3883, 2164, - 2434, 3884, 3064, 2164, 3065, 40, 3375, 3376, 1271, 1276, - 3888, 2168, 2167, 3889, 3544, 2164, 2422, 3911, 3912, 1020, - 3295, 2912, 3296, 4951, 3314, 3155, 1289, 4585, 3731, -2420, - 1296, 1307, 3893, 3042, 2169, 2721, 2170, 3915, 44, 2168, - 2447, 3988, 4093, 3169, 3989, 2447, 4102, 3077, 1297, 3314, - 4144, 3155, 1322, 1735, 4400, 2167, 3749, 4162, 4188, 1323, - 2434, 2481, 2169, 3072, 2170, 4200, 1299, 4251, 2434, 2164, - 2721, 985, 3060, 181, 1819, 3222, 4257, 2973, 48, 4258, - 4263, 1300, 2168, 2447, 3040, 2982, 3734, 2984, 1327, 1333, - 3778, 49, 4981, 2986, 3572, 4874, 3223, 2164, 1369, 3111, - 3113, 3114, 3104, 3106, 3615, 2169, 1364, 2170, 4264, 3115, - 4384, 2447, 50, 4385, 4431, 4433, 4441, 4432, 2434, 2481, - 4512, 4586, 4613, 4513, 2447, 4614, 51, -1252, 1393, -1252, - 3297, 857, 3298, 985, 4629, 3820, 4637, 2481, 1395, 4638, - 2164, 986, 4642, 986, 4648, 2672, 2399, 3637, 2581, 1397, - 1398, 4650, 3932, -2327, 3637, 2166, 3224, -2420, 3497, 4907, - 28, 3179, 3312, 3392, 1432, 3061, 4662, 3183, 3505, 4663, - 1430, 1433, 672, 4138, 4139, 4140, 1434, 2551, 2551, 2551, - 2551, 1435, 1437, 2551, 2551, 2551, 2551, 2551, 2551, 2551, - 2551, 2551, 2551, 3721, 4700, 4736, 1442, 4701, 1849, 3600, - 1445, 3602, 4612, 3340, 4755, 4765, 1467, 4663, 2481, 1504, - 3782, 986, 4766, 4767, 4777, 3256, 2434, 2672, 2166, 4780, - 1468, 3122, 3637, 3124, 1149, 4802, 765, 3218, 2481, 1480, - 1489, 3219, 3220, 3221, 4808, 3314, 4967, 2481, 4968, 2551, - 2551, -2327, 3448, 4809, 3450, 40, 2481, 1490, 3797, 4835, - -2420, 4866, 4836, 4052, 2672, 4053, 3937, 1826, 1827, 1828, - 1829, 1830, 1831, 1494, 4867, 4868, 3856, 2434, 2434, 3667, - 765, 1795, 4870, 4887, 4924, 2434, 4888, 3637, 44, 1499, - 3861, 3862, 3863, 3372, 4927, 4950, 4964, 4656, 4663, 4965, - -2327, 3608, 4990, 3611, 1299, 4965, -1472, 2167, 4217, 1500, - 4220, 1306, -2327, 1308, 1505, 1507, 4282, -2327, 3315, 1508, - 4382, 1510, -2327, 1513, 1517, 1795, 1524, -2327, 48, 3967, - -2327, 1518, 1525, -2327, 2168, 3188, 3394, 1528, 1530, 1533, - 1536, 49, 2594, 1543, 1546, 3225, 3226, 3227, 1548, 3228, - 3229, 3230, 3231, 3232, 3233, 1962, 1539, 2169, 3288, 2170, - 1557, -2327, 50, 3533, 3300, 3301, 3302, 1559, 1560, 3540, - 2167, 3315, -176, 985, 3306, 1562, 4908, 1564, 1576, 1578, - 3330, -2327, 672, 1585, 2514, 765, 1587, 1591, 207, 1598, - 4559, 1603, 2164, -2329, 1604, 1605, 1606, 2168, 1610, 1613, - 1803, 1616, 1614, 1804, 932, 181, 929, 185, 930, 931, - 1630, 1647, 1649, 1646, 1650, 1657, 1660, 1661, 1664, 1662, - 2169, -2327, 2170, -2327, 1663, 1665, 1667, 3306, 3223, -2327, - 764, 1673, 1810, 1672, 1674, 1675, 1677, 1682, -2420, 1803, - 2775, 1687, 1804, 3470, 1740, 4048, 1805, 1806, 1807, 1712, - 4036, 3727, 2790, 1745, 1747, 2164, 3490, 1748, 1755, 1754, - -1674, -1681, 1812, 1808, 1764, 1762, 1763, 1765, 1766, 51, - 1768, 1810, -1671, 1769, 1770, -1672, 1771, 1811, 1772, 1773, - -2327, -2329, 1775, 985, 4322, 4323, 3494, 4325, 3224, -1675, - 1776, 1777, 2823, -1673, 4124, 1778, 1779, 1780, 1781, 1782, - 1784, 1812, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1835, - 1837, 3684, 1839, 1853, 1840, 1849, 1865, 1873, 1974, 1310, - 1312, 2003, 2005, 2014, 2033, 2034, 2037, 3807, 2035, 686, - -2329, 2038, 2039, 3340, 2040, 3545, 2041, 2042, 3695, 3696, - 3340, 3698, -2329, 3700, 3701, 690, 2043, -2329, 2049, 2068, - 2074, 2080, -2329, 4183, 2551, -2327, 3708, -2329, 4400, 2102, - -2329, 1803, 2106, -2329, 1804, 2108, 2109, 2110, -2420, 3464, - 2111, 2113, 2114, -2420, 2129, 2130, 2131, 2142, 2154, -2327, - 2143, -2327, -2327, 2158, 2160, 2161, 2162, 2163, 2164, 2172, - 2173, -2329, 2176, 1810, 3729, 2177, 2175, 2191, 2193, -2420, - 2201, 3401, -2343, 3402, 3403, 3404, 2197, 1813, 2208, -2420, - 2182, -2329, 1814, 3503, 2183, -2327, 1411, 2198, -2327, -2327, - -2327, 2209, 2215, 1812, 2220, 2216, 2237, 4141, 1149, 2226, - 2238, 3218, 4172, 1815, 1816, -2420, -2420, -2420, 2227, 2242, - 2239, 2247, 2243, 2264, 2250, 2265, 2272, 3001, 1817, 2280, - 2266, -2329, 2281, -2329, 1819, 2284, 2283, 2285, 2287, -2329, - 2293, 2298, 3536, 2301, 2302, 2292, 2305, 3225, 3226, 3227, - 2306, 3228, 3229, 3230, 3231, 3232, 3233, 564, 2314, 1462, - 1818, 2309, 2329, 2334, 2976, 2347, 2350, 2351, 3810, 2359, - -2343, 2976, 2976, 1819, 2365, 2976, 1820, 2363, 2367, 2371, - 2376, 2382, 2976, 2384, 2385, 3564, 2391, 2246, 2389, 2390, - -2329, 3574, 2393, 2394, 2395, 2397, 2406, 2408, 3574, 2396, - 672, 4367, 3716, 2409, 985, 2410, 985, 672, 2428, -2420, - 2429, 2411, 2459, 2465, -2420, 1803, 2478, -2420, 1804, -2343, - 2491, 2524, 1805, 1806, 1807, 2568, 1804, 3730, 2519, 2574, - 3612, -2343, 2587, 2593, 2578, 2607, -2343, 2627, 2605, 686, - 2628, -2343, 2642, 2656, 3635, 2659, -2343, 1810, 2660, -2343, - -2420, 2663, -2343, 1811, 1338, 2662, 1821, 771, 2664, 2673, - 2682, 2684, 2674, 2683, 2701, -2329, 2710, 2695, 2711, 2713, - 2685, 2723, 2724, 3666, 985, 3549, 4102, 1812, 2745, 2725, - -2343, 3656, 181, 2742, 2747, 2749, 2750, 2766, 2756, -2329, - 841, -2329, -2329, 2761, 2772, 1819, 2776, 842, 843, 844, - -2343, 2767, 3687, 3683, 181, 826, 2769, 2788, 2780, 2789, - -2420, 2792, 2806, 2805, 1260, 3168, 4544, 1826, 1827, 1828, - 1829, 1830, 1831, 2827, 2811, -2329, 2828, 1264, -2329, -2329, - -2329, 1339, 3180, 2822, 2841, 2846, 2847, 2868, 2873, 2883, - -2343, 2874, -2343, 3186, 2886, 2876, 2889, 2947, -2343, 1822, - 1329, 2904, 1823, 1824, 1825, 3814, 1826, 1827, 1828, 1829, - 1830, 1831, 3224, 2958, 2970, 2971, 4076, 4077, 2977, 3209, - 2965, 2966, 2969, 2978, 2992, 2979, 2980, 2981, -2420, 4081, - 4916, 4917, 1340, 1813, 2985, 2988, 2996, 672, 1814, 2990, - 3016, 2997, 3030, 3032, 3034, 1113, 4241, 3004, 3041, -2343, - 3047, 3057, 3058, 3067, 3055, 3069, 4641, 3050, 3070, 1815, - 1816, 3073, 3074, 3056, 3087, 3090, 3088, 4641, 3091, 3092, - 3094, 3099, 3100, 3101, 1817, 1639, 3097, 3116, 3102, 3118, - 3702, 3132, 3703, 3127, 3103, 3108, 3705, 3117, 3129, 3136, - 3133, 3141, 3137, 3144, 3145, 3146, 3147, 2672, 686, 3156, - 1683, 2492, 3158, 3149, 765, 3159, 1818, 3795, 3160, 3315, - 3167, 3315, 3170, 3175, 1110, 3177, 3933, 3182, 3184, 1819, - 3181, -2420, 765, 3200, -2343, 1341, 3187, 3201, 1826, 1827, - 1828, 1829, 1830, 1831, 3340, 3202, 3185, 3203, -1933, 3207, - 3736, 3252, 4698, 3208, 3210, 3213, 3269, 3264, -2343, 1795, - -2343, -2343, 3236, 3822, 3823, 3824, 3825, 3214, 2434, 3291, - 4988, 4989, 3286, 3242, 3317, 3829, 3348, 3832, 3346, 3352, - 3369, 3356, 3350, 4239, 3388, 1342, 3249, 3263, 3342, 3377, - 3277, 3380, 1343, 3379, -2343, 3287, 3391, -2343, -2343, -2343, - 3315, -2420, -2420, -2420, 3339, 3228, 3229, 3230, 3231, 3232, - 3233, 3289, 1821, 3290, 3363, 3427, 3400, 3429, 3293, 3393, - 3434, 1344, 3322, 3384, 3416, 35, 3385, 3417, 3436, 3433, - 3435, 4016, 3447, 3446, 4019, 1803, 3449, 3455, 1804, 3456, - 3457, 3465, 1805, 1806, 1807, 3475, 3496, 3500, 3498, 3501, - 3504, 1345, 4130, 3506, 3518, 3507, 3508, 4778, 3516, 1808, - 4133, 4134, 4135, 4136, 3517, 3519, 3398, 1810, 3520, 3521, - 3522, 3523, 2551, 1811, 3524, 3531, 3535, 3526, 3537, 3528, - 1346, 4434, 1347, 3410, 3530, 4354, 3525, 3527, 1803, 3529, - 3532, 1804, 3539, 3541, 2235, 3543, 3566, 1812, 3550, 4545, - 3556, 3557, 3559, 3576, 3579, 1822, 3624, 3626, 1823, 1824, - 1825, 3607, 1826, 1827, 1828, 1829, 1830, 1831, 3622, 3606, - 1810, 3613, 3574, 3628, 3637, 3636, -2420, 3650, 3645, 3651, - 1348, 672, 3654, 3655, 4083, 3647, 3659, 3658, 4544, 4467, - 3671, 4546, 3682, 3690, 3691, 1632, 4482, 3709, 3710, 4704, - 1812, 3693, 3697, 3699, 4492, 3997, 3711, 4280, 3998, 3712, - 3999, 4686, 3715, 672, 3722, 4557, 4547, 3720, 4689, 3927, - 3928, 3929, 3930, 3723, 3724, 3741, 3732, 3487, 3996, 3489, - 3735, 3737, 4548, 847, 848, 849, 4549, 850, 851, 852, - 853, 854, 855, 3218, 3239, 3750, 4694, 1757, 4696, 3238, - -1932, 772, 3791, 1813, 2976, 3802, 4550, 3831, 1814, 4551, - 2976, 2976, 3775, 2976, 3815, 3811, 3776, 3777, 3783, 3564, - 4318, 3803, 4552, 3806, 4631, 3853, 3855, 3858, 3155, 1815, - 1816, 1098, 1099, 3821, 3839, 3868, 3870, 3871, 3872, 3881, - 3534, 3873, 3878, 3886, 1817, 3896, 3902, 3923, 3925, 3926, - 3939, 3931, 3938, 3940, 3941, 3943, -2420, 3945, 3954, 3969, - 3970, -2420, 3957, 1797, 3971, 3548, 3972, 3984, 3982, 3983, - 3991, 3985, 3986, 3987, 3994, 3990, 1818, 4003, 4004, 4271, - 4011, 4026, 4030, 4028, 4033, 3949, 4040, 4042, 3993, 1819, - 4039, 4043, 1820, 4820, 4822, 4046, 4055, -2420, 3673, 4066, - 4063, 4071, 4553, 4073, 4079, 4087, 4095, 4086, 4814, 2447, - 4554, 4089, 4113, 4290, 4291, 4106, 4107, 4090, 4119, 4120, - 4122, 4123, 4125, 4583, 4126, 4109, 181, 4128, 4146, 4129, - 4137, 4142, 4148, 4149, 4153, 2551, 4154, 4156, 4164, 4948, - 4173, 4174, 1819, 4175, 4159, -1934, 4213, 4056, 4555, 857, - 4169, 4176, 4221, 4222, 4227, 4214, 4168, 2823, 4636, 4229, - 4177, 4181, 4196, 4209, 4208, 4211, 4226, 4230, 4232, 4500, - 4233, 4234, 1821, 4240, 4247, 4250, 1803, 4252, 672, 1804, - 4254, 4259, 4260, 4292, 4268, 4293, 4152, 4285, 3685, 4152, - 4286, 4152, 4332, 4333, 4294, 4305, 4706, 4315, 4317, 4308, - 4320, 4889, 4948, 4321, 681, 4326, 683, 4334, 1810, 4339, - 689, 4347, 4348, 4521, -2420, 4355, 706, 714, 681, 4360, - 721, 4948, 4364, 714, 714, -2420, 750, 4770, 753, 4366, - 4368, 4371, 4365, 4374, 4376, 4386, 4393, 4395, 1812, 4779, - 4396, 4397, 4406, 4398, 4781, 4411, 4783, 4417, 4418, 4427, - 4428, 4430, 4435, 4439, 4437, 3315, 4438, 4440, 4446, 3315, - 4453, 4464, 4460, 4484, 4486, 1822, 3340, 4489, 1823, 1824, - 1825, 4494, 1826, 1827, 1828, 1829, 1830, 1831, 4490, 4480, - 4299, 4505, 4509, 4508, 4518, 3259, 4413, 4558, 4560, 4414, - 4415, 3742, 4309, 4814, 4523, 4524, 4539, 4062, 4528, 4567, - 4569, 4570, 4572, 4194, 4573, 4419, 4588, 4574, 4593, 4595, - 4516, 3306, 3751, 4594, 4598, 3306, 4600, 4603, -2420, 4604, - 4615, 4617, 4236, 4934, 4238, 1826, 1827, 1828, 1829, 1830, - 1831, 4619, 4632, 4635, 4639, 4644, 4647, 3774, -130, 4618, - 4678, 4693, 4652, 4253, -2420, 4651, 4660, 4721, 4733, -2420, - 4654, 4726, 4671, 4680, 4242, 181, 1, 4656, 4730, 4731, - 4738, 4744, 4750, 4751, 4752, 4759, 2, 4762, 3, 4, - 4769, 1738, 2495, 808, 813, 813, 816, 4760, 813, 4761, - 822, 4768, 808, 5, 750, -2420, 4785, 859, 4786, 4789, - 4790, 4792, 4776, 750, 4805, 4687, 750, 4782, 4801, 4819, - 813, 4825, 750, 6, 4826, 7, 8, 4829, 4834, 4831, - 4837, 9, 4839, 10, 672, 4840, 4847, 4848, 4855, 2496, - 4849, 4856, 4883, 4864, 11, 986, 12, 4827, 3816, 4287, - 1819, 4876, 4890, 4878, 4828, 4898, 4302, 4303, 4919, 4925, - 4902, 4306, 4307, 13, 3574, 4897, 14, 4938, 4959, 4957, - 2497, 4958, 4963, 672, 4960, 4969, 4970, 4973, 3155, 15, - 4977, 16, 4978, 4982, 4983, 17, 4985, 4986, 4984, 1441, - 1396, 18, 2498, 2248, 1301, 3036, 3332, 2872, 3442, 19, - 3960, 20, 4357, 2499, 2957, 4329, 4330, 21, 3565, 1872, - 4049, 4715, 4813, 4936, 2976, 4797, 2976, 2976, 4597, 4075, - 2976, 4599, 22, 2500, 4352, 4582, 3382, 3143, 2501, 4879, - 4498, 4932, 4832, -2420, 4830, 4896, 3387, 4110, 23, 4094, - 4070, 3958, 3014, 3015, 3459, 2326, 4082, 4369, 4937, 3632, - 4987, 3005, 4974, 4571, 3580, 857, 4900, 3577, 4522, 4807, - 4884, 688, 2308, 4525, 4378, 4143, 4666, 1732, 2716, 1742, - 4116, 3370, 4757, 987, 1061, 2485, 2502, 24, 25, 2486, - 3538, 2487, 3155, 26, 3155, 4312, 4380, 181, 3340, 4976, - 4910, 2667, 2438, 4399, 2048, 27, 4324, 2503, 4626, 857, - 2668, 4794, 4098, 1273, 986, 4873, 28, 3890, 4243, 2000, - 3338, 4328, 3347, 2694, 1999, 3869, 4869, 1845, 3345, 4784, - 1971, 4237, 2693, 4152, 2004, 3834, -2420, 4152, 4152, 3349, - 4152, 4219, 4646, 1826, 1827, 1828, 1829, 1830, 1831, 29, - 4207, 3830, 4775, 4774, 3315, 3891, 3692, 30, 2009, 3315, - 4630, 3785, 4483, 2383, 3315, 4872, 4871, 3315, 4462, 31, - 4863, 207, 2632, 3341, 32, 33, 3195, 34, 3284, 3282, - 3334, 2641, 35, 4668, 0, 0, 0, 36, 0, 4381, - 37, 3315, 0, 0, 0, 38, 0, 0, 2504, 0, - 39, 40, 0, 0, 3315, 2505, 0, 0, 41, 0, - 0, 2506, 42, 0, 0, 3306, 0, 0, 0, 0, - 3306, 0, 43, 3306, 0, 0, 0, 0, 4699, 0, - 0, 0, 0, 0, 44, 0, 0, 4078, 0, 0, - 0, 0, 0, 2507, 0, 0, 2508, 0, 4520, 4491, - 0, 0, 0, 45, 0, 0, 4485, 0, 0, 0, - 0, 0, 894, 46, 2509, 0, 0, 0, 750, 47, - 808, 0, 0, 813, 48, 816, 3574, 813, 0, 0, - 0, 0, 0, 0, 859, 672, 0, 49, 961, 2510, - 0, 826, 0, 0, 0, 813, 0, 0, 0, 986, - 0, 0, 1803, 0, 0, 1804, 0, 0, 50, 1805, - 1806, 1807, 0, 0, 0, 0, 0, 0, 2976, 808, - 0, 0, 51, 0, 816, -130, 1808, 0, 0, 808, - 0, 0, 0, 859, 1810, 0, 0, 0, 0, 1803, - 1811, 0, 1804, 0, 3315, 0, 1805, 1806, 1807, 0, - 813, 0, 0, 4501, 4502, 4502, 0, 0, 0, 0, - 0, 0, 0, 1808, 1812, 0, 0, 0, 0, 4587, - 181, 1810, 1149, 0, 0, 3218, 0, 1811, 0, 3219, - 3220, 3221, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4608, 181, 0, 750, - 0, 1812, 714, 714, 714, 0, 3315, 0, 0, 0, - 0, 0, 0, 0, 0, 750, 0, 1132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1738, 765, 0, - 0, 0, 0, 0, 0, 0, 0, 1245, 1245, 0, - 750, 714, 0, 0, 0, 714, 0, 765, 0, 0, - 0, 0, 1803, 0, 0, 1804, 0, 0, 0, 750, - 0, 0, 3306, 750, 0, 0, 0, 0, 0, 1245, - 1813, 0, 0, 1795, 0, 1814, 0, 857, 0, 0, - 0, 750, 0, 0, 1810, 0, 0, 0, 0, 4609, - -2420, 0, 1795, 750, 0, 0, 1815, 1816, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1813, 0, 0, - 0, 1817, 1814, 0, 1812, 0, 0, 0, 4732, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 985, 0, - 0, 0, 4708, 1815, 1816, 0, 750, 672, 0, 0, - 0, 0, 4716, 1818, 0, 0, 0, 4272, 1817, 0, - 0, 0, 750, 0, 0, 0, 1819, 813, 813, 1820, - 0, 0, 4929, 0, 0, 1149, 3223, 0, 3218, 0, - 0, 0, 3219, 3220, 3221, 0, 0, 0, 4289, 0, - 1818, 0, 714, 714, 3315, 0, 0, 0, 0, 3798, - 0, 0, 0, 1819, 0, 0, 4745, 181, 0, 4304, - 0, 0, 0, 0, 0, 0, 0, 0, 808, 3315, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 808, - -2420, 0, 0, 859, 0, -2420, 3224, 0, 0, 4695, - 3155, 4697, 0, 1149, 0, 0, 3218, 0, 813, 1821, - 3219, 3220, 3221, 1149, 0, 0, 3218, 0, 0, 0, - 3219, 3220, 3221, 0, 0, 0, 0, 4331, 750, 0, - 0, -2420, 0, 0, 0, 813, 813, 4190, 0, 0, - 0, 0, 0, 0, 0, 0, 1821, 0, 0, 0, - 0, 0, 750, 750, 750, 0, 813, 985, 808, 0, - 4843, 4817, 0, 4818, 0, 0, 0, 4823, 4824, 0, - 0, 0, 0, 0, 0, 0, 1819, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1822, 0, 0, 1823, 1824, 1825, 0, 1826, - 1827, 1828, 1829, 1830, 1831, 0, 4405, 0, 4882, 2577, - 0, 0, 0, 0, 0, 813, 0, 813, 813, 3223, - 0, 0, 4502, 0, 0, 0, 0, 0, 0, 1822, - 0, 0, 1823, 1824, 1825, 0, 1826, 1827, 1828, 1829, - 1830, 1831, 0, 0, 0, 1245, 0, 0, 0, -2420, - 0, 0, 1738, 0, 0, 3315, 0, 0, 0, 0, - 0, 826, 826, 0, 0, 3225, 3226, 3227, 0, 3228, - 3229, 3230, 3231, 3232, 3233, 1715, 1715, 0, 0, 3224, - 750, 0, 681, 0, 0, 0, 0, -2420, 0, 0, - 0, 4838, 0, 0, 0, 0, 0, 3223, 0, 0, - 0, 4901, 181, 0, 0, 0, 0, 0, 1746, 0, - 0, 750, 0, 0, 1752, 4915, 181, 4912, 185, 4913, - 4914, 0, 0, 0, 0, 4956, 0, 1245, 0, 0, - 0, 0, 985, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -2420, 0, 0, 0, 4947, 3224, 0, 1826, - 1827, 1828, 1829, 1830, 1831, 4946, 1245, 3224, 0, 0, - 0, 0, 0, 0, 0, 4886, 0, 0, 0, 4915, - 4955, 4912, 185, 4913, 4914, 0, 0, 0, 0, 4980, - 0, 0, 0, 0, 1245, 1245, 1245, 0, 1245, 0, - 0, 826, 826, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1245, 4947, - 0, 0, 0, 0, 0, 0, 0, 0, 4946, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4947, 4915, - 181, 4912, 185, 4913, 4914, 0, 4935, 4946, 0, 0, - 0, 0, 0, 1802, 0, 0, 750, 0, 1803, 1245, - 0, 1804, 0, 0, 0, 1805, 1806, 1807, 3225, 3226, - 3227, 0, 3228, 3229, 3230, 3231, 3232, 3233, 0, 0, - 0, 0, 1808, 0, 0, 1809, 0, 0, 0, 1245, - 1810, 0, 0, 1245, 1245, 0, 1811, 0, 0, 0, - 0, 0, 0, 0, 750, 750, 2013, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1812, 0, 1738, 0, 0, 0, 0, 714, 0, 0, - 0, 0, 0, 0, 0, 0, 3225, 3226, 3227, 0, - 3228, 3229, 3230, 3231, 3232, 3233, 3225, 3226, 3227, 0, - 3228, 3229, 3230, 3231, 3232, 3233, 0, 0, 0, 0, - 3534, 0, 2112, 0, 0, 0, 0, 714, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 750, 2138, 0, 0, 0, 0, 0, 0, 0, 750, - 0, 0, 813, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1738, 859, 0, 750, 1738, 1738, 0, - 0, 0, 0, 0, 750, 0, 1813, 750, 0, 0, - 0, 1814, 0, 1803, 0, 0, 1804, 0, 0, 0, - 1805, 1806, 1807, 0, 0, 0, 0, 0, 0, 0, - 750, 0, 1815, 1816, 0, 0, 0, 1808, 813, 813, - 813, 813, 750, 0, 0, 1810, 0, 1817, 0, 0, - 0, 1811, 0, 714, 0, 0, 750, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2260, 0, 750, - 0, 0, 0, 0, 0, 1812, 0, 0, 0, 1818, - 0, 813, 813, 0, 0, 0, 0, 0, 0, 4758, - 813, 0, 1819, 0, 0, 1820, 0, 0, 0, 0, - 813, 1149, 0, 0, 3218, 0, 0, 0, 3219, 3220, - 3221, 0, 0, 0, 0, 0, 0, 0, 0, 750, - 0, 0, 0, 0, 0, 4191, 0, 0, 813, 813, - 813, 813, 0, 0, 0, 0, 0, 0, 0, 0, - 750, 0, 0, 0, 0, 0, 0, 750, 0, 0, - 2260, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 808, 0, 1803, 0, 0, 1804, 0, 816, 0, 1805, - 1806, 1807, 1245, 0, 0, 1821, 0, 0, 0, 0, - 0, 1813, 0, 0, 0, 0, 1814, 0, 0, 0, - 0, 0, 0, 0, 1810, 0, 0, 0, 0, 0, - 1811, 0, 0, 0, 0, 0, 0, 1815, 1816, 808, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 859, - 0, 0, 1817, 813, 1812, 0, 813, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 813, 0, 0, 0, - 0, 0, 0, 0, 813, 813, 0, 0, 0, 750, - 0, 0, 0, 0, 1818, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1819, 1822, 0, - 1820, 1823, 1824, 1825, 1715, 1826, 1827, 1828, 1829, 1830, - 1831, 813, 0, 808, 0, 0, 0, 750, 750, 0, - 813, 1803, 0, 0, 1804, 3223, 0, 750, -2420, -2420, - -2420, 0, 0, 0, 750, 0, 0, 0, 0, 681, - 681, 0, 0, 2494, 0, 0, 0, 1245, 0, 1245, - 0, 0, 0, 1810, 1245, 1245, 0, 0, 0, 1811, - 1813, 1245, 1245, 1245, 0, 1814, 0, 1245, 859, 1245, - 1245, 1245, 1245, 1245, 1245, 0, 1245, 0, 1245, 1245, - 1821, 0, 1245, 1812, 0, 3224, -2420, -2420, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1245, 1245, 1245, - 1245, 1817, 0, 0, 813, 1245, 0, 0, 0, 1245, - 0, 0, 1245, 0, 0, 1245, 1245, 1245, 1245, 1245, - 1245, 1245, 1245, 1245, 1372, 1245, 0, 0, 0, 0, - 0, 750, 1245, -2420, 1245, 0, 0, 0, 0, 0, - 0, 750, 0, 0, 0, 0, 1819, 0, 0, 0, - 0, 0, 0, 0, 0, 1803, 0, 1373, 1804, 0, - 0, 0, 1805, 1806, 1807, 0, 0, 0, 0, 0, - 0, 0, 0, 1822, 0, 0, 1823, 1824, 1825, 1808, - 1826, 1827, 1828, 1829, 1830, 1831, 0, 1810, 0, 1813, - 3578, 0, 0, 1811, 1814, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1399, 0, 0, 0, 0, - 0, 1400, 0, 0, 0, 1375, 0, 1812, 0, 0, - 0, 0, 0, 0, 0, 1803, 0, 0, 1804, 1821, - 1817, 0, 1805, 1806, 1807, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1376, 1808, - 0, 1401, 0, 0, 0, 0, 0, 1810, 750, 0, - 750, 0, 1245, 1811, 3225, 3226, 3227, 0, 3228, 3229, - 3230, 3231, 3232, 3233, 0, 1819, 0, 1803, 0, 0, - 1804, 0, 0, 1377, 1805, 1806, 1807, 1812, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 750, 0, 0, - 1402, 1808, 0, 1403, 2702, 0, 2709, 0, 0, 1810, - 1404, 0, 0, 1405, 0, 1811, 1378, 0, 0, 0, - 0, 0, 1822, 1813, 0, 1823, 1824, 1825, 1814, 1826, - 1827, 1828, 1829, 1830, 1831, 816, 0, 0, 1406, 1812, - 0, 0, 0, 0, 681, 1380, 681, 0, 0, 1815, - 1816, 1343, 0, 0, 0, 0, 0, 0, 1821, 0, - 0, 0, 0, 1245, 1817, 0, 0, 0, 0, 1407, - 0, 0, 0, 0, 808, 0, 813, 813, 0, 0, - 0, 808, 0, 859, 35, 813, 2122, 813, 1382, 0, - 0, 813, 0, 1813, 750, 1383, 1818, 0, 1814, 0, - 0, 0, 1384, 0, 0, 0, 0, 0, 0, 1819, - 2123, 0, 1820, 0, 0, 714, 0, 0, 0, 1815, - 1816, 0, 1386, 0, 0, 2138, 0, 1408, 0, 1409, - 1387, 0, 0, 2825, 1817, 0, 0, 0, 0, 1410, - 2836, 0, 0, 0, 0, 1813, 0, 1411, 0, 750, - 1814, 1822, 0, 0, -2420, -2420, -2420, 1412, 1826, 1827, - 1828, 1829, 1830, 1831, 0, 0, 1818, 0, 0, 750, - 0, 1815, 1816, 0, 2881, 2881, 0, 0, 0, 1819, - 0, 0, 1820, 816, 1388, 0, 1817, 0, 0, 0, - 0, 0, 1821, 1413, 0, 0, 1414, 1415, 0, 0, - 813, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1399, 0, 0, 0, 1818, 0, - 1400, 0, 0, 1416, 0, 0, 0, 2946, 0, 2949, - 2951, 1819, 0, 0, 1820, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 813, 0, 0, 0, - 1401, 0, 1821, 0, 813, 0, 813, 1803, 0, 0, - 1804, 0, 813, 0, 1805, 1806, 1807, 2082, 0, 0, - 0, 0, 0, 0, 1245, 1822, 1417, 0, 1823, 1824, - 1825, 1808, 1826, 1827, 1828, 1829, 1830, 1831, 2138, 1810, - 0, 2881, 3743, 750, 0, 1811, 3037, 0, 0, 681, - 2083, 0, 1403, 0, 1821, 0, 0, 0, 1803, 1404, - 0, 1804, 1405, 2084, 0, 1805, 1806, 1807, 0, 1812, - 0, 0, 0, 0, 0, 2946, 0, 2085, 0, 0, - 0, 0, 1808, 0, 813, 3063, 0, 1406, 0, 0, - 1810, 0, 0, 0, 0, 1822, 1811, 0, 1823, 1824, - 1825, 0, 1826, 1827, 1828, 1829, 1830, 1831, 1245, 0, - 0, 0, 3794, 0, 0, 0, 0, 2086, 1407, 0, - 1812, 0, 0, 3107, 0, 0, 0, 0, 2087, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 813, 0, - 813, 2881, 813, 2881, 0, 0, 0, 1822, 2088, 0, - 1823, 1824, 1825, 2089, 1826, 1827, 1828, 1829, 1830, 1831, - 0, 0, 0, 0, 3877, 0, 1245, 0, 0, 0, - 0, 0, 0, 0, 0, 1813, 1408, 0, 1409, 1715, - 1814, 0, 0, 0, 0, 0, 0, 0, 1410, 0, - 0, 0, 0, 0, 0, 0, 1411, 0, 0, 0, - 0, 1815, 1816, 0, 0, 0, 1412, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1817, 750, 0, 0, - 0, 0, 2090, 0, 0, 0, 1813, 808, 0, 0, - 0, 1814, 0, 808, 0, 0, 0, 0, 0, 0, - 0, 0, 1469, 0, 813, 1414, 1415, 0, 1818, 0, - 0, 1245, 1815, 1816, 2091, 0, 1245, 0, 0, 0, - 0, 1819, 0, 0, 1820, 0, 0, 1817, 0, 0, - 0, 0, 1470, 0, 0, 0, 0, 0, 0, 1245, - 1245, 1245, 0, 0, 1245, 0, 207, 0, 0, 0, - 0, 0, 1245, 1245, 1245, 1245, 0, 0, 0, 1818, - 0, 0, 0, 0, 0, 1245, 0, 0, 1245, 0, - 1245, 0, 1819, 0, 0, 1820, 0, 0, 0, 0, - 2092, 1245, 1245, 0, 0, 1245, 2093, 0, 0, 2094, - 0, 0, 0, 0, 0, 1417, 0, 859, 0, 1245, - 0, 1245, 0, 1245, 1821, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2095, 0, - 0, 1803, 0, 1245, 1804, 2096, 0, 750, 1805, 1806, - 1807, 0, 2097, 0, 3316, 0, 1245, 1245, 1245, 2098, - 0, 1803, 0, 0, 1804, 1808, 0, 1372, 1805, 1806, - 1807, 0, 0, 1810, 1245, 1821, 0, 0, 0, 1811, - 0, 0, 0, 0, 2099, 1808, 1245, 0, 0, 0, - 0, 1245, 0, 1810, 0, 0, 0, 1245, 0, 1811, - 1373, 0, 0, 1812, 0, 0, 0, 3316, 1399, 0, - 3355, 0, 0, 3358, 1400, 2709, 0, 1822, 0, 0, - 1823, 1824, 1825, 1812, 1826, 1827, 1828, 1829, 1830, 1831, - 1374, 0, 0, 0, 3904, 0, 0, 0, 0, 1446, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1401, 0, 0, 1245, 1375, 2881, - 0, 0, 0, 0, 1715, 0, 0, 0, 1822, 0, - 0, 1823, 1824, 1825, 0, 1826, 1827, 1828, 1829, 1830, - 1831, 0, 0, 0, 0, 4160, 0, 1447, 0, 0, - 813, 1376, 813, 813, 813, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1403, 0, 0, 1813, - 0, 0, 0, 1404, 1814, 0, 1405, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1377, 0, 0, 1813, - 0, 0, 0, 0, 1814, 1815, 1816, 0, 0, 0, - 0, 1406, 0, 0, 0, 0, 0, 0, 0, 0, - 1817, 0, 0, 0, 0, 1815, 1816, 0, 0, 1378, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1448, - 1817, 0, 1407, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1818, 0, 0, 0, 0, 1379, 1380, 0, - 0, 0, 0, 0, 1343, 1819, 0, 0, 1820, 0, - 0, 750, 1818, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1819, 0, 1449, 1820, 0, - 1450, 0, 0, 1381, 0, 0, 0, 35, 0, 0, - 1451, 1382, 1409, 0, 838, 0, 0, 0, 1383, 0, - 0, 0, 1410, 868, 0, 1384, 0, 0, 0, 0, - 1411, 0, 883, 1385, 0, 0, 0, 0, 0, 1452, - 1412, 0, 0, 0, 0, 1386, 0, 0, 0, 0, - 0, 0, 0, 1387, 0, 0, 0, 0, 1821, 0, - 0, 0, 0, 0, 813, 0, 0, 0, 0, 0, - 0, 2881, 2881, 0, 0, 0, 1453, 0, 1821, 1414, - 1415, 1454, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1803, 0, 0, 1804, 0, - 0, 0, 1805, 1806, 1807, 0, 1455, 1388, 750, 750, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1808, - 1456, 0, 0, 0, 750, 0, 0, 1810, 0, 0, - 0, 0, 0, 1811, 0, 0, 0, 0, 0, 1715, - 750, 0, 0, 0, 0, 0, 0, 0, 1715, 750, - 750, 1822, 0, 0, 1823, 1824, 1825, 1812, 1826, 1827, - 1828, 1829, 1830, 1831, 0, 0, 750, 0, 4195, 1417, - 0, 1822, 0, 0, 1823, 1824, 1825, 0, 1826, 1827, - 1828, 1829, 1830, 1831, 0, 0, 0, 0, 4425, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 813, - 0, 813, 0, 0, 0, 813, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 808, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 750, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1813, 0, 0, 0, 750, 1814, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 813, - 0, 0, 0, 0, 0, 0, 1245, 0, 0, 1815, - 1816, 0, 0, 0, 0, 1245, 0, 0, 0, 0, - 0, 1245, 0, 1245, 1817, 0, 1245, 0, 0, 0, - 0, 1245, 1245, 1245, 1245, 0, 0, 1245, 1245, 1245, - 1245, 1245, 1245, 1245, 1245, 1245, 1245, 0, 0, 0, - 1245, 1245, 0, 0, 0, 0, 1818, 0, 0, 0, - 1245, 0, 0, 0, 1245, 0, 0, 0, 1245, 1819, - 0, 0, 1820, 0, 0, 0, 1245, 0, 0, 1245, - 0, 1245, 892, 0, 0, 0, 0, 0, 933, 0, - 1245, 0, 0, 1245, 1245, 0, 0, 0, 1245, 1245, - 0, 1803, 0, 3818, 1804, 1245, 0, 0, 1805, 1806, - 1807, 0, 750, 750, 750, 808, 0, 3316, 3838, 0, - 0, 0, 3838, 3852, 0, 1808, 1399, 0, 0, 1245, - 0, 0, 1400, 1810, 0, 1245, 1245, 1245, 0, 1811, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1821, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1245, 1812, 0, 0, 0, 0, 0, 0, - 0, 0, 1401, 2709, 0, 1245, 0, 0, 594, 0, - 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 694, 3910, 1715, 1715, 0, - 2260, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 762, 762, 0, 0, 813, 813, - 813, 813, 0, 0, 1403, 0, 0, 0, 0, 0, - 0, 1404, 0, 0, 1405, 1130, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1822, 0, 2138, 1823, 1824, - 1825, 0, 1826, 1827, 1828, 1829, 1830, 1831, 0, 1406, - 1252, 3956, 4436, 0, 0, 0, 0, 0, 0, 1813, - 0, 0, 0, 0, 1814, 0, 0, 0, 0, 1275, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1407, 0, 0, 0, 0, 1815, 1816, 0, 0, 0, - 0, 1302, 0, 0, 0, 0, 0, 0, 0, 0, - 1817, 1803, 0, 0, 1804, 0, 0, 0, 1805, 1806, - 1807, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1808, 0, 0, 0, 0, - 0, 0, 1818, 1810, 0, 0, 0, 0, 1408, 1811, - 1409, 4034, 0, 0, 0, 1819, 0, 0, 1820, 0, - 1410, 0, 0, 821, 0, 0, 0, 0, 1411, 0, - 0, 861, 1427, 1812, 865, 866, 0, 869, 1412, 0, - 875, 0, 877, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 750, 0, 813, 0, 1245, 0, - 0, 0, 0, 0, 750, 0, 0, 0, 0, 0, - 4069, 0, 0, 0, 1495, 0, 0, 1414, 1415, 2138, - 0, 0, 0, 1803, 0, 0, 1804, 0, 0, 0, - 1805, 1806, 1807, 0, 0, 0, 0, 0, 1821, 750, - 0, 0, 0, 0, 1496, 0, 0, 1808, 0, 2946, - 0, 0, 0, 0, 0, 1810, 0, 4103, 0, 0, - 0, 1811, 0, 0, 0, 0, 0, 750, 0, 0, - 0, 2260, 0, 0, 0, 1245, 1245, 0, 1550, 1813, - 0, 0, 0, 0, 1814, 1812, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1580, 1583, 1584, 1815, 1816, 1417, 0, 2881, - 0, 2881, 0, 0, 0, 0, 0, 0, 0, 0, - 1817, 750, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1822, 0, 0, 1823, 1824, 1825, 0, 1826, 1827, - 1828, 1829, 1830, 1831, 0, 0, 0, 0, 4445, 0, - 0, 1245, 1818, 0, 0, 1399, 0, 0, 0, 0, - 0, 1400, 1245, 0, 0, 1819, 0, 0, 1820, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1813, 1245, 0, 0, 0, 1814, 0, 0, 0, - 0, 1401, 1245, 1245, 0, 0, 0, 0, 0, 1245, - 1245, 0, 0, 0, 1245, 0, 0, 1815, 1816, 1245, - 0, 0, 1245, 1245, 0, 0, 0, 1245, 4199, 0, - 0, 0, 1817, 1245, 750, 750, 750, 750, 0, 0, - 1252, 3838, 3852, 0, 3838, 0, 0, 4210, 1821, 0, - 2178, 3316, 0, 1403, 0, 3316, 0, 0, 0, 0, - 1404, 4225, 0, 1405, 1818, 0, 0, 1245, 0, 0, - 0, 1252, 1245, 0, 0, 0, 0, 1819, 1245, 0, - 1820, 0, 0, 0, 0, 859, 0, 0, 1406, 0, - 0, 0, 0, 1245, 0, 0, 3355, 0, 0, 0, - 0, 2709, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 681, 0, 0, 1245, 0, 1407, - 0, 0, 0, 0, 936, 0, 0, 0, 0, 0, - 0, 0, 944, 0, 0, 0, 0, 2881, 2881, 957, - 0, 1822, 962, 963, 1823, 1824, 1825, 965, 1826, 1827, - 1828, 1829, 1830, 1831, 0, 2138, 2661, 0, 982, 0, - 1821, 0, 0, 0, 4288, 0, 0, 0, 0, 0, - 0, 0, 0, 991, 0, 0, 0, 1408, 0, 1409, - 0, 0, 0, 0, 0, 0, 0, 0, 1051, 1410, - 1055, 0, 0, 1057, 0, 1059, 0, 1411, 1063, 0, - 0, 0, 0, 0, 0, 1245, 1874, 1412, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 813, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 813, 0, 0, 2179, 0, 0, 1414, 1415, 0, 0, - 0, 0, 0, 1822, 0, 2011, 1823, 1824, 1825, 0, - 1826, 1827, 1828, 1829, 1830, 1831, 0, 1245, 0, 1131, - 4448, 0, 0, 2180, 0, 0, 0, 0, 808, 1032, - 0, 0, 0, 2138, 0, 0, 0, 0, 0, 0, - 0, 1715, 0, 0, 0, 0, 1803, 0, 0, 1804, - 1032, 0, 0, 1805, 1806, 1807, 0, 0, 813, 3063, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1808, 0, 0, 0, 762, 0, 0, 0, 1810, 0, - 2132, 0, 0, 0, 1811, 0, 1417, 750, 0, 2155, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1812, 0, - 0, 0, 0, 0, 0, 0, 2190, 0, 0, 0, - 0, 0, 0, 0, 2196, 0, 1245, 2199, 0, 0, - 0, 0, 0, 0, 1363, 1245, 1803, 0, 0, 1804, - 0, 0, 0, 1805, 1806, 1807, 0, 0, 0, 0, - 0, 0, 1245, 1245, 0, 0, 1245, 0, 0, 0, - 1808, 0, 2234, 0, 0, 0, 0, 0, 1810, 0, - 808, 3838, 0, 0, 1811, 3316, 2249, 0, 0, 0, - 3316, 0, 0, 3316, 808, 0, 2946, 0, 4466, 2261, - 0, 1245, 1245, 0, 0, 0, 0, 0, 1812, 1498, - 0, 0, 0, 0, 0, 0, 0, 3910, 0, 0, - 0, 0, 0, 0, 1813, 1511, 0, 0, 0, 1814, - 3910, 859, 813, 813, 813, 0, 0, 1522, 0, 1523, - 0, 0, 0, 0, 0, 0, 0, 1526, 0, 2312, - 1815, 1816, 0, 0, 0, 0, 0, 0, 0, 1532, - 0, 0, 0, 0, 1541, 1817, 0, 1545, 0, 0, - 2346, 0, 0, 0, 808, 859, 0, 2358, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1818, 0, 0, - 0, 0, 1590, 0, 0, 0, 0, 0, 0, 0, - 1819, 0, 0, 1820, 1813, 0, 0, 808, 0, 1814, - 750, 1399, 0, 0, 0, 0, 0, 1400, 0, 1032, - 4069, 0, 0, 0, 0, 0, 750, 0, 2881, 0, - 1815, 1816, 0, 0, 2138, 0, 0, 0, 0, 1032, - 0, 0, 0, 0, 0, 1817, 0, 4103, 0, 0, - 0, 0, 0, 1032, 0, 0, 0, 1401, 813, 750, - 3910, 0, 0, 0, 0, 0, 0, 0, 0, 2436, - 0, 0, 0, 0, 0, 0, 0, 1818, 0, 0, - 0, 0, 0, 1821, 0, 0, 0, 0, 0, 1245, - 1819, 0, 1245, 1820, 1245, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1252, 1252, 1403, - 0, 0, 0, 0, 0, 0, 1404, 0, 1245, 1405, - 0, 0, 3316, 0, 2484, 0, 4466, 1733, 0, 0, - 1032, 0, 0, 1245, 0, 0, 0, 0, 0, 0, - 1803, 0, 4659, 1804, 1406, 0, 0, 1805, 1806, 1807, - 0, 0, 1245, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1808, 0, 0, 750, 0, 0, - 0, 0, 1810, 1821, 0, 1407, 1822, 0, 1811, 1823, - 1824, 1825, 0, 1826, 1827, 1828, 1829, 1830, 1831, 0, - 1245, 0, 0, 4496, 0, 0, 0, 813, 813, 813, - 813, 0, 1812, 0, 0, 0, 0, 0, 0, 0, - 3079, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2640, 0, 0, 0, 0, 0, 0, 0, 1372, - 0, 2655, 0, 1408, 808, 1409, 0, 0, 0, 1032, - 0, 0, 0, 0, 0, 1410, 0, 0, 0, 0, - 750, 0, 0, 1411, 0, 1245, 0, 0, 0, 0, - 0, 0, 1373, 1412, 0, 0, 1822, 0, 0, 1823, - 1824, 1825, 0, 1826, 1827, 1828, 1829, 1830, 1831, 0, - 0, 0, 0, 4527, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1245, 0, 2103, - 808, 0, 1414, 1415, 0, 0, 0, 0, 1813, 1245, - 0, 762, 1973, 1814, 1245, 0, 1245, 0, 1245, 0, - 1375, 0, 0, 0, 0, 3910, 0, 0, 0, 2104, - 0, 813, 0, 859, 1815, 1816, 0, 0, 0, 0, - 0, 0, 1245, 0, 0, 0, 0, 0, 2666, 1817, - 2669, 0, 0, 1376, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1715, 1715, 0, 0, 0, 0, 1859, - 0, 1818, 0, 3080, 2101, 0, 0, 1252, 1377, 0, - 0, 0, 1417, 0, 1819, 0, 0, 1820, 0, 0, - 813, 0, 0, 0, 0, 0, 808, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3079, 0, - 0, 1378, 1803, 0, 0, 1804, 0, 0, 0, 1805, - 1806, 1807, 0, 1245, 1245, 0, 0, 1372, 2946, 0, - 0, 0, 0, 1032, 1245, 0, 1808, 4659, 2189, 0, - 1380, 2709, 0, 0, 1810, 0, 1343, 0, 0, 1803, - 1811, 0, 1804, 0, 808, 0, 1805, 1806, 1807, 0, - 1373, 0, 0, 0, 813, 0, 0, 1821, 0, 0, - 0, 1715, 0, 1808, 1812, 0, 0, 0, 0, 35, - 0, 1810, 0, 1382, 0, 0, 0, 1811, 0, 0, - 1383, 0, 0, 2138, 0, 0, 0, 1384, 0, 1032, - 0, 3910, 0, 0, 0, 2123, 0, 808, 808, 1245, - 0, 1812, 0, 0, 0, 0, 0, 1386, 1375, 0, - 0, 0, 0, 0, 0, 1387, 0, 0, 1245, 2848, - 0, 0, 0, 0, 0, 813, 1032, 0, 0, 0, - 0, 0, 0, 0, 0, 3082, 0, 0, 0, 2875, - 0, 1376, 0, 2304, 0, 0, 0, 0, 0, 0, - 1822, 0, 0, 1823, 1824, 1825, 0, 1826, 1827, 1828, - 1829, 1830, 1831, 0, 0, 0, 0, 4565, 0, 1388, - 1813, 3080, 0, 3083, 3673, 1814, 1377, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1815, 1816, 0, 0, - 0, 1245, 1245, 0, 0, 0, 1032, 1813, 0, 1378, - 0, 1817, 1814, 0, 0, 808, 0, 0, 0, 0, - 0, 1032, 0, 0, 0, 0, 0, 808, 808, 1032, - 0, 0, 0, 1815, 1816, 0, 0, 0, 1380, 0, - 1032, 2401, 0, 1818, 1343, 0, 0, 0, 1817, 0, - 0, 0, 0, 0, 0, 2415, 1819, 0, 2418, 1820, - 2420, 0, 2421, 0, 0, 0, 0, 0, 2423, 0, - 0, 0, 0, 3033, 0, 0, 0, 35, 0, 0, - 1818, 3081, 0, 0, 0, 0, 0, 1032, 1383, 0, - 0, 0, 0, 1819, 0, 1384, 1820, 0, 0, 0, - 1032, 0, 0, 2123, 0, 0, 0, 0, 0, 0, - 0, 3079, 1032, 1973, 0, 1386, 0, 1973, 0, 1973, - 0, 0, 1973, 1387, 1032, 0, 0, 0, 0, 0, - 1372, 0, 0, 0, 0, 0, 0, 0, 0, 1821, - 0, 0, 0, 3082, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1373, 0, 0, 0, 0, 1032, 0, - 0, 1032, 0, 0, 0, 0, 1821, 1388, 0, 0, - 0, 3083, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1803, 0, 0, 1804, 0, 0, 0, 1805, 1806, - 1807, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1808, 0, 0, 0, 0, - 1399, 1375, 0, 1810, 0, 0, 1400, 0, 0, 1811, - 0, 0, 1822, 0, 0, 1823, 1824, 1825, 0, 1826, - 1827, 1828, 1829, 1830, 1831, 0, 0, 3172, 0, 4810, - 0, 0, 0, 1812, 1376, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1401, 0, 0, 1822, - 0, 0, 1823, 1824, 1825, 0, 1826, 1827, 1828, 1829, - 1830, 1831, 0, 0, 3080, 0, 4842, 0, 0, 1377, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1032, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1803, 0, 0, 1804, 0, 0, 1403, 1805, - 1806, 1807, 1378, 0, 0, 1404, 0, 0, 1405, 0, - 1803, 0, 0, 1804, 0, 0, 1808, 1805, 1806, 1807, - 0, 0, 0, 0, 1810, 0, 0, 0, 0, 0, - 1811, 1380, 0, 1406, 1808, 0, 0, 1343, 2675, 1813, - 0, 0, 1810, 0, 1814, 0, 0, 0, 1811, 0, - 0, 0, 0, 0, 1812, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1407, 1815, 1816, 0, 0, 0, - 35, 0, 1812, 0, 1382, 0, 0, 3299, 0, 0, - 1817, 1383, 0, 0, 0, 0, 0, 0, 1384, 0, - 0, 0, 0, 0, 0, 0, 2123, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1386, 2727, - 2728, 0, 1818, 0, 2731, 2732, 1387, 0, 0, 2735, - 2676, 0, 1408, 0, 1409, 1819, 0, 0, 1820, 0, - 0, 0, 0, 2746, 1410, 0, 3082, 0, 0, 0, - 2755, 0, 1411, 0, 2758, 2759, 0, 0, 2762, 2763, - 0, 0, 1412, 0, 0, 2768, 0, 0, 0, 0, - 1813, 0, 0, 0, 0, 1814, 0, 2784, 0, 2786, - 1388, 0, 0, 0, 3083, 0, 0, 0, 1813, 0, - 0, 0, 0, 1814, 0, 0, 1815, 1816, 2810, 0, - 0, 1414, 1415, 2812, 0, 1032, 0, 0, 0, 1032, - 1032, 1817, 0, 0, 1815, 1816, 2817, 0, 1821, 0, - 0, 0, 0, 0, 0, 2824, 0, 2826, 1416, 1817, - 2829, 2832, 2834, 0, 0, 0, 0, 2842, 2845, 0, - 0, 0, 0, 1818, 0, 0, 0, 2858, 0, 0, - 0, 0, 2867, 0, 0, 0, 1819, 2871, 0, 1820, - 0, 1818, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1032, 0, 1819, 0, 0, 1820, 0, 0, - 0, 0, 0, 2906, 1032, 0, 0, 0, 0, 0, - 0, 1417, 0, 0, 2913, 0, 2915, 0, 0, 0, - 0, 2918, 0, 0, 0, 2919, 0, 2923, 2924, 2925, - 2926, 1822, 2928, 0, 1823, 1824, 1825, 0, 1826, 1827, - 1828, 1829, 1830, 1831, 1032, 2953, 2954, 2955, 4961, 0, - 0, 0, 0, 0, 0, 2963, 2964, 0, 0, 1821, - 0, 3495, 0, 1803, 0, 0, 1804, 0, 0, 0, - 1805, 1806, 1807, 0, 0, 0, 0, 1821, 0, 0, - 0, 1803, 0, 0, 1804, 0, 0, 1808, 1805, 1806, - 1807, 0, 0, 0, 0, 1810, 0, 0, 0, 0, - 0, 1811, 1399, 0, 0, 1808, 0, 3008, 1400, 0, - 0, 0, 0, 1810, 0, 0, 0, 0, 0, 1811, - 0, 0, 0, 0, 0, 1812, 0, 0, 0, 0, - 0, 0, 2677, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1812, 0, 0, 0, 1399, 1401, 0, - 0, 0, 1822, 1400, 0, 1823, 1824, 1825, 0, 1826, - 1827, 1828, 1829, 1830, 1831, 0, 0, 0, 0, 4979, - 1822, 0, 0, 1823, 1824, 1825, 0, 1826, 1827, 1828, - 1829, 1830, 1831, 0, 0, 0, 0, 0, 3604, 3605, - 0, 0, 0, 1401, 0, 0, 0, 0, 0, 1032, - 1403, 0, 0, 0, 3614, 0, 0, 1404, 0, 3238, - 1405, 0, 0, 0, 3239, 0, 0, 0, 0, 0, - 3631, 0, 0, 0, 0, 0, 0, 0, 0, 3640, - 3642, 1813, 0, 0, 0, 1406, 1814, 0, 0, 0, - 0, 0, 0, 0, 0, 1403, 3660, 0, 0, 1813, - 0, 0, 1404, 0, 1814, 1405, 0, 1815, 1816, 0, - 1973, 0, 0, 0, 0, 0, 1407, 0, 0, 1032, - 0, 0, 1817, 0, 0, 1815, 1816, 0, 0, 0, - 1406, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1817, 3173, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1818, 0, 0, 0, 0, 0, - 0, 1407, 0, 0, 0, 0, 0, 1819, 0, 0, - 1820, 0, 1818, 0, 1408, 0, 1409, 0, 0, 0, - 0, 0, 0, 0, 0, 1819, 1410, 0, 1820, 0, - 0, 0, 0, 0, 1411, 0, 0, 1252, 0, 0, - 0, 0, 0, 0, 1412, 0, 0, 0, 0, 0, - 0, 3786, 1399, 0, 0, 0, 0, 0, 1400, 1408, - 0, 1409, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1410, 0, 0, 0, 0, 0, 1032, 0, 1411, - 2818, 0, 0, 1414, 1415, 0, 0, 0, 0, 1412, - 1821, 0, 0, 0, 1032, 0, 0, 0, 1401, 0, - 0, 0, 0, 0, 0, 1032, 0, 0, 1821, 0, - 1416, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3787, 2920, 0, 0, 1414, 1415, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1403, 0, 0, 0, 0, 2921, 0, 1404, 0, 0, - 1405, 0, 3826, 3827, 3828, 0, 0, 3336, 0, 0, - 0, 0, 0, 1417, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1822, 0, 1406, 1823, 1824, 1825, 0, - 1826, 1827, 1828, 1829, 1830, 1831, 0, 0, 0, 0, - 0, 1822, 0, 0, 1823, 1824, 1825, 0, 1826, 1827, - 1828, 1829, 1830, 1831, 0, 0, 1407, 0, 1417, 3373, - 3374, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1803, 0, 0, 1804, 0, 0, 1973, 1805, 1806, - 1807, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1808, 0, 0, 0, 0, - 0, 0, 3395, 1810, 0, 0, 0, 0, 0, 1811, - 0, 3399, 0, 0, 1408, 0, 1409, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1410, 3411, 3413, 0, - 0, 0, 3413, 1812, 1411, 0, 0, 3424, 3425, 3426, - 0, 3428, 0, 0, 1412, 0, 0, 1032, 0, 0, - 1032, 0, 1032, 0, 0, 0, 0, 1032, 1803, 0, - 0, 1804, 3445, 0, 0, 1805, 1806, 1807, 0, 0, - 0, 0, 3451, 3452, 3453, 3454, 0, 0, 0, 0, - 2960, 0, 1808, 1414, 1415, 3197, 0, 0, 0, 0, - 1810, 0, 0, 0, 0, 0, 1811, 1399, 0, 0, - 0, 0, 0, 1400, 0, 0, 0, 0, 1032, 3471, - 2961, 0, 3476, 3477, 3478, 0, 4922, 0, 0, 0, - 1812, 0, 3491, 1803, 0, 1032, 1804, 0, 1446, 0, - 1805, 1806, 1807, 0, 0, 0, 0, 0, 0, 1813, - 0, 0, 0, 1401, 1814, 0, 0, 1808, 0, 0, - 1032, 0, 0, 0, 0, 1810, 0, 0, 0, 0, - 0, 1811, 0, 0, 0, 1815, 1816, 0, 0, 0, - 0, 0, 0, 1417, 0, 0, 1447, 0, 0, 0, - 1817, 0, 0, 0, 4054, 1812, 0, 0, 0, 0, - 0, 0, 0, 3542, 4064, 1403, 0, 0, 0, 0, - 0, 3546, 1404, 0, 0, 1405, 0, 0, 0, 0, - 0, 0, 1818, 0, 0, 0, 0, 0, 0, 1032, - 3558, 1032, 0, 0, 0, 1819, 1813, 0, 1820, 4085, - 1406, 1814, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3601, 0, 0, 4923, - 0, 0, 1815, 1816, 0, 0, 0, 2358, 1448, 0, - 0, 1407, 0, 0, 0, 0, 0, 1817, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1032, 0, 0, 0, 0, 0, 0, 0, - 3638, 1813, 0, 0, 3643, 0, 1814, 0, 0, 1818, - 0, 0, 0, 0, 0, 0, 1449, 1032, 1821, 1450, - 0, 2436, 1819, 0, 0, 1820, 0, 1815, 1816, 1451, - 0, 1409, 0, 3681, 0, 0, 0, 0, 0, 0, - 0, 1410, 1817, 1032, 0, 0, 0, 0, 0, 1411, - 1032, 0, 0, 0, 0, 0, 0, 0, 1452, 1412, - 0, 0, 0, 3694, 0, 0, 1399, 0, 0, 0, - 0, 0, 1400, 0, 1818, 0, 0, 3704, 0, 0, - 0, 3706, 0, 0, 0, 0, 0, 1819, 0, 0, - 1820, 0, 1973, 0, 0, 2907, 0, 0, 1414, 1415, - 1454, 0, 0, 0, 0, 1821, 0, 3211, 0, 1032, - 0, 1822, 1401, 0, 1823, 1824, 1825, 0, 1826, 1827, - 1828, 1829, 1830, 1831, 0, 2908, 0, 1032, 0, 0, - 0, 0, 0, 0, 4202, 4203, 4204, 4205, 810, 1456, - 1032, 0, 0, 0, 0, 0, 0, 810, 833, 0, - 0, 0, 0, 0, 1803, 833, 0, 1804, 0, 0, - 0, 1805, 1806, 1807, 1403, 0, 833, 0, 0, 0, - 1821, 1404, 0, 0, 1405, 0, 0, 0, 1808, 0, - 0, 3243, 0, 0, 0, 0, 1810, 0, 1417, 0, - 0, 0, 1811, 0, 0, 0, 0, 0, 1822, 1406, - 0, 1823, 1824, 1825, 0, 1826, 1827, 1828, 1829, 1830, - 1831, 0, 0, 0, 0, 0, 1812, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1407, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1032, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1822, 1032, 0, 1823, 1824, 1825, 0, - 1826, 1827, 1828, 1829, 1830, 1831, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1408, 1032, - 1409, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1410, 0, 0, 0, 0, 0, 0, 0, 1411, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1412, 0, - 0, 0, 1813, 1032, 0, 0, 0, 1814, 0, 0, - 0, 0, 0, 0, 0, 0, 3921, 0, 3922, 0, - 0, 0, 0, 0, 0, 3924, 0, 0, 1815, 1816, - 0, 0, 0, 0, 3421, 0, 0, 1414, 1415, 0, - 0, 1803, 3934, 1817, 1804, 0, 0, 0, 1805, 1806, - 1807, 0, 0, 0, 0, 0, 0, 0, 3942, 0, - 0, 0, 0, 0, 3422, 1808, 0, 0, 0, 0, - 0, 0, 3955, 1810, 0, 1818, 0, 0, 1399, 1811, - 0, 0, 0, 0, 1400, 0, 0, 0, 1819, 0, - 3959, 1820, 0, 0, 0, 1032, 0, 0, 0, 0, - 3968, 0, 0, 1812, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4407, 0, 0, - 0, 3992, 0, 0, 1401, 0, 0, 1417, 0, 0, - 0, 0, 4000, 4001, 4002, 0, 0, 4005, 4006, 4007, - 4008, 4009, 4010, 0, 0, 0, 0, 4017, 4018, 0, - 4020, 4021, 4022, 4023, 4024, 4025, 0, 4027, 0, 0, - 0, 0, 0, 0, 0, 0, 4035, 0, 4037, 4038, - 0, 1821, 0, 0, 0, 0, 1403, 0, 0, 0, - 0, 0, 0, 1404, 0, 810, 1405, 0, 0, 0, - 0, 3413, 3248, 0, 1032, 0, 0, 833, 0, 0, - 0, 0, 833, 0, 0, 0, 0, 0, 0, 1813, - 4057, 1406, 0, 833, 1814, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 833, - 0, 0, 0, 0, 810, 1815, 1816, 0, 0, 0, - 1034, 0, 1407, 0, 810, 833, 0, 0, 0, 0, - 1817, 833, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1034, 833, 0, 1822, 0, 0, 1823, 1824, 1825, - 833, 1826, 1827, 1828, 1829, 1830, 1831, 0, 0, 0, - 0, 0, 1818, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1819, 0, 0, 1820, 0, - 1408, 0, 1409, 0, 0, 0, 0, 3413, 0, 0, - 0, 0, 1410, 0, 0, 0, 0, 0, 0, 0, - 1411, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1412, 0, 0, 0, 0, 1973, 1973, 1973, 0, 1032, - 4563, 0, 0, 0, 0, 0, 0, 4145, 0, 0, - 0, 0, 810, 810, 0, 0, 1252, 0, 833, 0, - 0, 0, 0, 0, 0, 0, 3472, 0, 0, 1414, - 1415, 0, 0, 0, 0, 0, 0, 0, 1821, 0, - 0, 0, 0, 0, 810, 0, 0, 0, 1032, 4610, - 0, 0, 0, 0, 0, 0, 3473, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1803, 0, 0, 1804, 0, 0, 0, 1805, 1806, - 1807, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1808, 0, 0, 3254, 1417, - 0, 0, 0, 1810, 0, 0, 0, 0, 0, 1811, - 0, 1822, 0, 0, 1823, 1824, 1825, 0, 1826, 1827, - 1828, 1829, 1830, 1831, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1812, 0, 0, 0, 4674, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1032, - 0, 0, 0, 810, 0, 0, 0, 0, 0, 1032, - 1034, 0, 0, 0, 810, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1803, 0, 0, 1804, 0, 0, - 1034, 1805, 1806, 1807, 0, 0, 4275, 0, 0, 0, - 4276, 4277, 4278, 4279, 1034, 0, 4281, 0, 1808, 0, - 0, 0, 0, 0, 0, 0, 1810, 0, 0, 0, - 4742, 0, 1811, 0, 0, 0, 0, 0, 0, 0, - 4295, 4296, 4297, 0, 4298, 0, 4300, 4301, 0, 1813, - 0, 0, 0, 810, 1814, 0, 1812, 0, 4310, 4311, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1815, 1816, 0, 0, 4319, - 0, 0, 0, 0, 0, 1803, 1973, 1973, 1804, 1973, - 1817, 1034, 1805, 1806, 1807, 0, 0, 191, 0, 1032, - 0, 4327, 0, 0, 0, 0, 0, 0, 0, 1808, - 0, 0, 3793, 0, 0, 0, 0, 1810, 0, 0, - 0, 0, 1818, 1811, 0, 0, 833, 0, 0, 0, - 1032, 0, 0, 0, 0, 1819, 0, 0, 1820, 0, - 0, 0, 0, 192, 0, 0, 833, 1812, 0, 0, - 810, 1032, 0, 0, 0, 0, 0, 193, 833, 0, - 0, 4373, 1813, 0, 0, 0, 1032, 1814, 0, 0, - 0, 0, 0, 0, 0, 194, 0, 0, 0, 0, - 0, 195, 4392, 0, 0, 0, 833, 0, 1815, 1816, - 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, - 1034, 0, 833, 1817, 0, 0, 0, 0, 197, 1032, - 0, 0, 4416, 0, 0, 0, 198, 833, 1821, 0, - 833, 0, 0, 0, 0, 0, 0, 0, 199, 0, - 0, 0, 810, 200, 0, 1818, 0, 0, 0, 201, - 0, 0, 0, 0, 0, 0, 0, 0, 1819, 0, - 0, 1820, 0, 1813, 0, 0, 202, 0, 1814, 0, - 0, 810, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1815, - 1816, 203, 0, 0, 0, 0, 1973, 0, 0, 810, - 810, 810, 0, 810, 1817, 0, 0, 0, 1032, 0, - 0, 1973, 204, 0, 0, 0, 0, 0, 0, 0, - 0, 1822, 0, 810, 1823, 1824, 1825, 0, 1826, 1827, - 1828, 1829, 1830, 1831, 0, 0, 1818, 0, 0, 0, - 0, 1821, 0, 0, 205, 0, 0, 833, 0, 1819, - 1803, 0, 1820, 1804, 1032, 833, 833, 1805, 1806, 1807, - 0, 0, 0, 0, 810, 1958, 206, 0, 0, 0, - 3739, 0, 0, 0, 1808, 0, 207, 0, 0, 4517, - 0, 0, 1810, 0, 0, 0, 0, 0, 1811, 0, - 0, 0, 0, 0, 810, 0, 0, 0, 810, 810, - 4526, 0, 0, 208, 0, 4531, 4532, 0, 209, 0, - 210, 0, 1812, 0, 1034, 0, 211, 0, 0, 212, - 1958, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1821, 0, 1822, 0, 0, 1823, 1824, 1825, - 0, 1826, 1827, 1828, 1829, 1830, 1831, 213, 214, 0, - 4584, 215, 0, 0, 0, 216, 0, 0, 0, 0, - 0, 0, 0, 0, 217, 0, 0, 0, 0, 218, - 0, 0, 0, 0, 0, 0, 0, 0, 1032, 0, - 1034, 219, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 220, 0, 3413, 0, 0, 0, - 0, 0, 0, 4625, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1034, 1813, 0, - 0, 0, 0, 1814, 0, 1822, 0, 0, 1823, 1824, - 1825, 0, 1826, 1827, 1828, 1829, 1830, 1831, 1973, 0, - 0, 0, 0, 0, 1815, 1816, 0, 0, 0, 1973, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1817, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4661, 0, 0, 0, 0, 833, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1032, 0, 0, 0, - 0, 1818, 0, 0, 4677, 0, 0, 1034, 0, 0, - 0, 0, 0, 4684, 1819, 0, 0, 1820, 0, 0, - 0, 0, 1034, 0, 1032, 0, 0, 0, 0, 0, - 1034, 0, 0, 0, 1973, 0, 1958, 0, 0, 0, - 0, 1034, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 833, 0, 0, - 0, 833, 1032, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 833, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1034, 0, - 0, 0, 0, 0, 0, 810, 0, 1821, 0, 0, - 0, 1034, 0, 0, 0, 0, 0, 810, 0, 0, - 0, 0, 0, 1034, 0, 1032, 0, 3413, 0, 1032, - 1032, 0, 0, 0, 0, 1034, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1973, - 0, 0, 0, 0, 810, 0, 833, 833, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 833, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1034, - 0, 0, 1034, 4799, 833, 833, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 833, 0, 4811, 0, - 1822, 0, 0, 1823, 1824, 1825, 0, 1826, 1827, 1828, - 1829, 1830, 1831, 0, 0, 0, 0, 0, 0, 0, - 0, 1032, 0, 0, 0, 0, 0, 0, 810, 0, - 0, 0, 0, 0, 0, 4833, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 810, 0, 810, 0, 0, 0, 0, 810, - 810, 0, 0, 0, 0, 0, 810, 810, 810, 0, - 0, 0, 810, 0, 810, 810, 810, 810, 810, 810, - 0, 810, 0, 810, 810, 0, 0, 810, 0, 0, - 0, 0, 0, 0, 0, 0, 4881, 0, 0, 0, - 0, 1034, 810, 810, 810, 810, 1958, 0, 0, 0, - 810, 0, 0, 0, 810, 0, 0, 810, 0, 0, - 810, 810, 810, 810, 810, 810, 810, 810, 810, 0, - 810, 0, 4899, 0, 0, 557, 0, 810, 0, 810, - 558, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 559, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 560, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 561, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 0, 0, 0, - -788, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 563, 0, - 0, 0, 0, 0, 564, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 565, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 566, 0, 0, 0, 0, 0, 606, 0, 567, - 0, 0, 607, 0, 0, 0, 0, 810, 0, 0, - 0, 568, 0, 0, 608, 0, 0, 0, 569, 0, - 0, 0, 570, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 609, 0, 0, 0, -993, - 0, 0, 0, 0, 0, 0, 0, 0, 610, 0, - 0, 0, 0, 0, 0, 0, 1034, 0, 0, 0, - 1034, 1034, 611, 0, 0, 0, 0, 0, 0, 0, - 833, 0, 0, 0, 1958, 833, 571, 0, 0, 833, - 612, 0, 0, 0, 0, -528, 0, 833, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 613, 0, 0, 833, 0, 0, 810, 0, - 0, 0, 0, 614, 0, 0, 0, 572, 0, 810, - 573, 615, 0, 1034, 0, 0, 810, 0, 0, 0, - 0, 0, 0, 616, 0, 1034, 0, 0, 617, 574, - 0, 0, 0, 0, 618, 0, 0, 0, 833, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -422, 0, - 0, 619, 0, 0, 0, 0, 833, 833, 0, 0, - 0, 0, 0, 0, 0, 1034, 575, 0, 0, 0, - 0, 0, 0, 576, 0, 0, 0, 0, 0, -422, - 0, 0, 577, 0, 0, 0, 0, 1958, 833, 0, - 0, 1958, 0, 0, 0, 0, 0, 620, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -422, 0, 0, 578, 579, 0, 580, 581, 0, - 833, 0, 0, 0, 833, 0, 0, 582, 0, 621, - 0, 0, 583, 0, 0, 0, 0, 0, 584, 0, - 622, 585, 833, 0, 586, 0, 0, 0, 0, 0, - 0, 623, 0, 833, 0, 0, 0, -422, 0, 0, - 0, 207, 0, 0, 0, 0, 833, 0, 0, 0, - 0, 0, 0, 0, 833, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 624, 0, - 0, 0, 0, 625, 0, 626, 0, 0, 0, 0, - 0, 627, 0, 0, 628, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 810, - 1034, 0, 0, 0, 0, 0, 0, 0, 1958, 0, - 0, 0, 0, 629, 0, 0, 630, 0, 0, 0, - 631, 0, 0, 0, 0, 0, 0, 632, 0, 633, - 0, 0, 0, 0, 634, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 635, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 636, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1034, 0, 0, 0, 833, 0, 0, 0, 0, 0, - 0, 0, 0, 810, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 833, 0, 0, 0, - 0, 810, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 895, 0, - 0, 0, 0, 896, 0, 0, 0, 0, 0, 0, - 0, 0, 833, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1034, 0, - 833, 0, 0, 0, 0, 0, 897, 0, 833, 0, - 0, 0, 810, 0, 0, 1034, 0, 0, 810, 898, - 899, 0, 0, 0, 0, 0, 1034, 0, 0, 900, - 0, 0, 0, 901, 0, 0, 810, 0, 0, 0, - 0, 810, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 902, 0, 0, 0, 0, 834, 0, 0, 0, - 0, 0, 0, 834, 810, 810, 810, 0, 0, 810, - 0, 0, 0, 903, 834, 0, 0, 810, 810, 810, - 810, 0, 0, 0, 904, 1958, 0, 0, 0, 0, - 810, 1958, 905, 810, 0, 810, 0, 0, 0, 0, - 0, 0, 0, 0, 906, 0, 810, 810, 0, 907, - 810, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 810, 0, 810, 0, 810, 0, - 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 810, 0, - 0, 0, 0, 0, 0, 0, 0, 909, 0, 810, - 0, 810, 810, 810, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 833, 0, 910, 810, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 810, 0, 0, 0, 0, 810, 0, 0, 0, - 0, 0, 810, 0, 0, 0, 0, 0, 0, 0, - 911, 0, 810, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1034, 0, - 0, 1034, 912, 1034, 0, 0, 0, 0, 1034, 0, - 833, 0, 207, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 833, 833, 0, 0, - 0, 0, 810, 0, 0, 0, 0, 0, 0, 913, - 0, 0, 0, 0, 914, 0, 915, 0, 0, 0, - 0, 0, 916, 833, 0, 917, 833, 0, 0, 1034, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1034, 0, 0, 0, - 0, 0, 0, 0, 918, 0, 0, 919, 0, 0, - 0, 920, 0, 0, 0, 0, 0, 0, 921, 0, - 922, 1034, 0, 0, 0, 923, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 924, 0, 0, 0, 0, 0, 1958, 1958, 1958, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 833, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1034, 0, 1034, 833, 0, 1958, 0, 0, 833, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 833, 0, - 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, - 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, - 0, 0, 0, 1034, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 834, 0, 0, 0, 0, 0, 834, - 0, 0, 833, 0, 0, 0, 0, 0, 1034, 0, - 834, 0, 0, 0, 0, 0, 0, 0, 834, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1034, 0, 0, 0, 0, 0, - 1958, 1034, 0, 0, 0, 0, 0, 833, 0, 833, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 833, 0, 833, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1034, 0, 0, 0, 0, 0, 834, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 833, 1034, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1034, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 833, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 810, 0, 0, 833, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 833, 0, 0, 833, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 810, 0, 0, 1034, 0, 0, 0, 0, 0, - 810, 0, 0, 0, 0, 0, 810, 0, 810, 0, - 0, 810, 0, 0, 0, 1034, 810, 810, 810, 810, - 0, 0, 810, 810, 810, 810, 810, 810, 810, 810, - 810, 810, 0, 0, 0, 810, 810, 0, 0, 0, - 1034, 0, 0, 0, 0, 810, 0, 0, 0, 810, - 0, 1958, 0, 810, 0, 0, 0, 0, 0, 0, - 0, 810, 0, 0, 810, 0, 810, 0, 0, 0, - 0, 0, 0, 0, 1034, 810, 0, 0, 810, 810, - 0, 0, 0, 810, 810, 0, 0, 0, 0, 0, - 810, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 810, 0, 810, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 810, 0, 0, 0, 0, 0, - 810, 810, 810, 0, 0, 0, 0, 0, 0, 0, + 622, 183, 1511, 173, 879, 1358, 174, 176, 987, 707, + 1768, 1291, 845, 695, 739, 786, 1788, 1287, 796, 695, + 2032, 183, 558, 2302, 1108, 1144, 1145, 1146, 1698, 612, + 1376, 1150, 1023, 1516, 694, 1728, 2213, 2139, 1320, 880, + 694, 3308, 3149, 3463, 1321, 1021, 1558, 604, 2205, 1332, + 2758, 2225, 3571, 1570, 1824, 1688, 1689, 2361, 1704, 178, + 828, 1637, 887, 2455, 1305, 1697, 3483, 3551, 3172, 701, + 657, 669, 773, 2626, 2037, 907, 3815, 2032, 1121, 4010, + 4047, 2214, 3595, 740, 3597, 3720, 4046, 3785, 2991, 3289, + 64, 3937, 3456, 770, 3712, 3769, 4084, 2826, 2828, 1091, + 3040, 3074, 3712, 3454, 3455, 972, 2242, 4437, 4041, 3496, + 1610, 3743, 1102, 1437, 1615, 4286, 3968, 1099, 790, 1619, + 1115, 4289, 2588, 4295, 2037, 4230, 3799, 3985, 2763, 1629, + 2659, 1510, 4579, 834, 836, 4279, 3475, 840, 2323, 1536, + 1467, 798, 2689, 1653, 4643, 3394, 4695, 733, 2198, 1563, + 2475, 73, 4581, 75, 767, 894, 76, 1033, 77, 78, + 100, 2531, 904, 119, 799, 2112, 1023, 124, 4278, 148, + 152, 171, 177, 3782, 784, 759, 4543, 1433, 1351, 1298, + 3502, 4702, 1685, 1686, 4655, 2070, 4657, 1320, 2327, 2328, + 4812, 2037, 1354, 1696, 4024, 4823, 3447, -1844, -2190, 3983, + 677, 3988, 3905, 2339, -1811, 4973, -2316, 677, -2352, -2246, + 1649, 1675, 4435, -2375, 568, -2406, 2038, 1622, 677, -2218, + 4724, 912, 1688, 1689, 4580, -1824, 2226, -2218, -2218, 1406, + -1849, 4905, 3351, 1650, 2825, 1126, 618, 2334, 1675, 3162, + 1704, 1675, 1697, 3139, 4890, 4891, -2219, 2216, 3447, -2567, + -1839, 2216, 4920, 2216, -2219, -2219, 1398, -2567, -2567, 2452, + 1179, 2321, 3306, 618, 900, 2598, 1719, 618, 1879, 618, + 618, 2751, 2416, -2189, 1809, 3501, 1606, 3805, 3717, 2697, + 3293, 3449, 3737, 4698, 618, 1675, 2556, 618, 3106, 3552, + 3107, 1914, 1598, -2319, 3111, 4322, 4323, 1885, 4325, 4326, + 4327, 3122, 677, 3116, 3117, 3118, 3767, 4240, 3097, 2399, + 1464, 677, 2243, 3327, 618, 677, 913, 2123, -2187, 1130, + 4733, 4734, 179, -1852, 2151, 1675, 2408, 2872, 1887, 4758, + 1157, 3790, 5084, 3449, 2152, 1322, 1141, 1407, 2145, 853, + 1685, 1686, 179, -1852, 1675, 4792, 3260, 888, 3262, 3140, + 5210, 3858, 1929, 1464, 618, 2464, 793, 4228, 677, 914, + 908, 1156, 3, 4, 1399, 1148, 2739, 1696, 683, 1295, + 683, 683, 1675, 785, 2216, 683, 4763, 683, 4833, 2465, + 4701, 4723, 1761, 3750, 3649, 4538, 3086, 3251, 4123, 2056, + 1921, 684, 1548, 684, 684, 3351, 4870, 4241, 684, 1770, + 684, 2783, 5106, 2049, -132, 1879, 1347, 3068, 3297, -132, + 3575, 1464, 618, 2946, 2697, 915, 677, 2356, 2299, 1300, + -2373, 1879, 880, 2216, 843, 4992, 3351, 1317, 2453, -2190, + 2357, 1318, 2561, 2217, 1885, 4902, 4097, 4814, 3069, 981, + 1925, 1570, -2081, 4866, 2732, 991, 1879, 2216, 1149, -2081, + 1885, 2733, -2100, 4813, 2039, 683, 2358, 1922, 1005, -2100, + 1930, 2244, 1127, 1129, 1131, 1887, 2557, 1133, 1134, 1135, + 2578, 2947, 4444, 2286, 880, 1885, 1349, 1140, 684, 4242, + 1676, 1887, 2153, 2057, 3298, 2784, 2216, 5211, 2245, 776, + 3294, 1714, 4124, 1323, 1549, 1324, 3859, 4539, 1675, 2558, + 2740, 1726, 1726, 1142, 1675, 797, 1887, 1676, 2409, -424, + 1676, 2246, 1845, 2247, 1529, 1400, 1023, 1317, 970, 2227, + 2154, 1318, 973, 1873, 3141, 3552, 1872, 3123, 618, 1752, + 2228, 4888, 2229, 1023, 2241, 2305, 998, 2401, 3100, 4229, + 4893, 1474, 3751, 1003, 4834, 1528, 1736, 977, 2241, 2340, + 958, 1919, 1047, 1401, 1676, 3460, 4106, 1408, 1915, 4945, + 1810, 2466, 2911, 1074, 3738, 3637, 2322, 1726, 2986, 1149, + 183, 1149, 960, 3712, 1931, 961, 962, 2341, 1772, 1569, + 3498, 1607, 1933, 1607, 1402, 2623, 2695, 1945, 1945, 2454, + 2230, 5164, 5152, 2579, 1676, 1023, 5042, 4140, 3697, 3698, + 5242, 1810, 5115, 1022, 622, 1806, 1317, 2628, 1828, 3142, + 1318, 2335, 1683, 1676, 2698, 2045, 1409, 4357, 955, 1122, + 2873, 1816, 3806, 2417, 4243, 5085, 1677, 2037, 963, 786, + 1188, 3098, 569, 3351, 2089, 1359, 1825, -2568, -2568, -2568, + 4051, 1676, 1607, 2146, 2297, 3985, -2373, 2300, 1403, 689, + 690, 4385, 2182, 1705, 2045, 4389, 1723, 2307, 1317, -1844, + -2190, 2552, 1318, 4914, 3245, 183, 1687, 689, 690, 4991, + 1123, 4239, 1128, 2037, 1132, 2562, -2316, 4985, -2352, -2246, + 1136, -2218, 3517, -2375, 3366, -2406, 4285, 1691, 2660, 3650, + 4244, 694, -1849, 694, 2184, 694, 2678, 844, 1114, 1161, + 2047, 694, 1137, 1138, 2192, 2360, 2535, 1139, -2219, 4331, + 2259, -2567, -1839, 1023, -2373, 2275, 1117, 4376, 5186, 4378, + 1906, 1023, 1023, 5195, 982, 1180, 1927, -2373, 4424, 1875, + 982, 1917, 2766, 1288, 2511, -2189, 1297, 1022, 1299, 1587, + 1734, 2081, 5068, 982, 4261, 798, 4887, 2560, 1582, 3414, + 1699, 689, 690, 1325, 4614, 2082, 2570, 2316, 1152, 1754, + 689, 690, 4073, -2319, 1465, 1466, 2201, 1676, 799, 2787, + 1699, 1700, 4445, 1676, 880, 5157, -2081, 2287, 2734, 4319, + 2290, 2291, 1580, 2580, 2912, 1701, -2100, 1757, 5161, 1542, + 183, 1700, 173, 777, 1575, 174, 176, 4003, 1481, 5246, + 4577, 4110, 4520, 2581, 2930, 1703, 5135, 1465, 1466, 3547, + 1472, 1473, 1307, 1464, 618, 2032, 2902, 3761, 677, 3782, + 978, 3504, 1152, 3505, 733, 1158, 1160, 2446, 1328, 3646, + 1489, 1543, 2392, 618, 4204, 3295, 1075, 3072, 2493, 2494, + 2978, 5107, 3361, 3362, 3363, 3364, 3365, 3366, 178, 4419, + 4164, 1362, 2717, 1490, 2886, 563, 5278, 2830, -132, -132, + 5109, 2987, 2370, 4203, 4032, 1465, 1466, 1380, 1901, 1902, + 1903, 1904, 1905, 1906, 694, 3363, 3364, 3365, 3366, 64, + 793, 3447, 4901, 5232, 3447, 1294, 2758, 2758, 2758, 1302, + 3357, 179, 2903, 1413, 1347, 1903, 1904, 1905, 1906, 1595, + 2267, 5249, 5250, 2837, 1333, 1773, 1482, 4216, 1775, 2447, + 1777, 5094, 1779, 1726, 1781, 863, 2265, 2193, 1785, 3851, + 565, 2198, 864, 865, 866, 2968, 613, 1391, 1620, 1621, + 2133, 3572, 5108, 3348, 3349, 2315, 3691, 3692, 3368, 2512, + 73, 4641, 75, 2975, 1567, 76, 1381, 77, 78, 100, + 4804, 4022, 119, 5208, 1662, -1811, 124, 2490, 148, 152, + 171, 177, 4601, 3447, 1349, 5188, 3449, 3619, 2999, 3449, + 1380, 1521, 5171, 2302, 4217, 3398, 3399, 2969, 5261, 2274, + 4138, 5187, 4047, 1641, 4300, 2718, 179, 785, 2468, 5294, + 2719, 719, 1544, 2572, 1741, 4047, 4266, 4882, 1382, 5122, + 2636, 4046, 618, 1726, 704, 1350, 2135, 2194, 733, 1158, + 2376, 3816, 1522, 2563, 4165, 4845, 2845, 3044, 4034, 4619, + 4267, 3499, 1523, 5218, 2136, 1642, 2720, 1730, 1732, 3690, + 4254, 5055, -1811, 3466, 1726, 2979, 1742, 3073, 1308, 3573, + 619, 2133, 4946, 5245, 4912, 3296, 2266, 4913, 3449, 1381, + 4420, 3548, 2377, 2831, 3539, 1581, 2832, 1483, 2906, 2134, + 3011, 2567, 2568, 4647, 4644, 4914, 2970, 3722, 4651, 1607, + 1668, 4653, 1710, 1698, 720, 3620, -2568, -2568, -2568, 3996, + 3361, 3362, 3363, 3364, 3365, 3366, 5286, 1022, 3471, 3217, + 3011, 1545, 1383, 1406, 800, 1484, 3540, 791, 1607, 5056, + 2622, 1382, 2625, 2637, 1022, 3137, 1309, 2448, 2632, 797, + 3155, 179, 1568, 3725, 2646, 2647, 2648, 2135, 4966, 1175, + 2449, 2537, 3709, 183, 2664, 2666, 1485, 2887, 4990, 2676, + 3709, 5219, 3817, 694, 618, 2136, 1873, 4999, 1812, 3012, + 1774, 4997, 1776, 1711, 1778, 2122, 1780, 3815, 1782, 1783, + 1784, 4965, 4987, 4047, 4883, 1786, 2492, 4573, 2559, 792, + 2721, 4430, 2564, 2137, 2566, 5172, 1022, 2569, 3727, 3012, + 1524, 5123, 5192, 5193, 2638, 3473, 801, 1121, 4568, 1454, + 2847, 5238, 2514, 1669, 2805, 4986, 1643, 4947, 4602, 4953, + 614, 4035, 3013, -1811, 2525, 1383, 4011, 1743, 4036, 4118, + 186, 1407, 4268, 1712, 1525, 2530, 1713, 4459, 1526, 2529, + 2488, 1710, 3447, 2378, 3818, 4846, 1486, 3812, 2798, 2544, + 786, 1497, 3013, 721, 1547, 2971, 3621, 3487, 1645, 793, + 1548, 4037, 3574, 3575, 2639, 708, 1670, 2640, 2147, 1527, + 1498, 5173, 1874, 187, 1388, 615, 1389, 3014, 1384, 1646, + 1317, 1876, 4038, 4529, 1318, 1385, 4012, 3541, 3730, 3576, + 2848, 3488, 722, 723, 3622, 1918, 5174, 1465, 1466, 2138, + 2464, 5220, 3156, 2652, 2137, 2902, 5221, 3014, 4774, 4885, + 2043, 616, 1711, 617, 1022, 1644, 1386, 1935, 1936, 1499, + 35, 4218, 1022, 1022, 2465, 3623, 1744, 3449, 2413, 4840, + 3731, 2050, 2051, 4119, 2055, 3058, 5280, 1714, 5116, 2574, + 4954, 3059, 2379, 912, 880, 3732, 694, 1387, 566, -155, + 2799, 694, 694, 4423, 799, 799, 5239, 799, 4775, 4862, + 2916, 1671, 1549, 4003, 4988, 719, 4776, 912, 2641, 4408, + 2797, 4401, 1712, 4582, 3015, 1713, 2705, 1388, 2706, 1389, + -2209, 2903, 2806, 724, -155, 2059, 3542, 4583, 1476, 3819, + 794, 869, 870, 871, 4777, 872, 873, 874, 875, 876, + 877, 2707, -672, 1500, 3015, 745, 4317, -1811, 2148, 3384, + 2138, -155, 4955, 1672, 3001, 3391, -1811, 802, 1687, -1811, + 1375, 2575, -1811, 4904, 2060, 3026, 2236, 1390, 4908, 4909, + 2251, 717, 4266, 1647, 4120, 677, 3733, 4817, 913, 1362, + 2414, 186, 4641, 3060, 1715, 4818, 40, 3157, 720, 3447, + 2917, 1501, 4708, 3447, 1502, 3820, 4267, 1477, 694, 3198, + 4778, 5194, 913, 1716, 4219, 2301, 5196, 2141, 694, 3712, + 2418, 4779, 1013, 4047, 179, 2642, 1714, 1341, 2928, 5039, + 44, 914, 2061, 3002, 187, 3975, 3248, 4803, 744, 3016, + 1454, 1489, 3158, 2177, 2149, 2142, 1504, 3017, 2292, 3258, + 3018, 1513, 2708, 1673, 746, 914, 4555, 2709, 1137, 1138, + 2059, 3645, 2710, 1550, 1490, 2329, 2330, 2331, 2332, 3016, + 48, 2660, 2660, 663, 5046, 5047, 2660, 3017, 2062, 2306, + 3018, 1937, 5244, 49, 3449, 2311, 718, 915, 3449, 1514, + 1506, 694, 1833, 14, 694, 694, 3249, 2906, 2243, 2060, + 4222, 1551, 4584, 4791, 3025, 3564, 50, 3976, 2371, 2372, + 1507, 915, 1842, 2660, 2660, 2523, 3563, 2513, 2302, 1023, + 2807, 3004, 3005, 1938, 4260, 3008, 1342, 19, 2486, 2396, + 1509, 5113, 1552, 1715, 2063, 4255, 2423, 3048, 3977, 1304, + 3067, 2127, 5279, 1858, 3061, 4460, 3871, 721, 3027, 880, + 880, 4464, 2128, 3978, 768, 4819, 3030, 1391, 1870, 3033, + 2318, 2902, 1391, 3979, 2441, 2442, 2443, 2444, 3070, 2129, + 3092, 3019, 4441, 2758, 5293, 3565, 694, 5295, 3, 4, + 2293, 3709, 3062, 2294, 779, 2143, 722, 723, 5100, 3980, + 4194, 803, 1515, 1014, 4197, 4198, 2711, 4200, 2433, 3071, + 1714, 4780, 2438, 2062, 2324, 4136, 2712, 2589, 40, 3885, + 3886, 3887, 3888, 3063, 2424, 3893, 3894, 3895, 3896, 3897, + 3898, 3899, 3900, 3901, 3902, 1391, 4760, 2842, 3169, 1391, + 3651, 4054, 1058, 1879, 5170, 3647, 4108, 2903, 663, 4442, + 3019, 4303, 44, 4304, 2925, 797, 797, 2244, 797, 1015, + 583, 3181, 3182, 3183, 3184, 1016, 1058, 1308, 14, 2063, + 3840, 4047, 583, 3189, 896, 1385, 3064, 880, 3168, 2904, + 3850, 3941, 3942, 3981, 2245, 4948, 2347, 2536, 3403, 788, + 3404, 4972, 48, 2540, 2491, 2142, 1538, 3178, 4996, 2233, + 1726, 897, 19, 1887, 2499, 49, 2500, 2246, 32, 2247, + 35, 2859, 2504, 3405, 3065, 3648, 4109, 2905, 585, 2510, + 4055, 3851, 2130, 4707, 3523, 4523, 4213, 2278, 50, 741, + 585, 2234, 2281, 2243, 1539, 1309, 40, 2277, 1540, -572, + 4969, 1497, 51, 5113, 2241, 3066, 5229, 1365, 1175, 3235, + 4214, 3889, 4613, 3890, 183, 4832, 4524, 4983, 1377, 829, + 1498, 2422, 4086, 1371, 4736, 1541, 40, 2860, 846, 2439, + 44, 4544, 789, 583, 4335, -1606, 4336, 4056, 2546, 4057, + 2547, 2347, 2548, 4732, 2549, 1366, 2550, -1606, 4054, 3211, + 2551, 2595, -1606, 5007, 3009, 2344, 1378, 1372, 2252, 2350, + 44, 1373, 841, 677, -449, 1117, 183, 4894, 960, 1499, + 48, 961, 962, 2906, 3447, 4545, 1367, 2645, 4897, 3406, + 2700, 3447, 186, 49, 3407, 2399, 3447, 1379, 3470, 3447, + 4440, 585, 1374, 2243, 3282, 4087, 1006, -1606, 2511, 2353, + 48, 3815, 3791, 2634, 2635, 3795, 50, 2948, 2855, 2583, + 2649, 2650, 4542, 4794, 839, 3447, 2515, -1606, 2292, 2594, + 51, 4684, 1607, 4686, 963, 187, 3880, 4055, 3447, 1007, + 4828, 3044, 2619, 32, 596, 2859, 597, 3891, 2688, 2347, + 4448, 4449, 2244, 1023, 4553, 3452, 596, 3892, 597, 1494, + 51, 4572, 4729, 1500, 862, 3906, 3229, 4795, -1606, 3449, + 1623, 40, 1008, 5120, -1076, 2949, 3449, -1606, 2767, 2245, + 4337, 3449, 602, 2233, 3449, 4730, -449, 3281, 3350, 5014, + 4938, 861, 1518, 5096, 4056, 4939, 4057, 1495, 4559, 3498, + 3378, 3520, 2246, 1757, 2247, 44, 1023, 902, 3975, 2913, + 3449, 1501, 1578, 576, 1502, 2234, 4560, 5015, 1009, 3269, + 3976, 1006, 2420, 3449, -1606, 2301, 911, 3461, 3408, 2892, + 1519, -1605, 3401, 2354, 965, 1593, -1606, 4978, 3409, 2241, + 2888, -1606, 683, -1605, 4940, 48, 2457, 3616, -1605, 664, + 1604, 3977, 2244, 1699, 1007, 5006, 1504, 596, 49, 597, + 2293, 1520, 4212, 2294, 880, 684, 4391, 4533, 4052, 4979, + 3427, 2355, 5049, 968, 1700, 2221, 3979, 2222, 3503, 2245, + 3976, 50, 1489, 1623, 971, 3617, -1606, 3763, 1701, 1347, + 2880, 4498, 692, -1605, 1348, 665, 3447, 583, 692, 3605, + 1506, 974, 2246, 1699, 2247, 1490, -1606, 1945, -1606, 3553, + 2789, 3977, 3606, -1605, 4499, 4976, 3618, -1642, -1070, 3770, + 1507, 2924, -1642, 2243, 1700, 3186, 3978, 5183, 988, 3780, + 3187, 694, 3464, 1009, 3580, 2223, 3979, 4729, 1703, 2241, + 1509, 1001, 4597, 1188, 4729, 179, 3351, -1606, 4096, 3917, + 3352, 3353, 3354, 1328, -1605, 585, -1606, 3447, 1025, 1349, + 4730, 712, 3980, -1605, 2882, 2883, 2849, 4730, 2852, 1651, + 1022, 1749, -571, 2894, 4513, 2896, 4514, 4515, 2846, 2900, + 4516, 3449, 4166, 4648, 2758, 1757, 3981, -1642, 713, 2758, + 1699, 1652, 714, 1750, 3010, 2758, 3412, 179, 1010, 694, + 1350, 3173, 1497, 2809, 4167, 3721, 5241, 791, 2623, 3556, + 3187, 1700, 966, 4183, 3377, 1492, 3379, 3380, 4074, -1643, + 5038, 1498, 4082, 5154, -1643, 4935, 5281, 4937, -1642, 2988, + 2216, 4941, 1555, 4942, 4184, 1559, 3250, 3252, 3253, 1299, + 2224, 1023, 3449, 3861, 1813, 1011, 3981, 2660, 2660, 2660, + 2660, 4262, 1012, 2660, 2660, 2660, 2660, 2660, 2660, 2660, + 2660, 2660, 2660, 3089, 829, 1763, 5271, 1030, 1764, 792, + 1499, 2703, 2244, 4111, 846, 3512, 1694, 1695, 4977, 4688, + 3915, 2243, 4088, 3611, 4095, 1082, 4697, -1606, 2910, -1643, + 2818, 1073, 1818, 2682, -1605, 1819, 2685, 3447, 3028, 2245, + 3766, 3031, 3323, 2794, 2795, 3828, 3829, 2045, 2834, 2660, + 2660, 596, 3508, 597, 2838, 2623, 1083, 1687, 2841, 2113, + 3355, 3324, 2246, 599, 2247, 4416, 3325, 1096, 4649, 2243, + -1643, -1666, -1666, 4091, 601, 223, 3739, 1623, 4031, 793, + 567, 3356, 1089, 1687, 2865, 2113, 1112, 4288, 661, 1317, + 1023, 1103, 1337, 1318, 1500, 3447, 677, 2041, 2044, 2241, + 2042, 2045, 694, 3530, 3509, 3510, 2975, 742, 4107, 3105, + 694, 2541, 2553, 694, 2045, 2554, 1143, 3112, 3113, 1152, + 1152, 1151, 3449, 1152, 3115, 3084, 3447, 3644, 2918, 40, + 2999, 2555, 2586, 2780, 2554, 2587, 1757, 979, 3131, 980, + 1165, 2817, 1501, 3357, 2045, 1502, 982, 3044, 3102, 2922, + 5268, 3102, 2923, 3102, 3722, 2993, 2301, 3102, 2994, 3127, + 3723, 3718, 3128, 44, 3458, 3459, 3102, 3102, 3102, 1147, + 2244, 2243, 3724, 1154, 3132, 4785, 1162, 3133, 2966, 3177, + 3449, 3236, 3275, 2243, 2045, 2554, 3322, 1504, 3331, 2045, + 983, 2045, 984, 4049, 4050, 2243, 3337, 2245, 1166, 2045, + 3725, 4741, 3726, 48, 2995, 3707, 179, 3200, 1172, 1164, + 794, 3449, 3006, 3707, 1174, 1175, 49, 3217, 2244, 982, + 2246, 3315, 2247, 3021, 3180, 4273, 3338, 4593, 1176, 2045, + 5227, 1506, 3339, 4737, 3447, 2045, 1177, 3370, 3383, 50, + 2045, 2045, 1173, 3034, 4742, 2245, 3388, 3598, 3036, 3389, + 3599, 1507, 3039, 51, 1181, 3727, 3212, 2241, 3174, 3632, + 1687, 3259, 1375, 3261, 1022, 3056, 1152, 3709, 2246, 4743, + 2247, 1509, 3311, 1832, 3640, 51, 5252, 3652, 3081, 1178, + 3603, 3728, 1182, 3604, 3627, 5151, 4744, 3628, 982, 3684, + 4745, 3803, 3756, 2481, 3804, 2482, 2263, 3826, 2243, 3912, + 2045, 4075, 3913, 829, 3922, 2241, 1184, 3923, 3933, 4020, + 4746, 2045, 4021, 4747, 846, 3244, 3246, 1022, 2511, 3449, + 2244, 3254, 3199, 4025, 1306, 4030, 4026, 4748, 2832, 3358, + 3359, 3360, 2244, 3361, 3362, 3363, 3364, 3365, 3366, 4053, + 3729, 1687, 2554, 2113, 2244, 3730, 4263, 2245, -2473, 2554, + 880, 4314, 1303, 1023, 1810, 1023, 1310, 1312, 4332, 2245, + 2660, 2045, 3854, 3320, 3447, 1311, 3740, 3204, 3742, 3205, + 2246, 2245, 2247, 4358, 4370, 5303, 2587, 2045, 694, 3428, + 1316, 3429, 2246, 28, 2247, 4426, 1329, 3731, 2832, 4824, + 4205, 1335, 4206, 1665, 2246, 3867, 2247, 1334, 2365, 3430, + 1570, 3431, 3732, 4432, 4112, 1345, 4433, 2241, 4749, 4096, + 1337, 4616, 3749, 2380, 3752, 4438, 4750, 3882, 2554, 2241, + 1360, 3474, 786, 4439, 4574, 4621, 2554, 4575, 4622, 1338, + 1361, 2241, 1878, 1023, 2402, 1879, 3447, 1364, -2473, -2568, + -2568, -2568, 5282, 1368, 5283, 3847, 3809, 2244, 1375, 3449, + 4623, 3911, 4631, 2045, 1411, 2587, 4703, 4751, 1337, 4704, + -1594, 3997, 3998, 3999, 1885, 4786, 786, 4825, 2554, 4841, + 4826, 1886, 2587, 40, 2245, 4457, 4849, 4859, 4865, 4850, + 1757, 3777, 4867, 4880, 4928, 3777, 4881, 4929, -2473, 2479, + 1344, 4968, 1346, 3733, 1924, 1887, 3953, 2246, 4998, 2247, + -2473, 4881, 4390, 2487, 4393, -2473, 5008, 44, 1435, 2587, + -2473, 3287, -2220, 4089, 1438, 1058, -2473, 3992, 1440, -2473, + 5009, 3449, -2473, 3389, 1441, -2475, 1474, 2501, 1479, 3301, + 1478, 40, 5010, 4572, 2241, 2045, 5021, 3287, 1480, 5022, + 5027, 4070, 703, 1757, 705, 1486, 2037, 48, 711, 1488, + -2473, 1493, 1022, 1496, 728, 736, 703, 1531, 743, 1530, + 49, 736, 736, 3860, 772, 44, 775, 2528, 1058, 1546, + -2473, 786, 3433, 3434, 3435, 5030, 2623, 5054, 3777, 3465, + 2587, 694, 183, 50, 960, 179, 5121, 961, 962, 5060, + 1556, 5061, 2587, -2489, 2587, 1557, 5064, 51, -1374, 5065, + -1374, 4381, 1560, 5066, 1888, 48, 5067, 5092, 1565, 1889, + 5093, -2473, 1566, 5139, -2473, -2475, 5140, 1571, 49, 1573, + -2473, 1574, 4189, 5143, 5197, 28, 1757, 1579, 5144, 1576, + 3535, 2045, 3536, 3537, 3538, 5145, 5147, 4201, 2045, 2045, + 963, 50, 1583, 5166, 5190, 1892, 5167, 5191, 5214, 5226, + 5251, 3777, 4873, 4881, 5289, 51, 1584, 5065, 1590, 5291, + 5306, 1022, 5292, 5140, 5313, -2475, 1591, 5292, 1594, 1597, + 1600, 1603, 1605, 1611, -2473, 1616, 1614, -2475, 1607, 1625, + 1626, 1630, -2475, -2489, 3707, 1631, -175, -2475, 1633, 1634, + 1636, 1638, 1894, -2475, 4839, 1639, -2475, 1654, 1661, -2475, + 1663, 2690, 4353, 1667, 205, 1674, 1680, 1681, 4135, 830, + 835, 835, 838, 1682, 835, 40, 1683, 1687, 847, 1691, + 772, 1690, 1693, 882, 1707, 708, 1709, -2475, 1721, 1722, + 772, 1725, 835, -2489, 1726, 772, 1733, 1737, 1745, 835, + 1738, 772, 1740, 1746, 1748, -2489, 1753, -2475, 3601, 44, + -2489, -2473, 1756, 1759, 1760, -2489, 1787, 1762, 1815, 4593, + 1820, -2489, 3474, 1829, -2489, 1830, -1815, -2489, 1878, 1822, + 3474, 1879, 1823, -1822, 1837, -2473, 1838, -2473, -2473, 1896, + 1870, 1839, 1840, 1841, 51, -1812, 1843, 1844, -2475, 48, + 1845, -2475, -1813, 1846, 1847, -2489, 1848, -2475, 1850, 3638, + 1885, 1851, 49, 1852, 1853, -1816, 1854, -2568, -1814, 1855, + 1856, 1857, 1859, -2473, 3528, -2489, -2473, -2473, -2473, 1912, + 1910, 1860, 1861, 1862, 1870, 50, 1863, 1914, 1864, 1865, + 1866, 1887, 1928, 1940, 1948, 1915, 1924, 2048, 1348, 5198, + 2077, 2703, 1350, 2079, 2088, 2092, 2090, 3688, 2091, 2108, + 2109, -2475, 2110, 2111, 2114, 2113, -2489, 3421, 2115, -2489, + 2118, 3675, 2117, 2116, 712, -2489, 2119, 2125, 2144, 2150, + 2156, 2179, 2186, 3440, 2187, 1897, 2183, 2185, -2568, -2568, + -2568, 2188, 1901, 1902, 1903, 1904, 1905, 1906, 2190, 2191, + 2206, 2207, 3102, 2208, 2219, 2220, 2231, 2235, 3400, 2237, + 2238, 2241, 708, 179, 3700, 2239, 2240, 2249, 2253, 2250, + 3711, 2255, 4549, 2270, 2254, 2260, 2261, 1878, 3711, -2489, + 1879, 2271, 3607, 2264, 1022, 3440, 1022, 4311, -2475, 785, + 5020, 2272, 2276, 2273, 2288, 2279, 2283, 2284, 2295, 694, + -2568, 2296, 2298, 2303, 2304, -2568, 1454, 694, 2313, 1885, + 1878, 2317, -2475, 1879, -2475, -2475, -2568, 2308, 2309, 2310, + 2312, 2314, 2319, 2320, 2325, 2336, 2326, 2337, 2338, 2660, + 708, 3753, 3775, 2348, 2342, 2352, 2364, 2343, 4624, 2366, + 1887, -2568, 1885, 4342, 2367, 2884, 2368, 2369, 2373, -2568, + -2475, 2374, 2385, -2475, -2475, -2475, -2489, 2899, 2375, 2381, + 2382, 2383, 2384, 3808, 1022, 2386, 2393, 4235, 4236, 4308, + 4309, 4310, 2394, 1887, 4273, 3842, 2388, 2395, 2400, 4740, + -2489, 2403, -2489, -2489, 2404, 2407, 578, 2412, 1894, 2421, + 2418, 2432, 2436, 2437, 2440, 3685, 2445, 2932, 2463, 1515, + 2456, 2459, 2462, 2478, 2480, 2472, 2484, 3411, 2495, 2497, + 2476, 2498, 3827, 2516, 829, 2489, 2505, 829, -2489, 3947, + 2506, -2489, -2489, -2489, 2518, 2519, 2520, 2502, 2503, 3798, + 2507, 2521, 2508, 2509, 2532, 2533, 2565, 2571, 2584, 2597, + 3940, 2628, 2677, 2683, 921, 1879, 4414, 2633, 2696, -2568, + 772, 3824, 830, 2702, -2568, 835, 2687, 838, 2714, 835, + 2716, 2737, 846, 846, 2736, 2751, 882, 2765, 792, 2769, + 2768, 994, 2772, 835, 2773, -2568, 1188, 2771, 2781, 3351, + 835, 2782, -2568, 3352, 3353, 3354, 2790, -2568, 2791, 694, + -2568, 2792, 2793, 2803, 2810, 2821, 2822, 2824, 2850, 2864, + 1152, 2853, 2855, 5023, 830, 2857, 2869, 2858, 2879, 838, + 2874, 2875, 2877, 2881, 847, 2897, 2898, 2889, 882, 2901, + 2914, 2920, 2885, -2568, 2915, 1300, 1304, 2931, 4463, 2936, + 2937, 2950, 2955, 2982, 2977, 2956, 846, 1894, 835, 2983, + 3928, 2992, 3020, 3076, 786, 3088, 2985, 3099, 3000, 3103, + 3108, 3114, 3095, 3096, 3109, 3110, 3119, 3125, 3126, 3134, + 3146, 3147, 3121, 786, 3161, 3165, 3167, 3176, 2347, 3179, + 1894, -2568, 3188, 3193, 3185, 3163, 3130, 3194, 1901, 1902, + 1903, 1904, 1905, 1906, 3849, 3195, 3196, 3197, 3201, 772, + 3210, 4412, 736, 736, 736, 1188, 3209, 3213, 3351, 3207, + 3214, 3474, 3352, 3353, 3354, 772, 3227, 1171, 3228, 3863, + 3232, 3230, 2660, 3231, 3234, 3955, 3956, 3957, 3958, 3930, + 3240, 3237, 3241, 3239, -2568, 3474, 3255, 1285, 1285, 1714, + 772, 736, 3265, 3267, 3268, 736, 3242, 2660, 3272, 3243, + 3274, 3247, 4065, 4066, 4067, 4068, 3256, 3277, 3278, 772, + 3279, 1757, 1754, 772, 3280, 5262, 5263, -2568, 3288, 1285, + 1723, 2598, 3290, 3291, 3292, 3299, 3302, 3307, 1149, 3309, + 772, 3316, 1188, 3319, 3356, 3351, 3314, 3313, 3333, 3352, + 3353, 3354, 772, 4558, 3317, 3334, 3335, 1878, 4500, 4501, + 1879, 4503, 179, 3336, 3347, 4455, 3931, 3340, 3341, 3343, + -2073, 3346, 3369, 3385, 3397, 3375, 2045, 3402, 3419, 4534, + 3382, 3476, 3424, 3480, 179, 3482, 3493, 3396, 3410, 1885, + -2568, 3506, 3486, 3420, 772, 3422, -2568, 1901, 1902, 1903, + 1904, 1905, 1906, 3452, 3423, 3511, 3357, 1188, 3426, 3513, + 3351, 3457, 772, 3484, 3352, 3353, 3354, 835, 835, 3711, + 1887, 3522, 3514, -2568, 3518, 2302, 3525, 3500, 3519, 3527, + 1901, 1902, 1903, 1904, 1905, 1906, 3534, 3549, 4659, 3300, + 3560, 4494, 3550, 4139, 3562, 4674, 736, 736, 694, 3566, + 4147, 3568, 3569, 4148, 3567, 4149, 3312, 4146, 3583, 3584, + 4932, 4740, 3586, 3356, 3592, 3594, 3593, 3602, 3612, 3318, + 3631, 3633, 694, 830, 3629, 3635, 1810, 3636, 694, 3639, + 3641, 3653, 3642, 3643, 847, 3655, 3656, 3943, 882, 4753, + 4207, 3657, 3658, 3659, 3662, 4188, 4210, 3660, 3661, 3674, + 3665, 3667, 3663, 3102, 3669, 3664, 835, 3102, 3102, 3666, + 3102, 3676, 3670, 3668, 4922, 3700, 4924, 3678, 2660, 4071, + 2334, 3689, 3671, 3702, 3680, 3357, 3693, 3713, 772, -2568, + 3681, 3683, 3694, 4551, -2568, 835, 835, 3696, 3716, 3748, + 3356, 3747, 3754, 3757, 3758, 3760, 3765, 3762, 1137, 1138, + 3777, 3776, 3779, 3786, 3792, 5138, 3789, 772, 772, 772, + 3793, 835, 3796, 830, 3797, 3800, 3801, 3813, 3832, 829, + -2568, 3823, 1870, 3843, 3830, 3844, 846, 3834, 3845, 3836, + 3707, 3831, 3853, 3855, 3846, 3864, 3856, 3857, 3962, 3848, + 3865, 3967, 3358, 3359, 3360, 3866, 3361, 3362, 3363, 3364, + 3365, 3366, 3357, 3868, 3874, 3356, 3869, 3870, 3372, 1878, + 1832, 3351, 1879, -2072, 4287, 3371, 3924, 1894, 3908, 3883, + 793, 3909, 3910, 3935, 3948, 3965, 3916, 3936, 3989, 4014, + 4168, 3994, 835, 4171, 835, 835, 3954, 4783, 3939, 4019, + 3966, 1885, 3974, 5076, 5078, 3991, 4007, 4004, -2568, 4006, + 4009, 5070, 4023, 4008, 4017, 4040, 4033, 4061, 4076, 4069, + 4077, 4063, 1285, 4064, 4078, 4079, 4081, 3357, 4114, 4083, + 4085, 4099, 1887, 4130, 4848, 880, 4115, 4102, 4321, 4321, + 4321, 4116, 4321, 4321, 4321, 4283, 4691, 2660, 4117, 4127, + 4128, 694, 1790, 1790, 4129, 4131, 4132, 772, 4143, 703, + 4141, 4144, 4154, 4155, -2568, 4163, 4160, 4178, 4180, 4182, + 4090, 3358, 3359, 3360, 4185, 3361, 3362, 3363, 3364, 3365, + 3366, 4193, 4843, 4192, 4195, 1821, 4196, 4220, 772, 4199, + 4248, 1827, 4209, 3532, 4714, 4223, 4232, 4252, 4253, 3944, + 4246, 4238, 4265, 2554, 1285, 4256, 4258, 4259, 4280, 2347, + 3543, 4275, 4296, 4281, 4293, 4297, 4298, 4312, 4294, 4709, + 4301, 4306, 4299, 1872, 4302, 4316, 4318, 4324, 4329, 4334, + 4344, 4338, 4345, 4346, 1285, 5277, 4339, 4343, 4347, 5168, + 4351, -2568, -2074, 4386, 4387, 4379, -2568, 4366, 3358, 3359, + 3360, 4394, 3361, 3362, 3363, 3364, 3365, 3366, 4382, 4384, + -2568, 5215, 1285, 1285, 1285, 4395, 1285, 1901, 1902, 1903, + 1904, 1905, 1906, 4399, 4400, 4402, 4403, 4413, 4409, 4422, + 4411, 3287, -2568, 4405, 5277, 4425, 1285, 4406, 4407, 4427, + 4429, 4435, 4434, 4443, 4461, 4462, 4465, 4472, 4471, 5277, + 4858, 4484, 4473, 4491, 3624, 4487, 3626, 4493, 4428, 4934, + 4504, 4858, 4512, 3358, 3359, 3360, 4525, 3361, 3362, 3363, + 3364, 3365, 3366, 4496, 772, 4497, 4526, 1285, 4531, 1894, + 4517, 4532, 4540, 4541, 4546, 4547, 4550, 4554, 4535, 4556, + 4548, 4564, 4567, 2660, 2660, 4571, 4576, 5070, 4578, 4586, + 4588, 5083, 4589, 4590, 4599, 1285, 4591, 4610, 4611, 1285, + 1285, 4604, 4617, 4618, 4620, 4625, 4627, 4628, 4415, 4417, + 772, 772, 2087, 4629, 1285, 4466, 4630, 4636, 4642, 3440, + 4645, 4652, 4672, 4679, 4656, 4682, 4685, 3673, 4696, 4705, + 4926, 4700, 694, 4706, 4711, 4735, 694, 736, 4502, 4676, + 4754, 4699, 4756, 4717, 4219, 4762, 4718, 5013, 179, 4722, + 4727, 4728, 4764, 4506, 4766, 3687, -2568, 4772, 4767, 4769, + 4773, 4481, 4482, 4770, 5029, 4789, 4485, 4486, 4790, 5031, + 4797, 5033, 2189, 4799, 4802, 4806, 4808, 736, 4815, 4816, + 4829, 4827, 4830, 1023, 4831, 4844, 4847, 4851, 4857, 4861, + 4873, 772, 2215, 4864, 4878, 4898, 4869, 4507, 4508, 4868, + 772, 4871, 4899, 835, 4877, 4889, 4905, 3102, 4949, 3102, + 3102, 829, 4956, 3102, 4896, 4911, 4951, 846, 4960, 4961, + 4963, 4970, 4975, 4982, 4981, 4989, 4993, 4994, 882, 4995, + 772, 5002, 5003, 5004, 5011, 5005, 5019, 5032, 5035, 4570, + 5036, 5012, 5041, 772, 5043, 5040, 772, 5053, 5057, 5075, + 5048, 5081, -2568, 5082, 5091, 2932, 5028, 5086, 5088, 1901, + 1902, 1903, 1904, 1905, 1906, 5095, 5098, 5099, 5125, 1878, + 5105, 5117, 1879, 4566, 5118, 5119, 1880, 1881, 1882, 5126, + 5136, 772, 5134, 3949, 5162, 4478, 3825, 5160, 5169, 5084, + 5153, 5085, 835, 835, 835, 835, 772, 4488, 5155, 5177, + 880, 1885, 5178, 5179, 5209, 5217, 5224, 4592, 1886, 5237, + 772, 5258, 5259, 4715, 5234, 5243, 5260, 5264, 5266, 5270, + 5284, 2362, 5285, 772, 5287, 4713, 3440, 5290, 5304, 5305, + 3440, 5297, 1887, 5298, 5308, 835, 835, 3474, 4321, 5307, + 5309, 5045, 1339, 3170, 3049, 2349, 3467, 2981, 880, 1439, + 3577, 4105, 4098, 1947, 4569, 5269, 835, 5163, 3087, 3701, + 4202, 3450, 4943, 5069, 5235, 4234, 4807, 4755, 4530, 4782, + 3516, 179, 179, 3276, 1023, 772, 5156, 4689, 5231, 5089, + 1878, 5087, 3875, 1879, 5248, 3521, 4284, 1880, 1881, 1882, + 5176, 835, 835, 835, 835, 4264, 5051, 4227, 3144, 3145, + 3596, 4103, 3764, 3884, 772, 1517, 4251, 4788, 4692, 4693, + 4693, 772, 1885, 3450, 2362, 3772, 5310, 3135, 4793, 1886, + 4552, 5236, 5302, 3714, 830, 4768, 3719, 830, 3907, 5181, + 4716, 4907, 838, 5059, 4719, 710, 4313, 1285, 1807, 2411, + 4884, 1888, 2827, 1887, 4290, 1817, 1889, 3507, 1602, 5000, + 2522, 1097, 2591, 1024, 2485, 2592, 3677, 4133, 4677, 2593, + 3768, 4153, 1813, 5200, 5296, 1313, 2776, 1890, 1891, 2124, + 2777, 2545, 847, 847, 4269, 4678, 4418, 5150, 4027, 1920, + 3472, 2802, 1892, 882, 882, 3711, 2074, 3481, 3287, 4005, + 3479, 5146, 5034, 4410, 2801, 4377, 2046, 3969, 4392, 4863, + 3963, 5018, 5017, 835, 835, 3964, 4028, 5299, 5216, 5265, + 835, 5137, 772, 4842, 694, 1893, 3918, 4675, 2496, 5148, + 5133, 5149, 3417, 2741, 3469, 3328, 3102, 3415, 0, 1894, + 0, 2073, 2750, 0, 0, 0, 0, 1790, 0, 2078, + 0, 0, 0, 0, 835, 2083, 847, 0, 0, 0, + 772, 772, 1888, 835, 0, 0, 0, 1889, 0, 0, + 772, 0, 4821, 0, 0, 0, 0, 772, 0, 0, + 0, 0, 703, 703, 0, 0, 2600, 0, -2568, -2568, + 1285, 0, 1285, 0, 0, 0, 0, 1285, 1285, 0, + 0, 0, 0, 1892, 1285, 1285, 1285, 3287, 0, 3287, + 1285, 882, 1285, 1285, 1285, 1285, 1285, 1285, 0, 1285, + 1023, 1285, 1285, 0, 0, 1285, 1896, 179, 0, 0, + 0, 0, 0, 0, 0, 0, -2568, 0, 0, 0, + 1285, 1285, 1285, 1285, 0, 0, 0, 835, 1285, 4787, + 1894, 0, 1285, 0, 0, 1285, 0, 0, 1285, 1285, + 1285, 1285, 1285, 1285, 1285, 1285, 1285, 786, 1285, 0, + 0, 0, 0, 0, 772, 1285, 0, 1285, 1497, 0, + 0, 0, 0, 0, 772, 0, 0, 4820, 0, 0, + 0, 0, 0, 0, 0, 0, 1878, 1498, 0, 1879, + 0, 0, 0, 0, 1414, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4923, 0, 4925, 0, 0, + 0, 0, 1897, 0, 0, 1898, 1899, 1900, 1885, 1901, + 1902, 1903, 1904, 1905, 1906, -2568, 0, 1896, 1415, 0, + 0, 0, 0, 0, 0, 0, 1499, 4090, 3440, 0, + 0, 4919, 4919, 3440, 2147, 0, 3440, 0, 0, 1887, + 0, 0, 0, 0, 1022, 880, 0, 0, 4936, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4944, 0, + 694, 694, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 694, 0, 0, 0, 1417, 0, 0, + 0, 772, 0, 772, 0, 1285, 0, 0, 0, 4091, + 0, 0, 0, 0, 0, 0, 4237, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4364, 0, 0, 0, + 1500, 1418, 0, 1897, 0, 0, 1898, 1899, 1900, 772, + 1901, 1902, 1903, 1904, 1905, 1906, 2811, 0, 2816, 0, + 0, 0, 0, 0, 2601, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1419, 0, -2568, 0, + 4693, 0, 0, -2568, 0, 0, 0, 0, 1501, 838, + 0, 1502, 0, 0, 0, 0, 0, 0, 703, 0, + 703, 0, 2301, 0, 4092, 0, 0, 0, 0, 0, + 1420, 4984, 2602, 0, 0, 0, 0, 1285, 5159, -2568, + 0, 0, 179, 0, 0, 0, 0, 0, 0, 830, + 0, 835, 835, 1504, 0, 0, 847, 0, 882, 0, + 835, 1422, 835, 0, 2603, 0, 835, 1385, 0, 772, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 179, 0, 0, 5097, 0, 1022, 1894, 2604, 0, 5073, + 736, 5074, 0, 0, 0, 5079, 5080, 1506, 2605, 0, + 2215, 0, 35, 0, 2199, 0, 1424, 5037, 2934, 5206, + 5207, 0, 0, 1425, 0, 2945, 0, 1507, 2606, 0, + 0, 1426, 0, 2607, 772, 0, 0, 0, 1813, 2200, + 0, 0, 0, 0, 0, 0, 0, 1509, 0, 4093, + 0, 1428, 4094, 0, 3440, 772, 0, 0, 0, 1429, + 2990, 2990, 0, 0, 0, 1870, 0, 0, 0, 0, + 772, 772, 0, 0, 772, 0, 838, 736, 0, 0, + 0, 0, 2608, -2568, 0, 0, 0, 0, 0, 0, + 0, 5165, 0, 0, 0, 835, 3450, 0, 835, 3450, + 0, 0, 0, 2609, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1430, 0, 0, 0, 0, 772, + 772, 0, 0, 0, 0, 0, 0, 0, 0, 4919, + 0, 4919, 0, 0, 3075, 0, 3078, 3080, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2241, 0, 0, 0, 0, 0, 0, 0, 694, 0, + 694, 0, 0, 4447, 0, 0, 835, 0, 0, 0, + 205, 0, 0, 2610, 835, 835, 0, 0, 3450, -2568, + 0, 835, 0, 5233, 0, 0, 1901, 1902, 1903, 1904, + 1905, 1906, 0, 1285, 3440, 835, 0, 0, 0, 2611, + 0, 4468, 5311, 5312, 179, 183, 2612, 5202, 0, 2215, + 5203, 5204, 2990, 2613, 772, 4693, 4693, 772, 0, 0, + 0, 3171, 4483, 0, 703, 0, 0, 0, 0, 0, + 0, 1022, 0, 0, 0, 0, 835, 1285, 5182, 0, + 0, 2614, 5257, 0, 0, 0, 2615, 0, 0, 2616, + 0, 0, 0, 0, 3075, 0, 0, 0, 0, 0, + 0, 3287, 0, 5205, 835, 0, 3203, 2617, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, + 179, 5202, 0, 0, 5203, 5204, 0, 4509, 0, 1285, + 1878, 0, 2618, 1879, 0, 0, 0, 0, 4919, 0, + 0, 0, 0, 4693, 0, 0, 0, 5276, 0, 0, + 0, 0, 0, 0, 0, 0, 835, 0, 835, 2990, + 835, 2990, 1885, 1878, 0, 0, 1879, 694, 0, -2568, + 1880, 1881, 1882, 0, 0, 0, 5275, 5205, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1883, 0, 0, + 0, 0, 0, 1887, 1790, 1885, 5276, 0, 0, 0, + 0, 0, 1886, 0, 183, 0, 5202, 0, 0, 5203, + 5204, 5276, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5275, 1887, 0, 0, 0, + 0, 772, 0, 0, 0, 0, 0, 0, 4598, 0, + 5275, 830, 0, 0, 0, 0, 0, 847, 1188, 0, + 0, 3351, 0, 0, 0, 3352, 3353, 3354, 0, 0, + 835, 0, 5205, 0, 0, 0, 0, 3450, 1285, 0, + 0, 0, 4360, 1285, 0, 0, 0, 0, 0, 0, + 1813, 0, 1188, 0, 0, 3351, 0, 0, 0, 3352, + 3353, 3354, 0, 0, 0, 0, 1285, 1285, 1285, 0, + 0, 1285, -2568, 0, 0, 0, 4361, -2568, 0, 1285, + 1285, 1285, 1285, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1285, 0, 0, 1285, 0, 1285, 0, 0, + 0, 0, 0, 0, 0, 1888, 0, 0, 1285, 1285, + 1889, 179, 1285, -2568, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 882, 0, 1285, 0, 1285, 0, + 1285, 1890, 1891, 0, 1188, 0, 179, 3351, 0, 0, + 0, 3352, 3353, 3354, 0, 0, 1892, 0, 0, 0, + 1285, 0, 0, 0, 772, 0, 0, 0, 0, 0, + 1894, 3451, 0, 1285, 1285, 1285, 0, 0, 0, 0, + 0, 0, 0, 1679, 0, 0, 0, 0, 0, 1893, + 0, 1285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1878, 1285, 1894, 1879, 0, 1895, 1285, 1880, 1881, + 1882, 1706, 0, 1285, 0, 0, 0, 0, 0, 0, + 5256, 0, 0, 3451, 0, 1883, 3356, 3492, 0, 0, + 3495, 1724, 2816, 1885, 0, 0, 0, 0, 0, 0, + 1886, 1735, 0, 0, 0, 0, 0, 1739, 0, 0, + 0, 0, 0, 1747, 3450, 0, 0, -2568, 3450, 1755, + 3356, 0, 1758, 0, 1887, 0, 0, 0, 0, 0, + 0, 0, 0, 1285, 0, 2990, 0, 0, 0, 0, + 1790, 0, 0, 0, 0, 0, 1877, 0, 3357, 0, + 1896, 1878, 0, 0, 1879, 0, 0, 0, 1880, 1881, + 1882, 0, 0, 0, 0, 179, 0, 835, 0, 835, + 835, 835, 0, 0, 0, 1883, 0, 0, 1884, 0, + 0, 0, 3357, 1885, 0, 0, 0, 0, 0, 0, + 1886, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1813, 0, -2568, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -2568, 1887, 0, 0, 0, 0, 0, + 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, + 0, 0, 0, 1888, 0, 0, 0, 0, 1889, 0, + 3673, 0, 0, 0, 0, 0, 1897, 0, 0, 1898, + 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 1890, + 1891, 0, 0, 0, 3357, 0, 3342, 0, 0, 0, + 0, 0, 0, 0, 1892, 0, 0, 0, 0, 0, + 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1813, 0, 0, 0, 0, 1813, + 1813, 0, 0, 0, 0, 0, 0, 1893, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1894, 0, 1888, 1895, 0, 0, 0, 1889, 0, + 0, 0, 0, 0, 3358, 3359, 3360, 0, 3361, 3362, + 3363, 3364, 3365, 3366, 0, 0, 0, 0, 0, 1890, + 1891, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4537, 1892, 0, 0, 0, 3358, 3359, + 3360, 0, 3361, 3362, 3363, 3364, 3365, 3366, 0, 0, + 0, 0, 0, 0, 835, 0, 0, 0, 0, 2990, + 2990, 0, 0, 0, 0, 0, 0, 1893, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1896, 5001, + 0, 1894, 0, 0, 1895, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 772, 772, 772, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 772, 0, 0, 0, 0, 0, 0, + 3358, 3359, 3360, 0, 3361, 3362, 3363, 3364, 3365, 3366, + 0, 0, 0, 0, 0, 1790, 772, 0, 0, 0, + 0, 0, 0, 0, 0, 1790, 772, 772, 0, 0, + 0, 772, 3219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 772, 0, 0, 0, 1896, 0, + 0, 0, 1414, 0, 1897, 0, 0, 1898, 1899, 1900, + 0, 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 3450, + 0, 0, 0, 0, 3392, 0, 3450, 0, 0, 0, + 0, 3450, 0, 0, 3450, 4654, 1415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 810, 0, 0, - 0, 0, 0, 0, 0, 0, 1033, 0, 0, 0, - 810, 0, 0, 0, 0, 0, 1034, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1033, 0, 0, - 0, 810, 0, 0, 834, 0, 0, 0, 0, 0, + 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, + 3450, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 772, 0, 3450, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 772, 0, 0, + 0, 0, 0, 0, 1897, 1417, 0, 1898, 1899, 1900, + 0, 1901, 1902, 1903, 1904, 1905, 1906, 1285, 5142, 0, + 0, 0, 0, 0, 2158, 0, 1285, 0, 0, 2159, + 0, 846, 1285, 0, 1285, 0, 0, 1285, 0, 1418, + 0, 0, 1285, 1285, 1285, 1285, 0, 0, 1285, 1285, + 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 0, 0, + 0, 1285, 1285, 2160, 0, 0, 0, 0, 0, 3220, + 0, 1285, 0, 846, 1419, 1285, 2161, 0, 0, 1285, + 0, 0, 0, 0, 0, 0, 0, 1285, 0, 0, + 1285, 2162, 1285, 0, 0, 0, 0, 0, 0, 0, + 0, 1285, 0, 0, 1285, 1285, 0, 0, 1420, 1285, + 1285, 0, 0, 0, 3951, 0, 1285, 0, 0, 0, + 0, 0, 0, 772, 772, 772, 830, 0, 0, 3451, + 3973, 0, 2163, 0, 3973, 3987, 3973, 0, 0, 1422, + 0, 3450, 1285, 2164, 0, 1385, 0, 0, 1285, 1285, + 1285, 0, 2517, 0, 0, 0, 0, 0, 0, 0, + 2524, 0, 0, 2165, 0, 0, 0, 0, 2166, 0, + 0, 0, 0, 0, 1285, 0, 2534, 1442, 0, 0, + 35, 0, 0, 1443, 1424, 0, 0, 0, 2816, 0, + 1285, 1425, 0, 0, 0, 0, 0, 0, 0, 1426, + 0, 0, 3450, 0, 0, 0, 0, 2200, 4048, 1790, + 1790, 0, 2362, 0, 0, 0, 0, 0, 0, 1428, + 0, 0, 0, 0, 1444, 0, 0, 1429, 0, 835, + 835, 835, 835, 0, 0, 0, 0, 0, 2167, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3222, 0, + 0, 0, 0, 0, 0, 0, 0, 559, 2215, 0, + 0, 0, 0, 611, 559, 0, 0, 0, 0, 662, + 0, 559, 2168, 0, 1445, 0, 4101, 559, 1446, 0, + 716, 0, 1430, 0, 0, 1447, 3223, 2418, 1448, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 783, + 783, 0, 0, 1414, 0, 205, 0, 0, 0, 0, + 0, 0, 0, 1449, 0, 0, 0, 0, 0, 4962, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1415, 0, 0, + 0, 2169, 3450, 0, 0, 1450, 1878, 0, 2170, 1879, + 0, 2171, 0, 1880, 1881, 1882, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1878, 1416, 4186, 1879, + 1883, 0, 0, 1880, 1881, 1882, 0, 0, 1885, 0, + 0, 2172, 0, 0, 0, 1886, 0, 0, 2173, 0, + 1883, 0, 0, 0, 0, 2174, 1417, 0, 1885, 0, + 3450, 0, 2175, 0, 1451, 1886, 1452, 835, 0, 1887, + 0, 772, 0, 835, 0, 1285, 1453, 0, 0, 0, + 0, 0, 772, 0, 0, 1454, 0, 2176, 4226, 1887, + 1418, 3450, 0, 0, 0, 0, 1455, 0, 2215, 0, + 0, 0, 0, 0, 0, 0, 842, 0, 0, 0, + 0, 0, 0, 772, 884, 0, 885, 3451, 889, 890, + 0, 893, 0, 895, 2774, 1419, 901, 3075, 903, 0, + 0, 0, 0, 0, 1456, 0, 4274, 1457, 1458, 0, + 0, 0, 0, 0, 0, 0, 0, 772, 0, 0, + 0, 2362, 0, 0, 0, 1285, 1285, 0, 0, 1420, + 0, 0, 0, 0, 0, 1459, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1888, 0, + 0, 0, 0, 1889, 2990, 0, 2990, 0, 0, 1421, + 1422, 0, 0, 772, 0, 0, 1385, 0, 1888, 3450, + 0, 0, 0, 1889, 1890, 1891, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1892, + 0, 0, 1285, 0, 1890, 1891, 0, 1423, 0, 1460, + 0, 35, 0, 1285, 0, 1424, 0, 0, 0, 1892, + 0, 0, 1425, 0, 0, 0, 0, 0, 3219, 0, + 1426, 0, 1893, 0, 0, 0, 0, 0, 1427, 0, + 0, 0, 0, 1285, 846, 0, 1894, 0, 1414, 1895, + 1428, 0, 1893, 1285, 1285, 0, 0, 0, 1429, 0, + 1285, 1285, 0, 0, 0, 1285, 1894, 0, 0, 1895, + 1285, 0, 0, 1285, 1285, 0, 0, 0, 1285, 4369, + 0, 0, 1415, 0, 1285, 772, 772, 772, 772, 0, + 0, 0, 3973, 3987, 3973, 5185, 1285, 3973, 0, 0, + 4383, 0, 0, 0, 3451, 0, 0, 0, 3451, 3450, + 0, 0, 0, 1430, 4398, 846, 846, 0, 0, 0, + 0, 1285, 0, 0, 0, 0, 1285, 0, 0, 0, + 0, 0, 1285, 1896, 0, 1878, 0, 0, 1879, 882, + 0, 1417, 1880, 1881, 1882, 0, 0, 1285, 0, 0, + 0, 3492, 0, 1896, 0, 0, 2816, 0, 0, 1883, + 0, 0, 0, 0, 0, 0, 0, 1885, 0, 0, + 703, 0, 0, 1285, 1886, 1418, 0, 0, 0, 0, + 0, 3450, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2990, 2990, 0, 0, 0, 1887, 0, + 0, 0, 0, 0, 0, 3220, 0, 0, 0, 0, + 1419, 2215, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4467, 0, 0, 0, 0, 1897, + 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, + 1905, 1906, 0, 0, 1420, 0, 2686, 0, 0, 1897, + 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, + 1905, 1906, 0, 967, 0, 0, 3715, 0, 0, 0, + 0, 976, 0, 1285, 0, 1422, 0, 0, 989, 990, + 5301, 1385, 996, 0, 999, 1000, 0, 0, 0, 1002, + 0, 0, 0, 0, 0, 835, 0, 0, 846, 846, + 1019, 0, 0, 0, 0, 0, 0, 1888, 0, 0, + 835, 0, 1889, 0, 0, 1029, 35, 0, 0, 0, + 3221, 0, 0, 0, 0, 0, 0, 1425, 0, 0, + 0, 0, 0, 1890, 1891, 1426, 0, 0, 1093, 1285, + 1095, 0, 0, 2200, 0, 0, 0, 0, 1892, 3233, + 1111, 0, 0, 830, 0, 1428, 3238, 0, 0, 2215, + 0, 0, 0, 1429, 0, 0, 0, 0, 1790, 0, + 0, 0, 0, 0, 0, 0, 3257, 0, 0, 0, + 0, 1893, 559, 1285, 3222, 0, 3263, 0, 0, 0, + 3264, 0, 0, 3266, 0, 1894, 835, 0, 3203, 3270, + 0, 3271, 0, 0, 3273, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1170, 0, 1430, 0, + 0, 0, 3223, 1878, 0, 0, 1879, 0, 772, 0, + 1880, 1881, 1882, 1070, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1883, 1442, 0, + 0, 0, 0, 0, 1443, 1885, 0, 1070, 0, 0, + 0, 0, 1886, 3310, 1285, 0, 0, 1532, 0, 0, + 783, 0, 0, 1285, 0, 0, 0, 0, 0, 0, + 0, 0, 1896, 0, 0, 0, 1887, 0, 0, 0, + 1285, 1285, 0, 0, 1285, 1444, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, + 0, 0, 3973, 0, 0, 0, 3451, 0, 0, 0, + 0, 3451, 0, 0, 3451, 830, 0, 3075, 0, 4658, + 0, 1405, 1285, 1285, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1533, 0, 1446, + 4048, 0, 1285, 0, 0, 0, 1447, 0, 0, 1448, + 0, 0, 0, 4048, 882, 835, 835, 835, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1897, 0, + 0, 1898, 1899, 1900, 1449, 1901, 1902, 1903, 1904, 1905, + 1906, 0, 0, 0, 0, 1888, 0, 0, 0, 0, + 1889, 1564, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 847, 882, 0, 0, 0, 1450, 1577, 0, 0, + 0, 1890, 1891, 0, 0, 0, 0, 0, 0, 1588, + 0, 0, 1589, 0, 0, 0, 1892, 0, 0, 0, + 0, 0, 1592, 0, 0, 0, 0, 1596, 0, 0, + 0, 0, 0, 847, 0, 1599, 772, 0, 0, 0, + 0, 1609, 0, 0, 1613, 0, 0, 0, 4226, 1893, + 0, 772, 0, 0, 0, 1451, 772, 1452, 2990, 0, + 0, 0, 0, 1894, 0, 2215, 1895, 1453, 0, 0, + 0, 0, 0, 0, 0, 0, 1454, 0, 0, 0, + 0, 772, 0, 0, 1666, 4274, 0, 1455, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 835, + 772, 4048, 0, 0, 0, 0, 0, 3526, 0, 0, + 0, 0, 0, 1070, 0, 1878, 0, 0, 1879, 0, + 0, 0, 1880, 1881, 1882, 1534, 0, 1285, 1457, 1458, + 1285, 0, 1285, 0, 0, 0, 1070, 0, 0, 1883, + 0, 0, 0, 0, 0, 0, 0, 1885, 0, 0, + 1896, 1070, 1285, 0, 1886, 0, 1535, 0, 1285, 0, + 0, 0, 3451, 0, 0, 0, 4658, 0, 0, 0, + 0, 0, 0, 1285, 0, 0, 0, 0, 1887, 0, + 0, 0, 4876, 0, 0, 0, 0, 3585, 0, 3587, + 0, 0, 0, 0, 0, 559, 0, 559, 0, 559, + 0, 559, 0, 559, 559, 559, 772, 0, 0, 0, + 559, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1460, 1808, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1285, 0, 0, 1070, 0, 0, 0, 0, + 0, 835, 835, 835, 835, 0, 1897, 0, 0, 1898, + 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 0, + 0, 0, 0, 3876, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, + 0, 0, 0, 0, 0, 0, 0, 1888, 0, 0, + 0, 0, 1889, 0, 0, 0, 0, 0, 0, 772, + 0, 0, 3451, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 860, 1890, 1891, 0, 0, 0, 3672, 0, + 0, 0, 892, 0, 3679, 0, 0, 0, 1892, 0, + 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1070, 0, 1442, 0, 0, + 0, 0, 0, 1443, 0, 0, 0, 1285, 0, 0, + 830, 1893, 0, 1285, 0, 0, 1532, 5026, 0, 0, + 0, 0, 0, 0, 1285, 1894, 0, 0, 1895, 1285, + 0, 1285, 0, 1285, 0, 0, 0, 0, 0, 0, + 0, 4048, 0, 0, 1444, 0, 0, 835, 0, 882, + 0, 0, 0, 0, 783, 0, 0, 0, 0, 1285, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1878, 0, 0, 1879, 0, 0, 0, 1880, + 1881, 1882, 0, 0, 0, 0, 1533, 0, 1446, 1790, + 1790, 0, 0, 0, 0, 1447, 1883, 0, 1448, 0, + 0, 0, 1896, 0, 1885, 0, 0, 0, 0, 0, + 0, 1886, 0, 0, 0, 0, 0, 0, 0, 0, + 835, 2178, 0, 1449, 0, 0, 1934, 5103, 0, 0, + 0, 1285, 0, 0, 0, 1887, 0, 0, 0, 5114, + 0, 0, 3833, 0, 3835, 0, 3837, 0, 0, 0, + 0, 0, 0, 3841, 0, 1450, 0, 0, 0, 0, + 0, 0, 0, 0, 1285, 1285, 0, 0, 0, 3075, + 0, 0, 1285, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1285, 0, 0, 4876, 0, 0, 0, 2268, + 2816, 1070, 3862, 0, 0, 0, 0, 0, 1897, 0, + 0, 1898, 1899, 1900, 847, 1901, 1902, 1903, 1904, 1905, + 1906, 0, 0, 0, 1451, 3927, 1452, 0, 835, 0, + 0, 0, 0, 0, 0, 1790, 1453, 0, 0, 0, + 0, 0, 0, 0, 0, 1454, 0, 0, 0, 0, + 0, 0, 0, 0, 1888, 0, 1455, 0, 0, 1889, + 2215, 0, 0, 1442, 0, 830, 0, 0, 1070, 1443, + 1285, 0, 0, 0, 0, 0, 0, 0, 0, 4048, + 1890, 1891, 0, 0, 0, 847, 847, 1285, 0, 0, + 0, 0, 0, 0, 3046, 1892, 1285, 1457, 1458, 0, + 5026, 0, 0, 0, 0, 0, 0, 1070, 0, 0, + 1444, 0, 0, 1285, 0, 0, 0, 0, 0, 0, + 835, 0, 0, 0, 0, 3047, 919, 0, 1893, 0, + 1070, 0, 964, 0, 0, 0, 2406, 0, 0, 0, + 0, 1878, 1894, 0, 1879, 1895, 0, 0, 1880, 1881, + 1882, 5114, 835, 835, 0, 0, 0, 0, 0, 0, + 2256, 0, 0, 0, 1446, 1883, 0, 0, 0, 0, + 0, 1447, 0, 1885, 1448, 0, 0, 0, 1285, 1285, + 1886, 0, 0, 0, 0, 0, 0, 0, 0, 1460, + 0, 0, 0, 0, 0, 0, 0, 0, 1878, 1449, + 0, 1879, 0, 0, 1887, 1880, 1881, 1882, 0, 1070, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1285, 0, 1883, 0, 1070, 0, 1285, 0, 0, 1896, + 1885, 1450, 0, 1070, 0, 0, 0, 1886, 0, 0, + 835, 0, 0, 0, 0, 1070, 0, 5026, 0, 0, + 830, 0, 0, 0, 0, 0, 0, 0, 2526, 0, + 2527, 1887, 0, 0, 0, 0, 0, 0, 847, 847, + 0, 0, 0, 0, 0, 0, 0, 2538, 0, 2539, + 0, 0, 0, 0, 0, 0, 0, 1169, 0, 0, + 1451, 0, 1452, 559, 0, 559, 0, 559, 0, 559, + 1070, 559, 1453, 0, 0, 559, 0, 0, 0, 0, + 0, 1454, 1292, 1888, 1070, 0, 0, 0, 1889, 0, + 0, 0, 1455, 0, 0, 1897, 1070, 0, 1898, 1899, + 1900, 1315, 1901, 1902, 1903, 1904, 1905, 1906, 1070, 1890, + 1891, 0, 4013, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1340, 0, 1892, 0, 0, 0, 0, 0, + 2257, 0, 0, 1457, 1458, 0, 0, 0, 0, 0, + 1888, 0, 0, 0, 0, 1889, 0, 0, 1070, 1070, + 0, 0, 0, 0, 0, 0, 0, 1893, 0, 0, + 0, 2258, 0, 0, 0, 0, 1890, 1891, 0, 0, + 0, 1894, 0, 0, 1895, 0, 0, 0, 0, 0, + 0, 1892, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1471, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1893, 0, 1442, 0, 0, 0, + 0, 0, 1443, 0, 0, 1460, 0, 0, 1894, 0, + 0, 1895, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1896, 0, + 0, 0, 0, 1444, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1070, 0, 0, 0, 0, 0, 0, 0, + 1878, 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, + 0, 0, 4305, 0, 0, 0, 4307, 0, 0, 0, + 1618, 0, 0, 0, 1883, 1896, 0, 1446, 0, 0, + 0, 0, 1885, 0, 1447, 0, 0, 1448, 0, 1886, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1656, + 1659, 1660, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1449, 1887, 1897, 0, 0, 1898, 1899, 1900, + 0, 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, + 0, 4042, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2819, 2820, 0, 1450, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2835, 2836, 0, 0, 0, 2839, 2840, 0, 0, 0, + 2843, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, + 1903, 1904, 1905, 1906, 2854, 0, 0, 0, 4330, 0, + 0, 2863, 0, 0, 0, 2866, 2867, 0, 0, 2870, + 2871, 0, 0, 1451, 0, 1452, 2876, 0, 0, 0, + 0, 0, 0, 0, 0, 1453, 0, 0, 0, 2893, + 0, 2895, 1888, 0, 1454, 0, 0, 1889, 0, 0, + 0, 0, 0, 0, 0, 1455, 0, 0, 0, 1292, + 2919, 0, 0, 0, 0, 2921, 0, 0, 1890, 1891, + 0, 0, 0, 0, 0, 0, 0, 0, 2926, 0, + 1070, 0, 0, 1892, 1070, 1070, 0, 2933, 0, 2935, + 1292, 0, 2938, 2941, 2943, 0, 1457, 1458, 0, 2951, + 2954, 0, 0, 4446, 0, 0, 0, 0, 0, 2967, + 0, 0, 0, 0, 2976, 0, 1893, 0, 0, 2980, + 0, 0, 3219, 0, 1459, 0, 0, 0, 0, 0, + 1894, 0, 0, 1895, 0, 2996, 0, 0, 0, 0, + 0, 0, 1414, 3007, 4469, 4470, 1070, 0, 0, 0, + 0, 0, 0, 0, 3022, 0, 0, 0, 1070, 0, + 0, 0, 0, 0, 0, 0, 3029, 0, 0, 3032, + 0, 0, 0, 0, 3035, 0, 1415, 0, 0, 3037, + 3038, 0, 0, 0, 3041, 0, 0, 3045, 1460, 0, + 0, 3052, 3053, 3054, 3055, 0, 3057, 0, 1070, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3082, + 3083, 0, 3085, 0, 0, 0, 0, 1896, 0, 0, + 0, 0, 3093, 3094, 0, 0, 1949, 0, 0, 1878, + 4510, 4511, 1879, 0, 0, 1417, 1880, 1881, 1882, 0, + 0, 0, 0, 0, 0, 0, 0, 1878, 0, 0, + 1879, 0, 0, 1883, 1880, 1881, 1882, 0, 0, 0, + 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 1418, + 0, 1883, 0, 2085, 3138, 0, 0, 0, 0, 1885, + 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, + 0, 0, 1887, 0, 0, 0, 0, 0, 0, 3220, + 0, 0, 3175, 0, 1419, 0, 0, 0, 0, 0, + 1887, 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, + 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, + 4365, 0, 0, 0, 0, 0, 0, 0, 1420, 0, + 0, 0, 0, 0, 0, 4606, 0, 4607, 4608, 1878, + 0, 0, 1879, 2209, 0, 0, 1880, 1881, 1882, 0, + 0, 4612, 2232, 0, 0, 0, 0, 0, 0, 1422, + 0, 0, 0, 1883, 0, 1385, 0, 1070, 0, 0, + 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 0, + 0, 1878, 2269, 0, 1879, 0, 0, 0, 1880, 1881, + 1882, 1888, 0, 0, 0, 2282, 1889, 0, 2285, 0, + 35, 0, 1887, 0, 1424, 1883, 0, 0, 0, 1888, + 0, 1425, 0, 1885, 1889, 0, 0, 1890, 1891, 1426, + 1886, 0, 0, 0, 0, 0, 0, 2200, 0, 0, + 0, 0, 1892, 0, 0, 1890, 1891, 0, 0, 1428, + 0, 0, 0, 0, 1887, 0, 0, 1429, 2333, 1070, + 1892, 0, 3305, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2351, 0, 0, 1893, 0, 0, 3222, 0, + 0, 0, 0, 0, 0, 2363, 0, 0, 0, 1894, + 0, 3321, 1895, 1893, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1894, 0, 0, + 1895, 0, 1430, 0, 0, 0, 3223, 0, 0, 0, + 0, 1888, 0, 0, 0, 0, 1889, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2415, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1890, 1891, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1892, 1888, 0, 0, 2458, 0, 1889, 0, + 1070, 0, 0, 2471, 0, 0, 1896, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1070, 0, 1890, + 1891, 0, 0, 0, 1896, 1893, 0, 0, 0, 0, + 1070, 0, 0, 0, 1892, 0, 0, 0, 0, 1894, + 0, 0, 1895, 0, 0, 0, 0, 0, 0, 0, + 1442, 0, 0, 0, 0, 0, 1443, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1893, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1894, 0, 0, 1895, 0, 0, 4838, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1444, 0, 0, + 0, 0, 1897, 0, 2543, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 4615, + 1897, 0, 0, 1898, 1899, 1900, 1896, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 0, 0, 4626, 0, 0, + 0, 0, 1292, 1292, 0, 0, 0, 0, 0, 0, + 0, 1446, 0, 0, 0, 0, 0, 0, 1447, 2590, + 4886, 1448, 0, 0, 0, 0, 0, 0, 1896, 0, + 0, 0, 0, 0, 0, 3529, 0, 0, 0, 3531, + 0, 0, 0, 0, 0, 3533, 1449, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3544, 3546, 0, 0, 0, 3546, 0, 0, 0, + 4927, 3557, 3558, 3559, 0, 3561, 0, 0, 1450, 0, + 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 1070, 3582, 0, 1070, 4635, + 1070, 0, 0, 0, 0, 1070, 3588, 3589, 3590, 3591, + 0, 0, 0, 0, 0, 0, 2749, 0, 0, 0, + 0, 0, 0, 0, 1897, 0, 2764, 1898, 1899, 1900, + 0, 1901, 1902, 1903, 1904, 1905, 1906, 1451, 0, 1452, + 0, 4638, 0, 3608, 0, 0, 3613, 3614, 3615, 1453, + 0, 0, 0, 0, 1070, 0, 0, 0, 1454, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1455, + 0, 1070, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1442, + 0, 0, 0, 0, 0, 1443, 1070, 0, 0, 0, + 0, 0, 1497, 0, 0, 0, 0, 1561, 0, 0, + 1457, 1458, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1498, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1444, 0, 1562, 0, + 0, 0, 0, 2775, 0, 2778, 0, 0, 3682, 0, + 0, 0, 1878, 0, 0, 1879, 3686, 0, 0, 1880, + 1881, 1882, 0, 0, 0, 1070, 0, 1070, 0, 0, + 1499, 0, 0, 0, 3695, 0, 1883, 0, 0, 0, + 2783, 1292, 0, 0, 1885, 0, 0, 0, 0, 0, + 1446, 1886, 0, 0, 0, 0, 0, 1447, 0, 0, + 1448, 3741, 1460, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1887, -128, 0, 0, 0, + 0, 0, 0, 0, 0, 1449, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 3, 4, 1070, 0, + 0, 0, 0, 3778, 1500, 0, 0, 1450, 3784, 0, + 0, 0, 5, 0, 2784, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1070, 0, 0, 0, + 0, 0, 6, 0, 7, 8, 0, 0, 3822, 0, + 0, 9, 0, 10, 0, 0, 0, 0, 0, 1070, + 0, 0, 1501, 0, 11, 1502, 12, 1070, 0, 0, + 0, 0, 0, 0, 0, 0, 1503, 0, 1452, 0, + 0, 0, 0, 13, 1888, 3838, 14, 3839, 1453, 1889, + 0, 0, 0, 0, 0, 0, 2957, 1454, 0, 0, + 15, 0, 16, 0, 0, 0, 17, 1504, 1455, 0, + 1890, 1891, 18, 0, 0, 0, 0, 2984, 0, 0, + 19, 0, 20, 0, 0, 1892, 0, 0, 21, 0, + 0, 0, 0, 0, 0, 0, 1070, 0, 0, 0, + 0, 0, 0, 0, 22, 5228, 1505, 0, 0, 1457, + 1458, 1506, 0, 0, 1070, 0, 0, 0, 1893, 0, + 23, 0, 0, 0, 0, 0, 0, 1070, 0, 0, + 0, 1507, 1894, 0, 0, 1895, 0, 1508, 0, 0, + 0, 3050, 3051, 0, 0, 0, 0, 0, 0, 0, + 0, 1509, 0, 0, 0, 0, 0, 0, 0, 24, + 25, 0, 0, 0, 0, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, + 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, + 0, 1460, 0, 0, 0, 0, 832, 855, 0, 0, + 0, 0, 0, 0, 0, 855, 0, 0, 0, 1896, + 0, 0, 0, 1070, 29, 0, 0, 0, 855, 0, + 0, 0, 30, 0, 0, 0, 3164, 0, 0, 0, + 0, 0, 0, 0, 1070, 31, 0, 0, 0, 0, + 0, 32, 33, 0, 34, 0, 0, 0, 0, 35, + 0, 0, 0, 0, 36, 0, 0, 37, 0, 1070, + 0, 0, 38, 0, 0, 2785, 0, 0, 39, 40, + 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, + 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 0, 0, 1070, 0, 4059, 0, 4060, 0, 0, + 0, 0, 0, 44, 4062, 1897, 0, 0, 1898, 1899, + 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 1878, 0, + 4072, 1879, 45, 0, 0, 1880, 1881, 1882, 0, 0, + 0, 0, 46, 0, 0, 0, 4080, 1878, 47, 0, + 1879, 0, 1883, 48, 1880, 1881, 1882, 1442, 0, 0, + 1885, 0, 0, 1443, 4100, 0, 49, 1886, 0, 0, + 0, 1883, 0, 0, 0, 0, 0, 0, 0, 1885, + 0, 0, 4104, 0, 0, 0, 1886, 0, 0, 50, + 0, 1887, 4113, 0, 0, 0, 0, 0, 0, 1070, + 0, 0, 0, 51, 1444, 0, -128, 0, 0, 0, + 1887, 4142, 0, 3304, 0, 0, 0, 0, 0, 0, + 0, 0, 4150, 4151, 4152, 0, 0, 0, 0, 4156, + 4157, 4158, 4159, 0, 0, 4161, 4162, 0, 0, 0, + 0, 4169, 4170, 0, 4172, 4173, 4174, 4175, 4176, 4177, + 0, 4179, 0, 0, 0, 0, 0, 0, 1446, 0, + 4187, 0, 0, 4190, 4191, 1447, 0, 1878, 1448, 0, + 1879, 0, 0, 0, 1880, 1881, 1882, 0, 0, 0, + 0, 0, 3546, 0, 0, 0, 0, 0, 0, 0, + 0, 1883, 0, 1449, 0, 0, 0, 0, 1070, 1885, + 1888, 0, 0, 0, 4211, 1889, 1886, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1888, + 0, 0, 1070, 0, 1889, 1450, 1890, 1891, 0, 0, + 1887, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1892, 0, 0, 0, 1890, 1891, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1892, 0, 0, 0, 0, 0, 3432, 0, 0, 0, + 0, 0, 0, 0, 1893, 0, 0, 0, 0, 0, + 832, 0, 0, 0, 1451, 0, 1452, 0, 1894, 0, + 0, 1895, 855, 1893, 0, 0, 1453, 0, 855, 0, + 0, 0, 0, 3546, 0, 1454, 0, 1894, 0, 0, + 1895, 855, 0, 0, 0, 0, 1455, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 855, 0, 0, + 0, 0, 832, 0, 0, 4315, 0, 0, 1072, 1888, + 0, 0, 832, 855, 1889, 0, 0, 1070, 0, 0, + 855, 0, 0, 0, 2180, 0, 0, 1457, 1458, 0, + 0, 0, 1072, 855, 0, 1890, 1891, 0, 0, 0, + 0, 0, 0, 855, 0, 1896, 0, 0, 0, 0, + 1892, 0, 0, 0, 0, 2181, 0, 0, 0, 0, + 0, 0, 0, 0, 1896, 0, 0, 1070, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1893, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1894, 0, 0, + 1895, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1460, + 0, 0, 0, 0, 0, 832, 832, 0, 0, 0, + 0, 855, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, + 1903, 1904, 1905, 1906, 0, 0, 0, 832, 4687, 0, + 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 0, 0, 4721, 0, 0, + 0, 0, 0, 0, 1896, 0, 0, 0, 0, 1070, + 0, 0, 3630, 0, 0, 0, 0, 0, 0, 1070, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1878, + 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, 4450, + 0, 0, 0, 4451, 4452, 4453, 4454, 0, 0, 4456, + 0, 0, 0, 1883, 0, 0, 0, 0, 0, 0, + 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4474, 4475, 4476, 0, 4477, 0, 4479, 4480, 0, 0, + 0, 0, 1887, 0, 0, 0, 0, 0, 4489, 4490, + 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 0, 0, 4761, 0, 0, + 0, 832, 0, 0, 0, 4495, 0, 0, 1072, 0, + 0, 0, 832, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1070, 0, 0, 0, 4505, 0, + 0, 1072, 0, 0, 1878, 0, 0, 1879, 3744, 3745, + 3746, 1880, 1881, 1882, 0, 0, 1072, 0, 0, 0, + 0, 0, 0, 0, 0, 3755, 0, 0, 1883, 0, + 0, 0, 1070, 0, 0, 0, 1885, 0, 0, 0, + 0, 0, 0, 1886, 0, 0, 1442, 0, 3771, 0, + 0, 1888, 1443, 1070, 0, 0, 1889, 0, 3781, 3783, + 0, 832, 0, 3788, 0, 0, 0, 1887, 0, 0, + 0, 0, 4557, 0, 0, 0, 3802, 1890, 1891, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1892, 1444, 0, 0, 0, 0, 0, 0, + 1072, 4585, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1070, 0, + 0, 0, 0, 0, 0, 1893, 4609, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 855, 0, 1894, + 0, 0, 1895, 0, 0, 0, 0, 1446, 0, 0, + 0, 855, 0, 0, 1447, 0, 0, 1448, 0, 0, + 832, 0, 0, 0, 0, 0, 0, 0, 855, 1292, + 0, 0, 0, 0, 0, 0, 1888, 0, 0, 0, + 0, 1889, 1449, 1878, 0, 0, 1879, 0, 0, 0, + 1880, 1881, 1882, 0, 0, 0, 855, 0, 0, 0, + 0, 0, 1890, 1891, 0, 0, 0, 1883, 0, 0, + 1072, 0, 855, 0, 1450, 1885, 0, 1892, 0, 0, + 0, 0, 1886, 0, 0, 0, 1896, 855, 0, 1070, + 855, 0, 0, 559, 0, 0, 0, 0, 0, 0, + 0, 0, 832, 0, 0, 0, 1887, 0, 0, 0, + 1893, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1894, 0, 0, 1895, 0, 0, + 0, 1070, 832, 1451, 0, 1452, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1453, 0, 0, 0, 0, + 0, 0, 0, 4710, 1454, 3959, 3960, 3961, 0, 0, + 832, 832, 832, 0, 832, 1455, 0, 0, 0, 0, + 0, 4720, 0, 0, 0, 0, 4725, 4726, 0, 0, + 0, 0, 1897, 0, 832, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 5062, + 0, 0, 0, 2927, 0, 0, 1457, 1458, 855, 0, + 0, 1896, 0, 0, 0, 1888, 855, 855, 0, 0, + 1889, 0, 0, 0, 0, 832, 2033, 4784, 0, 0, + 0, 0, 0, 0, 1459, 0, 0, 0, 0, 0, + 0, 1890, 1891, 0, 0, 0, 0, 4801, 0, 0, + 0, 0, 0, 832, 0, 0, 1892, 832, 832, 0, + 0, 0, 0, 0, 1070, 0, 0, 0, 0, 0, + 1878, 0, 832, 1879, 0, 0, 1072, 1880, 1881, 1882, + 0, 0, 0, 2033, 3546, 0, 0, 0, 0, 1893, + 0, 4837, 0, 0, 1883, 0, 0, 0, 1460, 0, + 0, 0, 1885, 1894, 0, 0, 1895, 1897, 0, 1886, + 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, + 0, 0, 0, 0, 5184, 0, 0, 0, 0, 0, + 0, 0, 0, 1887, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1072, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4879, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4895, 0, 1072, 0, 0, 0, 1070, 0, 0, 1878, + 1896, 4903, 1879, 0, 0, 0, 1880, 1881, 1882, 0, + 0, 0, 0, 0, 0, 1072, 0, 0, 0, 0, + 0, 1070, 0, 1883, 0, 0, 0, 0, 0, 0, + 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1888, 4208, 0, 0, 0, 1889, 0, 0, + 0, 1070, 1887, 4967, 4221, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 855, 0, 0, 0, 1890, 1891, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1892, 1072, 4250, 1897, 0, 0, 1898, + 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 1072, + 0, 0, 0, 5247, 0, 1070, 0, 0, 1072, 0, + 1070, 1070, 0, 0, 3546, 2033, 1893, 0, 0, 2471, + 1072, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1894, 0, 0, 1895, 0, 0, 0, 0, 0, 855, + 0, 0, 0, 0, 0, 0, 0, 855, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 855, + 0, 1888, 0, 0, 0, 2543, 1889, 0, 0, 0, + 0, 0, 0, 0, 0, 1072, 5050, 0, 0, 0, + 0, 0, 832, 0, 0, 832, 0, 1890, 1891, 1072, + 0, 5063, 0, 0, 0, 832, 0, 0, 0, 0, + 0, 1072, 1892, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1072, 0, 0, 0, 1896, 0, 0, + 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 832, 832, 0, 855, 855, 1893, 0, 0, 0, 0, + 5090, 0, 0, 0, 0, 855, 0, 0, 0, 1894, + 0, 0, 1895, 1072, 1072, 5101, 855, 855, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 855, 0, 0, 0, 0, 4372, 4373, 4374, + 4375, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 832, 0, 0, 0, 0, 0, + 0, 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, + 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, + 5267, 0, 0, 5158, 0, 0, 1896, 0, 832, 0, + 832, 0, 0, 0, 0, 832, 832, 0, 0, 0, + 0, 0, 832, 832, 832, 0, 0, 0, 832, 0, + 832, 832, 832, 832, 832, 832, 0, 832, 0, 832, + 832, 0, 0, 832, 0, 5180, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1072, 832, 832, + 832, 832, 2033, 0, 0, 0, 832, 0, 0, 0, + 832, 0, 0, 832, 0, 0, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 0, 832, 0, 0, 1070, + 0, 0, 0, 832, 0, 832, 0, 0, 0, 0, + 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 5300, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5240, + 0, 0, 0, 0, 0, 0, 0, 1878, 0, 0, + 1879, 0, 0, 0, 1880, 1881, 1882, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1878, 0, 0, + 1879, 1883, 0, 0, 1880, 1881, 1882, 0, 0, 1885, + 0, 0, 0, 0, 0, 0, 1886, 1878, 0, 0, + 1879, 1883, 0, 0, 1880, 1881, 1882, 0, 0, 1885, + 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, + 1887, 1883, 0, 0, 0, 0, 0, 0, 0, 1885, + 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, + 1887, 0, 0, 832, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1887, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1878, 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, + 0, 0, 0, 0, 0, 0, 0, 0, 855, 1878, + 0, 0, 1879, 0, 1883, 1072, 1880, 1881, 1882, 1072, + 1072, 0, 1885, 0, 0, 0, 855, 0, 0, 1886, + 4600, 2033, 855, 1883, 0, 0, 855, 0, 0, 0, + 0, 1885, 0, 0, 855, 0, 3371, 0, 1886, 1888, + 0, 3372, 0, 1887, 1889, 0, 0, 1442, 0, 0, + 0, 0, 855, 1443, 0, 832, 0, 0, 0, 1888, + 0, 0, 1887, 0, 1889, 1890, 1891, 832, 0, 0, + 0, 1072, 0, 0, 832, 0, 0, 0, 0, 1888, + 1892, 0, 0, 1072, 1889, 1890, 1891, 0, 0, 0, + 0, 0, 0, 0, 1444, 0, 855, 0, 0, 0, + 1892, 0, 0, 0, 0, 1890, 1891, 0, 0, 0, + 0, 0, 0, 1893, 855, 855, 0, 0, 0, 0, + 1892, 0, 0, 1072, 0, 0, 0, 1894, 5212, 0, + 1895, 0, 0, 1893, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2033, 855, 1894, 1446, 2033, + 1895, 0, 1888, 1893, 0, 1447, 0, 1889, 1448, 0, + 0, 0, 0, 0, 0, 0, 0, 1894, 0, 0, + 1895, 1888, 855, 0, 2033, 0, 1889, 0, 1890, 1891, + 855, 0, 0, 1449, 0, 0, 0, 855, 0, 0, + 0, 855, 0, 1892, 3919, 0, 0, 1890, 1891, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 855, 1892, 0, 1896, 1450, 855, 0, 0, 0, + 855, 0, 0, 2033, 0, 0, 1893, 0, 0, 0, + 0, 0, 0, 855, 1896, 0, 0, 0, 0, 0, + 1894, 0, 0, 1895, 0, 1893, 855, 0, 4759, 0, + 0, 0, 0, 0, 1896, 0, 855, 0, 0, 1894, + 0, 0, 1895, 4771, 0, 5213, 0, 0, 1292, 0, + 3920, 0, 0, 0, 1451, 0, 1452, 0, 0, 0, + 3344, 0, 0, 0, 0, 0, 1453, 0, 0, 0, + 0, 0, 0, 4805, 0, 1454, 0, 0, 0, 0, + 0, 832, 1072, 0, 0, 0, 1455, 0, 0, 0, + 1897, 2033, 4822, 1898, 1899, 1900, 0, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 2770, 0, 1896, 0, 0, + 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 3090, 832, 1896, 1457, 1458, 0, + 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1878, 3091, 0, 1879, 0, 0, + 0, 1880, 1881, 1882, 1072, 0, 0, 0, 855, 0, + 0, 0, 0, 0, 0, 0, 0, 832, 1883, 0, + 0, 3330, 0, 0, 0, 0, 1885, 0, 0, 0, + 0, 0, 0, 1886, 0, 0, 1442, 0, 4892, 0, + 0, 0, 1443, 1897, 0, 0, 1898, 1899, 1900, 0, + 1901, 1902, 1903, 1904, 1905, 1906, 0, 1887, 0, 1460, + 0, 855, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 0, + 0, 0, 0, 1444, 0, 0, 0, 0, 0, 1878, + 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, 855, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1883, 0, 1072, 3376, 855, 0, 0, + 0, 1885, 0, 0, 0, 855, 0, 0, 1886, 832, + 0, 4974, 1072, 0, 0, 832, 0, 1446, 0, 0, + 0, 0, 0, 0, 1447, 1072, 0, 1448, 0, 0, + 0, 0, 1887, 0, 0, 0, 832, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 1888, 0, 0, 0, + 0, 1889, 1449, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 832, 832, 832, 0, 0, 832, + 0, 0, 1890, 1891, 0, 0, 0, 832, 832, 832, + 832, 0, 0, 0, 1450, 2033, 0, 1892, 0, 0, + 832, 2033, 0, 832, 0, 832, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 832, 832, 0, 0, + 832, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1893, 0, 0, 0, 832, 0, 832, 0, 832, 0, + 0, 0, 0, 0, 1894, 0, 0, 1895, 0, 0, + 0, 1888, 0, 1451, 0, 1452, 1889, 0, 832, 0, + 0, 0, 0, 0, 0, 1453, 0, 0, 0, 832, + 0, 832, 832, 832, 1454, 0, 0, 1890, 1891, 0, + 0, 0, 0, 0, 0, 1455, 855, 0, 0, 832, + 0, 0, 1892, 0, 0, 0, 0, 0, 0, 0, + 832, 0, 0, 0, 0, 832, 0, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 832, 0, 3554, 0, 1893, 1457, 1458, 0, 0, + 0, 1896, 0, 0, 0, 0, 0, 0, 0, 1894, + 1072, 0, 1895, 1072, 1878, 1072, 0, 1879, 0, 1442, + 1072, 1880, 1881, 1882, 3555, 1443, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 855, 855, 0, 1883, 0, + 0, 832, 0, 0, 0, 0, 1885, 0, 0, 0, + 0, 0, 1878, 1886, 0, 1879, 0, 0, 0, 1880, + 1881, 1882, 855, 0, 0, 855, 1444, 0, 0, 1072, + 0, 0, 0, 0, 0, 0, 1883, 1887, 0, 3387, + 0, 0, 0, 0, 1885, 0, 1072, 0, 1460, 0, + 0, 1886, 0, 0, 0, 0, 1896, 1897, 0, 0, + 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, + 0, 1072, 0, 0, 0, 1887, 0, 0, 0, 0, + 1446, 0, 0, 0, 0, 0, 0, 1447, 0, 0, + 1448, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2033, 2033, 2033, 0, + 0, 0, 0, 0, 0, 1449, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3381, 0, + 855, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1072, 0, 1072, 0, 0, 0, 1888, 1450, 0, 0, + 855, 1889, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 855, 0, 0, 0, 0, + 0, 0, 1890, 1891, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1888, 0, 0, 1892, 0, 1889, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1451, 0, 1452, 0, + 1890, 1891, 0, 0, 0, 0, 0, 0, 1453, 0, + 1893, 0, 0, 1072, 0, 1892, 0, 1454, 0, 0, + 0, 0, 0, 0, 1894, 0, 0, 1895, 1455, 0, + 0, 0, 0, 855, 0, 0, 0, 0, 0, 0, + 0, 1072, 0, 0, 0, 0, 0, 0, 1893, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1894, 0, 1072, 1895, 3609, 0, 0, 1457, + 1458, 2033, 1072, 0, 1878, 0, 0, 1879, 855, 0, + 855, 1880, 1881, 1882, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 855, 0, 855, 0, 3610, 1883, 0, + 0, 0, 0, 0, 0, 0, 1885, 0, 0, 0, + 0, 1896, 0, 1886, 0, 0, 0, 2033, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1887, 0, 0, + 0, 1072, 0, 0, 0, 0, 0, 0, 0, 1896, + 0, 0, 0, 0, 0, 0, 0, 0, 855, 1072, + 0, 1460, 0, 0, 0, 0, 0, 0, 0, 848, + 857, 0, 1072, 0, 0, 0, 0, 0, 857, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 857, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 855, 1897, 0, 0, + 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, + 0, 0, 855, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 855, 1897, 1888, 855, 1898, 1899, + 1900, 1889, 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, + 0, 0, 0, 0, 0, 832, 0, 0, 1072, 0, + 189, 0, 1890, 1891, 832, 0, 0, 0, 0, 0, + 832, 0, 832, 0, 0, 832, 0, 1892, 0, 1072, + 832, 832, 832, 832, 0, 0, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 0, 0, 0, 832, + 832, 0, 0, 0, 1072, 0, 0, 190, 0, 832, + 1893, 0, 0, 832, 0, 2033, 0, 832, 0, 0, + 0, 0, 191, 0, 1894, 832, 0, 1895, 832, 0, + 832, 0, 0, 0, 0, 0, 0, 0, 1072, 832, + 192, 0, 832, 832, 0, 0, 193, 832, 832, 0, + 0, 0, 0, 0, 832, 0, 0, 0, 0, 0, + 0, 0, 0, 194, 832, 0, 0, 832, 0, 0, + 0, 0, 0, 0, 195, 0, 1878, 0, 0, 1879, + 832, 0, 196, 1880, 1881, 1882, 832, 832, 832, 0, + 0, 0, 0, 0, 197, 0, 0, 0, 0, 198, + 1883, 0, 0, 3926, 0, 0, 199, 0, 1885, 0, + 0, 1896, 832, 0, 0, 1886, 0, 0, 0, 0, + 0, 0, 0, 200, 0, 0, 0, 0, 832, 0, + 856, 0, 0, 0, 1072, 0, 0, 0, 856, 1887, + 0, 3872, 0, 0, 0, 0, 832, 0, 201, 0, + 0, 856, 0, 0, 0, 0, 0, 1878, 0, 0, + 1879, 0, 0, 0, 1880, 1881, 1882, 0, 0, 202, + 0, 0, 0, 0, 0, 0, 0, 855, 0, 0, + 0, 1883, 0, 0, 0, 0, 0, 0, 0, 1885, + 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, + 0, 0, 0, 203, 0, 0, 0, 1897, 0, 0, + 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, + 1887, 0, 0, 0, 0, 0, 204, 2033, 0, 0, + 0, 0, 2033, 1072, 2033, 0, 205, 0, 0, 206, + 0, 0, 0, 0, 0, 857, 0, 0, 1888, 0, + 0, 857, 0, 1889, 0, 0, 2033, 1072, 0, 0, + 0, 0, 0, 0, 857, 207, 0, 0, 0, 0, + 208, 0, 209, 2033, 1890, 1891, 0, 0, 0, 210, + 857, 0, 211, 0, 0, 0, 0, 0, 855, 1892, + 0, 855, 0, 0, 0, 848, 857, 0, 0, 0, + 0, 212, 0, 857, 0, 0, 0, 213, 0, 0, + 0, 214, 215, 0, 0, 216, 857, 0, 0, 217, + 0, 0, 1893, 0, 0, 0, 857, 0, 218, 1888, + 0, 0, 0, 219, 1889, 0, 1894, 0, 0, 1895, + 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, + 0, 0, 0, 832, 0, 1890, 1891, 0, 221, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1892, 0, 0, 0, 0, 0, 0, 0, 855, 855, + 0, 0, 1072, 0, 0, 0, 0, 0, 855, 0, + 0, 0, 0, 0, 0, 832, 0, 0, 0, 0, + 0, 0, 0, 1893, 0, 0, 0, 855, 0, 0, + 0, 0, 0, 0, 857, 0, 0, 1894, 0, 0, + 1895, 0, 0, 1896, 1442, 0, 0, 0, 0, 0, + 1443, 0, 1072, 832, 832, 0, 0, 1497, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1498, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1444, 0, 0, 0, 0, 0, 0, 0, 855, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 832, 0, 0, 0, 1896, 1499, 0, 0, 0, 0, + 0, 832, 0, 0, 0, 856, 0, 0, 0, 1897, + 0, 856, 1898, 1899, 1900, 1446, 1901, 1902, 1903, 1904, + 1905, 1906, 1447, 0, 856, 1448, 0, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 856, 832, 832, 0, 1072, 0, 0, 0, 832, 832, + 1449, 0, 0, 832, 1072, 0, 856, 0, 832, 0, + 0, 832, 832, 856, 0, 0, 832, 0, 0, 0, + 0, 0, 832, 0, 0, 0, 856, 0, 0, 1500, + 0, 0, 1450, 0, 832, 848, 856, 0, 0, 0, + 1897, 0, 832, 1898, 1899, 1900, 832, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 0, 0, 0, 0, 832, + 0, 0, 0, 0, 832, 0, 0, 0, 0, 0, + 832, 0, 0, 0, 0, 0, 0, 1501, 0, 0, + 1502, 0, 0, 0, 0, 832, 0, 0, 0, 0, + 0, 1503, 0, 1452, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1453, 0, 0, 0, 0, 0, 0, + 0, 832, 1454, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1504, 1455, 856, 0, 0, 0, 0, 1072, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 855, 0, 0, 0, + 0, 2033, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3023, 0, 0, 1457, 1458, 1506, 1072, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 855, 0, 0, 1507, 0, 1072, 0, + 857, 0, 3024, 0, 0, 855, 0, 0, 0, 0, + 0, 0, 0, 0, 857, 0, 1509, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 857, 855, 0, 0, 0, 0, 0, 1061, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 0, 0, 1061, 1072, 0, 0, 1460, 0, 0, 0, + 0, 0, 0, 0, 0, 857, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, + 857, 0, 0, 857, 0, 0, 0, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 855, 0, 0, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, + 0, 0, 1072, 0, 1072, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 855, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 857, 832, 0, 0, 0, 1072, 0, 0, 857, + 857, 832, 0, 0, 0, 0, 0, 0, 0, 2035, + 0, 0, 0, 0, 0, 0, 0, 0, 832, 832, + 0, 0, 832, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, + 0, 0, 0, 0, 832, 0, 0, 0, 0, 832, + 856, 0, 832, 832, 0, 0, 0, 0, 0, 0, + 832, 832, 0, 0, 856, 0, 2035, 0, 0, 571, + 0, 0, 0, 0, 572, 0, 0, 0, 832, 0, + 832, 856, 0, 0, 0, 855, 573, 855, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 856, + 0, 0, 0, 0, 0, 0, 0, 0, 1061, 0, + 0, 575, 0, 0, 0, 856, 0, 0, 0, 1072, + 855, 0, 576, 0, 0, 0, -850, 0, 0, 832, + 856, 1061, 0, 856, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 577, 0, 1061, 0, 0, 0, + 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2033, 0, 579, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 580, 0, + 0, 0, 0, 0, 0, 0, 581, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 582, 0, + 0, 0, 0, 0, 0, 0, 583, 0, 0, 0, + 584, 0, 0, 0, 0, 1071, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4811, -1070, 0, 0, + 1061, 0, 0, 0, 0, 0, 0, 857, 1071, 832, + 0, 1072, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 856, 0, 1071, 0, 0, 0, 0, 0, 856, + 856, 0, 0, 0, 585, 832, 1072, 0, 832, 2034, + 832, 0, 0, -572, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2035, 0, + 832, 0, 0, 0, 0, 0, 832, 0, 0, 0, + 832, 0, 0, 0, 0, 0, 1072, 586, 0, 0, + 587, 832, 857, 0, 0, 0, 0, 0, 0, 0, + 857, 0, 0, 0, 0, 0, 2034, 0, 0, 0, + 588, 0, 857, 0, 0, 0, 0, 1071, 0, 0, + 1061, 0, 0, 589, 0, 0, 0, 0, 0, 0, + -449, 0, 2033, 0, 0, 0, 0, 0, 0, 0, + 1072, 0, 0, 0, 0, 1072, 1072, 0, 0, 590, + 832, 0, 0, 0, 0, 0, 591, 0, 0, 0, + 0, 0, 0, -449, 0, 0, 592, 0, 855, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 848, 848, 593, 857, 857, 0, 0, + 0, 594, 0, 0, 0, 0, -449, 832, 857, 595, + 596, 0, 597, 598, 0, 0, 0, 0, 0, 857, + 857, 0, 599, 0, 0, 0, 0, 600, 0, 0, + 832, 0, 0, 601, 0, 857, 602, 1071, 0, 603, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -449, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1072, 1072, 0, 848, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 832, 0, 0, 832, 0, + 0, 832, 0, 0, 0, 0, 0, 856, 0, 0, + 0, 0, 832, 0, 0, 0, 0, 832, 0, 832, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 832, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1061, 832, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2034, 0, + 0, 0, 0, 0, 0, 2035, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2033, 0, 855, + 0, 0, 856, 0, 0, 0, 0, 0, 0, 0, + 856, 0, 0, 0, 0, 0, 0, 0, 1268, 1268, + 0, 0, 856, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 832, + 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1061, 2107, 0, 0, 0, 0, 0, 0, + 0, 0, 832, 832, 0, 0, 0, 0, 0, 0, + 832, 2033, 0, 0, 1072, 1061, 856, 856, 0, 0, + 832, 0, 0, 0, 0, 0, 0, 0, 856, 855, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 856, + 856, 0, 832, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 856, 0, 0, 0, 0, + 2107, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 832, 1061, 0, 0, 0, 832, 1071, + 0, 0, 0, 0, 0, 0, 0, 832, 0, 1061, + 0, 857, 0, 832, 832, 832, 0, 0, 1061, 0, + 0, 0, 1071, 0, 832, 0, 0, 0, 0, 857, + 1061, 0, 0, 0, 2035, 857, 0, 0, 0, 857, + 0, 832, 0, 0, 0, 0, 0, 857, 0, 0, + 0, 0, 0, 0, 0, 855, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 857, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2034, 0, 0, 0, 832, + 0, 0, 0, 0, 0, 1061, 0, 848, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1061, + 0, 1071, 0, 0, 0, 0, 832, 832, 0, 857, + 0, 1061, 0, 0, 0, 0, 1071, 0, 0, 0, + 0, 0, 0, 1061, 0, 2107, 0, 857, 857, 0, + 0, 2033, 0, 0, 0, 0, 0, 1071, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 832, 0, + 0, 0, 0, 0, 832, 0, 0, 0, 2035, 857, + 0, 0, 2035, 1061, 1061, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 832, 0, + 2033, 0, 0, 0, 0, 857, 0, 2035, 0, 0, + 0, 0, 1071, 857, 0, 2033, 832, 832, 0, 0, + 857, 0, 0, 0, 857, 0, 1071, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, + 0, 0, 0, 0, 857, 0, 0, 0, 0, 857, + 1071, 0, 0, 857, 0, 0, 2035, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 857, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 1071, 1071, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 856, 0, 0, 0, 1835, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1061, 0, 856, + 0, 0, 0, 0, 2034, 856, 0, 0, 0, 856, + 0, 0, 0, 0, 0, 1849, 0, 856, 0, 0, + 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 856, 0, 0, 0, 0, + 0, 0, 0, 1867, 1868, 1869, 0, 1871, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 623, 0, 0, 0, 1913, 624, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 856, + 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 856, 856, 0, + 0, 857, 626, 0, 1071, 0, 0, 0, 1950, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2034, 856, + 628, 0, 2034, 0, 0, 0, 2054, 0, 0, 0, + 2066, 2069, 2762, 0, 0, 0, 0, 0, 629, 0, + 0, 0, 0, 0, 857, 856, 0, 2034, 0, 0, + 0, 0, 0, 856, 0, 0, 0, 0, 0, 0, + 856, 630, 0, 0, 856, 0, 0, 0, 0, 0, + 0, 0, 631, 0, 0, 0, 0, 0, 0, 0, + 632, 0, 857, 0, 856, 0, 0, 0, 0, 856, + 0, 0, 633, 856, 0, 0, 2034, 634, 0, 0, + 857, 0, 0, 0, 635, 1061, 856, 0, 857, 1061, + 1061, 0, 0, 0, 0, 0, 0, 0, 848, 856, + 0, 636, 0, 0, 0, 0, 0, 0, 0, 856, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1061, 2034, 0, 0, 0, 2035, 0, + 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, + 0, 638, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2823, 639, 0, 0, 2107, 2829, 0, 0, + 0, 0, 0, 1061, 640, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 205, 0, 0, 641, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 856, 0, 642, 0, 0, 0, 0, 643, 0, + 644, 0, 0, 0, 0, 0, 0, 645, 1071, 857, + 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1071, 0, 0, 0, 0, 0, 0, 0, 0, 647, + 0, 0, 0, 0, 0, 648, 0, 0, 0, 0, + 649, 0, 0, 650, 856, 0, 0, 651, 0, 0, + 0, 0, 0, 0, 652, 0, 653, 0, 0, 0, + 1071, 654, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, + 0, 0, 856, 0, 0, 0, 656, 0, 857, 857, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 856, 0, 0, 0, 0, 0, 0, 0, 856, 0, + 0, 0, 0, 0, 0, 857, 0, 0, 857, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 922, 0, 1061, 0, 0, 923, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 924, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 925, 926, 0, 0, 0, 0, 2034, 0, + 0, 0, 0, 927, 2034, 0, 0, 928, 0, 2035, + 2035, 2035, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1061, 929, 0, 0, 0, 0, + 0, 0, 0, 857, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 930, 1071, + 0, 0, 0, 857, 0, 0, 0, 0, 2631, 931, + 0, 0, 0, 0, 0, 0, 0, 932, 857, 0, + 0, 2651, 0, 2653, 0, 0, 2665, 2668, 2673, 933, + 0, 0, 0, 2679, 934, 0, 2684, 0, 0, 856, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2691, 2692, 2693, 2694, 0, 0, 0, 935, 2701, + 0, 0, 0, 2713, 0, 0, 2715, 0, 0, 2722, + 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 0, 2731, + 0, 2107, 0, 936, 0, 1061, 1268, 0, 2759, 0, + 0, 0, 0, 0, 0, 0, 857, 0, 0, 0, + 0, 0, 1061, 0, 937, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1061, 0, 0, 856, 856, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2035, 0, 0, 0, 938, 0, + 0, 857, 0, 857, 0, 856, 0, 0, 856, 0, + 0, 0, 0, 0, 0, 0, 857, 0, 857, 0, + 0, 939, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 205, 0, 0, 940, 0, 0, 0, 0, 0, + 2035, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, + 941, 0, 0, 0, 0, 942, 0, 943, 0, 1071, + 0, 0, 0, 0, 944, 0, 2779, 945, 0, 0, + 0, 857, 1071, 0, 0, 1063, 0, 0, 0, 2034, + 2034, 2034, 0, 0, 0, 0, 946, 0, 0, 0, + 0, 0, 947, 0, 0, 0, 0, 948, 0, 1063, + 949, 0, 0, 856, 950, 0, 0, 0, 0, 0, + 0, 951, 0, 952, 0, 0, 0, 0, 953, 857, + 0, 0, 0, 856, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 857, 0, 0, 856, 0, + 0, 0, 0, 954, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 857, 0, 0, + 857, 0, 0, 0, 0, 0, 0, 0, 2868, 0, + 1061, 0, 0, 1061, 0, 1061, 0, 0, 0, 0, + 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2762, 2762, + 2762, 0, 0, 0, 0, 0, 856, 0, 0, 0, + 0, 0, 0, 0, 0, 1064, 0, 0, 0, 1061, + 0, 0, 0, 0, 0, 0, 0, 0, 2035, 0, + 0, 0, 0, 0, 0, 0, 1061, 0, 0, 1064, + 0, 0, 0, 0, 2034, 0, 0, 0, 0, 0, + 0, 856, 0, 856, 0, 0, 0, 0, 0, 0, + 0, 1061, 0, 0, 0, 0, 856, 2107, 856, 0, + 2829, 0, 2829, 0, 0, 0, 0, 2107, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2034, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1071, 0, 0, 0, + 1061, 856, 1061, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1063, 0, 0, 2107, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 856, + 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, + 857, 0, 0, 0, 0, 856, 0, 0, 0, 0, + 0, 0, 0, 1063, 3129, 0, 0, 0, 0, 0, + 0, 0, 0, 1061, 0, 0, 0, 856, 0, 0, + 856, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1071, 0, 1071, + 2035, 1061, 0, 0, 0, 2035, 0, 2035, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1061, 0, 0, 0, 0, 2035, + 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2035, 1063, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2034, 0, + 0, 857, 0, 0, 857, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, + 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, + 0, 1061, 0, 0, 0, 0, 0, 0, 1071, 0, + 0, 0, 0, 1064, 0, 0, 0, 0, 0, 1061, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2829, 1061, 0, 0, 0, 0, 0, 0, 2829, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 857, 857, 0, 0, 0, 0, 1063, 0, 0, + 0, 857, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 857, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1064, 1066, 3326, + 0, 0, 0, 0, 3332, 0, 0, 0, 1071, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 856, 0, 1066, 0, 0, 0, 2829, 0, 1061, 1871, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, + 2673, 0, 2673, 2673, 0, 0, 0, 0, 0, 1061, + 0, 0, 857, 3390, 0, 0, 3393, 0, 3395, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2034, 0, 0, 0, 1061, 2034, 0, 2034, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3413, 0, 3416, + 0, 3418, 0, 0, 0, 0, 0, 0, 0, 2034, + 0, 0, 0, 0, 0, 0, 0, 1064, 1061, 0, + 0, 0, 0, 0, 0, 0, 2034, 0, 0, 0, + 0, 0, 0, 0, 2759, 2759, 2759, 0, 0, 0, + 0, 856, 0, 0, 856, 1071, 0, 0, 0, 0, + 0, 0, 3468, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2054, 0, 0, 1071, 0, 3478, 0, + 0, 0, 0, 1063, 2069, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, + 0, 856, 856, 0, 3515, 0, 0, 0, 0, 0, + 1063, 856, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 856, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2762, 0, 0, 0, 1063, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, + 0, 0, 1063, 0, 0, 0, 0, 0, 1066, 0, + 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, + 0, 2107, 0, 1064, 0, 0, 857, 0, 0, 0, + 0, 1066, 856, 0, 0, 0, 0, 1061, 857, 0, + 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 857, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, + 1064, 0, 0, 0, 0, 0, 1063, 0, 0, 0, + 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, + 2829, 0, 0, 0, 0, 0, 0, 0, 0, 1064, + 1066, 0, 0, 0, 0, 1067, 0, 0, 0, 0, + 0, 0, 0, 0, 2829, 0, 0, 0, 0, 0, + 0, 0, 1064, 0, 0, 0, 0, 857, 0, 1067, + 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1063, 0, 1061, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, + 1066, 0, 0, 0, 0, 0, 1064, 0, 0, 0, + 1063, 1063, 0, 0, 0, 1064, 0, 0, 0, 856, + 0, 0, 0, 0, 2034, 0, 0, 1064, 0, 1071, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 856, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 856, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2107, + 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1061, 856, 1064, 0, 857, 0, + 857, 0, 0, 0, 1061, 0, 0, 0, 1064, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 857, 1063, 0, 0, 0, 0, 0, + 0, 0, 848, 0, 0, 0, 0, 0, 0, 0, + 1064, 1064, 0, 0, 0, 0, 0, 0, 3873, 0, + 0, 0, 0, 0, 0, 0, 0, 3877, 0, 0, + 0, 0, 0, 3878, 0, 3879, 0, 856, 2035, 0, + 0, 0, 0, 0, 848, 1067, 0, 0, 0, 0, + 0, 1071, 0, 0, 0, 0, 1066, 0, 0, 0, + 0, 1071, 3903, 3904, 0, 0, 0, 0, 1067, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1061, + 2679, 0, 0, 1067, 0, 0, 0, 0, 3929, 0, + 0, 3932, 0, 3934, 0, 0, 0, 0, 0, 0, + 0, 0, 3938, 0, 0, 0, 0, 0, 0, 856, + 3945, 3946, 0, 0, 0, 0, 2762, 1061, 0, 0, + 0, 2762, 0, 1066, 0, 0, 0, 2762, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1061, 0, + 0, 0, 0, 3993, 1064, 0, 0, 0, 0, 4000, + 4001, 2759, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1066, 0, 0, 0, 0, 1067, 1069, 0, + 0, 0, 0, 0, 0, 4016, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1066, 1071, 0, 0, 0, + 0, 4029, 1069, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, + 0, 0, 1063, 0, 0, 0, 1063, 1063, 856, 0, + 856, 0, 0, 0, 1071, 2035, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 857, 0, 856, 1066, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1067, 1063, 1066, + 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, + 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1066, 0, 0, 0, 0, 0, 0, 0, 2034, 0, + 1071, 0, 0, 0, 1061, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1066, 1061, 0, 0, 0, + 0, 0, 1064, 0, 0, 0, 1064, 1064, 0, 1066, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4596, + 0, 1071, 0, 0, 0, 0, 0, 0, 1064, 0, + 0, 0, 0, 1066, 1066, 0, 0, 0, 0, 0, + 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2035, 0, 857, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1071, 0, 0, 0, 0, 1069, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1064, 0, 0, 1067, 0, 0, 0, 0, 0, 1061, + 0, 1069, 0, 0, 0, 2034, 4291, 4292, 0, 0, + 0, 0, 0, 0, 0, 0, 1069, 0, 0, 1063, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 856, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, + 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 857, 4328, 0, 0, 0, 1066, 0, 0, + 0, 0, 0, 0, 4333, 848, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, + 1069, 1063, 0, 0, 0, 0, 2829, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1061, 1067, 0, 4348, 4350, 0, 0, 0, 0, + 0, 4354, 4355, 0, 0, 0, 4356, 0, 0, 0, + 0, 4359, 0, 0, 4362, 4363, 1061, 0, 0, 4367, + 0, 0, 0, 0, 0, 4371, 848, 848, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1064, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, + 0, 0, 2759, 0, 0, 0, 0, 2759, 857, 0, + 0, 1067, 0, 2759, 0, 0, 0, 0, 0, 0, + 1069, 0, 1063, 0, 0, 0, 1067, 0, 1268, 0, + 0, 0, 0, 0, 0, 1067, 0, 0, 2829, 1063, + 2034, 0, 856, 0, 0, 0, 0, 1067, 0, 0, + 1061, 0, 1063, 0, 4431, 1061, 1061, 0, 0, 0, + 0, 1064, 0, 1071, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1067, 1071, 0, 1066, 0, 0, 0, 1066, + 1066, 0, 0, 0, 0, 0, 1067, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1067, 0, + 0, 0, 0, 2035, 2034, 0, 0, 0, 0, 0, + 1067, 0, 0, 0, 0, 0, 0, 0, 2035, 848, + 848, 0, 856, 0, 4492, 0, 0, 1071, 0, 0, + 0, 0, 1071, 1071, 0, 1061, 0, 0, 0, 0, + 0, 1066, 1064, 0, 0, 0, 0, 0, 0, 0, + 1067, 1067, 0, 1066, 0, 0, 0, 0, 0, 1064, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4528, 0, 0, 1066, 0, 0, 1069, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, + 1063, 0, 1063, 0, 0, 0, 0, 1063, 0, 0, + 0, 4596, 1071, 0, 0, 0, 0, 0, 856, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1067, 0, 1063, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1069, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, - 0, 0, 0, 833, 0, 0, 834, 0, 0, 0, + 0, 0, 0, 0, 2034, 1069, 0, 0, 1063, 0, + 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, + 0, 4632, 4633, 0, 0, 4634, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1958, - 834, 0, 0, 0, 1958, 1034, 1958, 0, 0, 0, - 0, 0, 0, 0, 0, 834, 0, 0, 834, 0, + 0, 0, 1066, 2034, 0, 0, 0, 1064, 0, 0, + 1064, 0, 1064, 4670, 4671, 0, 0, 1064, 2034, 0, + 0, 0, 0, 0, 0, 0, 0, 1063, 0, 1063, + 0, 0, 0, 4683, 1069, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, + 0, 0, 0, 0, 0, 0, 0, 0, 1069, 0, + 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, + 1069, 1071, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1064, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, + 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, + 0, 0, 1067, 0, 0, 0, 1067, 1067, 1063, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1063, 0, 1069, 0, 0, 0, 0, 0, 1063, + 0, 0, 0, 0, 0, 0, 0, 1064, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 833, 0, - 0, 833, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1066, 0, 0, 1067, 0, + 0, 0, 0, 1069, 1069, 0, 0, 0, 0, 0, + 1067, 0, 1066, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, + 0, 2679, 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1067, 0, 0, 0, 0, 0, 1063, 0, 0, 4860, + 1064, 0, 0, 0, 0, 0, 0, 0, 0, 1063, + 0, 0, 0, 0, 1871, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1064, 0, 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4910, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 810, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, - 0, 0, 0, 834, 834, 0, 833, 833, 0, 0, - 1034, 0, 0, 1959, 0, 0, 0, 0, 0, 833, - 0, 833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1033, 0, 0, 835, - 0, 0, 0, 0, 0, 0, 835, 0, 0, 1034, - 810, 810, 0, 0, 0, 0, 1033, 835, 1959, 0, + 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1033, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1063, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, + 1066, 0, 0, 1066, 0, 1066, 0, 0, 0, 0, + 1066, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 810, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 810, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 810, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 810, 810, 0, - 1034, 0, 0, 0, 810, 810, 0, 0, 0, 810, - 1034, 0, 0, 0, 810, 0, 0, 810, 810, 0, - 0, 0, 810, 0, 0, 0, 0, 0, 810, 0, - 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 810, 0, 0, 0, - 810, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 810, 0, 0, 0, 0, 810, 0, 0, - 0, 0, 0, 810, 0, 0, 1033, 0, 0, 0, - 0, 0, 0, 0, 1959, 0, 0, 0, 810, 0, + 0, 0, 0, 0, 4670, 0, 0, 0, 0, 1066, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, + 5052, 1067, 0, 0, 0, 1064, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, + 0, 1066, 0, 0, 0, 0, 1064, 0, 0, 0, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1069, 0, 0, 0, 1069, + 1069, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 834, 0, 0, 0, 834, - 0, 0, 810, 0, 0, 0, 0, 0, 0, 0, - 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, - 1034, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 833, 0, 0, - 0, 0, 1958, 0, 0, 0, 0, 0, 0, 0, - 0, 1034, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 833, 0, 0, - 0, 0, 1034, 0, 0, 0, 0, 0, 0, 833, - 0, 0, 0, 0, 834, 834, 1958, 1034, 0, 0, - 810, 0, 0, 0, 0, 0, 0, 834, 0, 0, - 833, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 834, 834, 0, 0, 0, 0, 835, 0, - 0, 0, 0, 835, 834, 0, 0, 0, 0, 0, - 1034, 0, 0, 0, 835, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 835, 0, 810, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 810, 0, 0, 835, 0, 0, 0, - 2029, 0, 835, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 835, 0, 0, 0, 0, 0, 0, - 0, 835, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1034, 0, 1034, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2029, 0, 0, 0, - 0, 0, 0, 0, 1959, 833, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 810, 0, 0, 0, 1034, 0, 0, 0, 0, - 810, 0, 0, 1033, 0, 0, 0, 0, 0, 835, - 0, 0, 0, 0, 0, 0, 0, 810, 810, 0, - 0, 810, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1228, 1228, 810, 0, 0, 0, 0, - 810, 0, 0, 0, 0, 810, 0, 0, 810, 810, - 0, 0, 0, 0, 0, 0, 810, 810, 0, 0, - 0, 0, 0, 0, 0, 1292, 0, 0, 0, 0, - 0, 0, 810, 0, 0, 0, 0, 0, 0, 833, - 0, 833, 0, 1033, 0, 810, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1033, 0, - 0, 0, 0, 0, 0, 0, 2029, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1033, 0, 1034, - 833, 0, 0, 0, 0, 0, 0, 0, 0, 810, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1033, 0, 1958, 0, 0, 0, - 0, 0, 810, 0, 0, 0, 0, 1033, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1033, - 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, - 0, 1033, 1959, 834, 0, 0, 0, 834, 0, 0, - 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 810, 0, 1034, 0, 0, - 0, 0, 0, 834, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1033, 0, 0, 1033, 0, - 0, 0, 0, 0, 810, 1034, 0, 810, 0, 810, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, - 0, 0, 0, 810, 0, 0, 0, 810, 0, 0, - 0, 0, 0, 1034, 834, 834, 0, 0, 810, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 810, 0, 0, - 0, 0, 0, 0, 0, 1959, 834, 835, 0, 1959, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1958, 0, 0, 0, 0, 0, 1034, 835, 0, 0, - 1034, 1034, 0, 0, 0, 810, 0, 0, 834, 835, - 0, 0, 834, 0, 0, 0, 0, 0, 0, 0, - 0, 833, 0, 0, 0, 0, 0, 1033, 0, 0, - 834, 0, 0, 0, 0, 0, 0, 835, 0, 0, - 0, 834, 0, 0, 0, 0, 0, 0, 0, 810, - 0, 0, 0, 835, 834, 0, 0, 0, 0, 0, - 0, 0, 834, 0, 0, 2653, 0, 0, 835, 0, - 810, 835, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1034, 1034, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 810, 1760, 0, 810, 1959, 0, 0, 0, - 0, 0, 0, 0, 810, 0, 0, 0, 0, 810, - 0, 810, 0, 810, 0, 0, 0, 0, 0, 0, - 810, 0, 1774, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 810, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1792, 1793, 1794, 0, 1796, 0, 0, 0, 1958, 0, - 833, 0, 834, 0, 0, 0, 0, 0, 835, 0, - 0, 0, 0, 0, 1838, 0, 835, 835, 0, 0, - 0, 0, 0, 0, 0, 0, 1960, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 810, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1875, 0, 0, 0, 0, - 0, 0, 2712, 0, 834, 0, 2029, 2718, 810, 810, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 810, - 0, 1960, 0, 0, 0, 1980, 0, 833, 0, 1992, - 1995, 0, 0, 0, 0, 0, 0, 0, 0, 810, - 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, - 0, 0, 0, 0, 0, 0, 834, 0, 0, 1033, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1033, 1023, 0, 0, 0, 810, 0, 0, 0, - 0, 0, 810, 810, 810, 0, 0, 0, 0, 0, - 0, 0, 0, 1023, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 810, 0, 0, 0, 0, 0, 0, - 0, 1033, 0, 0, 0, 833, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1958, - 0, 0, 0, 1959, 0, 0, 0, 0, 0, 1959, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 835, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 810, 810, 0, 0, - 0, 0, 1958, 0, 0, 0, 0, 0, 0, 0, - 810, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1958, 810, 810, 0, 0, 0, 1960, 0, 0, - 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 835, 0, - 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 835, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1033, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 834, 834, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 835, 835, 0, - 0, 834, 0, 0, 834, 0, 2029, 0, 0, 0, - 835, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 835, 835, 0, 0, 0, - 0, 0, 1023, 0, 0, 0, 0, 835, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1023, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1023, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1959, 1959, 1959, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 834, 0, 1959, 1033, 0, 834, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, - 2522, 1033, 0, 1023, 0, 0, 0, 0, 0, 0, - 0, 0, 1033, 2542, 0, 2544, 0, 1960, 2556, 2559, - 2564, 0, 0, 0, 0, 2570, 0, 0, 2575, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2582, 2583, 2584, 2585, 0, 0, 0, - 0, 2592, 0, 0, 0, 2604, 0, 0, 2606, 0, - 834, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, - 0, 2622, 0, 0, 0, 0, 0, 0, 1228, 0, - 2650, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1959, 0, - 0, 0, 0, 0, 0, 834, 0, 834, 0, 0, - 0, 0, 1023, 0, 0, 0, 0, 0, 0, 834, - 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2653, 2653, 2653, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1292, 0, - 0, 0, 0, 0, 2029, 0, 0, 2718, 0, 2718, - 0, 0, 0, 0, 2029, 0, 0, 0, 0, 0, - 0, 0, 834, 0, 0, 0, 0, 0, 0, 1025, - 0, 835, 0, 0, 0, 1960, 835, 834, 0, 0, - 835, 0, 0, 0, 0, 0, 0, 0, 835, 0, - 1025, 0, 0, 0, 0, 0, 0, 0, 0, 834, - 0, 0, 834, 0, 0, 1033, 835, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1033, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2760, - 0, 0, 0, 0, 0, 0, 1023, 2029, 0, 835, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 835, 835, 0, - 0, 1026, 0, 0, 0, 0, 0, 0, 0, 1959, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1026, 0, 0, 0, 0, 0, 1960, 835, - 0, 0, 1960, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1023, 0, 0, 0, 1033, 0, 1033, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 835, 0, 0, 0, 835, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1023, - 0, 0, 0, 835, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 835, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 835, 0, 1033, - 0, 0, 0, 0, 0, 835, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1033, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1023, - 2718, 0, 0, 0, 0, 0, 0, 2718, 0, 1960, - 0, 834, 0, 0, 1023, 0, 0, 0, 0, 0, - 0, 0, 1023, 0, 0, 0, 0, 0, 0, 1025, - 3000, 0, 0, 1023, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1025, - 0, 0, 0, 0, 0, 0, 0, 1959, 0, 0, - 0, 0, 1959, 1025, 1959, 0, 1033, 0, 0, 0, - 0, 0, 0, 0, 0, 835, 0, 0, 0, 0, - 1023, 0, 0, 0, 2718, 0, 0, 0, 0, 0, - 0, 0, 0, 1023, 0, 0, 0, 1033, 0, 0, - 0, 0, 0, 1028, 0, 1023, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 834, 1023, 0, 834, - 0, 0, 0, 0, 1028, 0, 0, 0, 0, 0, - 0, 1026, 0, 0, 0, 0, 0, 835, 0, 0, - 1025, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1026, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1023, 0, 0, 1023, 1026, 0, 0, 0, 0, - 0, 0, 3140, 835, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 835, 0, 0, 0, 0, 0, 0, 0, 835, - 1033, 0, 0, 0, 834, 834, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 834, 0, 834, - 0, 1033, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1026, 0, 0, 0, 1033, 0, 0, 1025, - 0, 0, 0, 0, 0, 0, 0, 3193, 0, 0, - 0, 0, 3199, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1960, 0, 0, 0, - 1033, 0, 1960, 0, 0, 0, 0, 1796, 0, 0, - 0, 0, 0, 1023, 0, 0, 0, 0, 2564, 0, - 2564, 2564, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3257, 0, 834, 3260, 0, 3262, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2653, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3280, 0, 3283, 0, 3285, - 0, 1026, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 835, 0, 0, - 0, 0, 2029, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2650, 2650, 2650, 0, 0, 0, 0, 0, - 0, 0, 0, 1028, 0, 0, 0, 0, 0, 0, - 3333, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1980, 1028, 0, 0, 0, 3344, 0, 0, - 0, 0, 0, 1995, 0, 0, 0, 1028, 0, 0, - 0, 835, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 835, 835, 0, - 0, 0, 0, 1025, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2718, 0, 0, 835, 0, 0, 835, 0, 0, - 0, 0, 0, 3381, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1028, 0, 0, 0, 1023, 0, - 0, 0, 1023, 1023, 0, 0, 0, 0, 0, 1025, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, - 1959, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1026, 1025, 1960, 1960, 1960, - 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1023, 0, 834, 0, 0, - 0, 835, 0, 0, 1959, 0, 0, 1023, 0, 0, - 0, 0, 0, 0, 835, 0, 1960, 0, 834, 835, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 835, - 0, 0, 0, 1028, 0, 0, 1033, 0, 0, 0, - 0, 1026, 0, 0, 0, 0, 0, 1023, 0, 0, - 0, 0, 0, 0, 0, 0, 1025, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1025, 0, 0, 0, 0, 0, 0, 1026, 1025, - 0, 0, 0, 0, 0, 2029, 0, 0, 0, 0, - 1025, 0, 0, 835, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1960, 0, 0, 0, 0, 0, 1025, 835, 0, - 835, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1025, 0, 835, 0, 835, 0, 0, 0, 1026, 0, - 0, 0, 1025, 834, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1026, 1025, 0, 0, 0, 0, 0, - 0, 1026, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1026, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1023, 0, 0, 0, 0, 0, 835, 0, - 0, 0, 0, 0, 0, 0, 1033, 0, 1025, 0, - 0, 1025, 0, 0, 0, 0, 1033, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1028, 0, 1026, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1026, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1026, 835, 0, 834, 0, 834, - 0, 0, 1023, 0, 0, 0, 1026, 0, 2653, 0, - 835, 0, 0, 2653, 0, 0, 0, 0, 0, 2653, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 835, 1028, 0, 835, 0, 0, 834, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1026, 0, 0, 1026, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1028, 0, 0, 0, 0, 0, 1033, 0, 0, 0, - 1025, 0, 3740, 0, 1959, 0, 0, 0, 0, 0, - 0, 3744, 0, 0, 0, 0, 0, 3745, 0, 3746, - 0, 0, 0, 0, 0, 0, 0, 1033, 0, 0, - 0, 0, 1960, 0, 0, 0, 0, 0, 0, 0, - 1023, 0, 0, 0, 0, 0, 3770, 3771, 1033, 0, - 0, 0, 0, 0, 0, 0, 0, 1023, 0, 0, - 0, 0, 0, 2718, 2570, 0, 0, 0, 1023, 0, - 1028, 0, 3796, 0, 0, 3799, 0, 3801, 0, 0, - 0, 0, 0, 0, 0, 1028, 3805, 0, 0, 0, - 0, 0, 0, 1028, 3812, 3813, 0, 0, 0, 0, - 0, 0, 1026, 0, 1028, 0, 1033, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3857, 0, 0, 0, 0, - 0, 3864, 3865, 2650, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1028, 0, 0, 0, 0, 0, 0, 3880, 0, - 0, 0, 0, 0, 1028, 0, 0, 0, 0, 0, - 0, 1292, 0, 0, 0, 0, 1028, 0, 1959, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1028, 0, - 0, 0, 0, 4403, 835, 1033, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 834, - 0, 0, 0, 0, 0, 1025, 0, 0, 0, 1025, - 1025, 0, 0, 0, 0, 1029, 0, 0, 0, 0, - 0, 0, 1028, 0, 0, 1028, 0, 0, 0, 0, - 1960, 1033, 0, 0, 0, 1960, 1029, 1960, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1023, 0, 0, 1023, 0, 1023, 0, 0, 0, 0, - 1023, 0, 1025, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1025, 0, 0, 0, 0, 835, - 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1026, 0, 0, - 0, 1026, 1026, 0, 0, 0, 0, 0, 0, 0, - 0, 1023, 0, 0, 1025, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1023, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1028, 2718, 1959, 0, 834, 0, - 0, 0, 0, 1023, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1026, 0, 0, 835, 835, 0, - 0, 0, 0, 0, 0, 0, 1026, 0, 0, 0, - 835, 0, 835, 0, 0, 0, 0, 0, 0, 1031, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1031, 0, 0, 0, 0, 0, 1026, 0, 0, 0, - 0, 0, 1023, 0, 1023, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4117, 4118, 2718, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1025, - 0, 0, 0, 0, 0, 0, 835, 0, 0, 0, - 0, 1033, 0, 0, 0, 1023, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1029, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1023, 0, 0, 0, 0, 1029, 0, 0, 0, 1033, - 0, 0, 0, 0, 0, 0, 0, 4158, 0, 1029, - 0, 0, 0, 834, 0, 0, 1023, 0, 4163, 1025, - 0, 0, 0, 1023, 0, 0, 0, 1959, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1028, - 0, 0, 0, 1028, 1028, 0, 0, 0, 0, 0, - 0, 1026, 1033, 0, 0, 0, 1033, 1033, 4178, 4180, - 0, 0, 0, 0, 0, 4184, 4185, 0, 0, 0, - 4186, 0, 0, 0, 0, 4189, 0, 0, 4192, 4193, - 0, 0, 1023, 4197, 0, 0, 1029, 0, 0, 4201, - 1959, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1023, 0, 0, 0, 0, 0, 1028, 0, 0, 1959, - 0, 0, 0, 1023, 0, 0, 0, 0, 1028, 0, - 0, 1026, 0, 2650, 0, 0, 0, 0, 2650, 0, - 0, 0, 0, 0, 2650, 0, 0, 1025, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4403, 1033, 1228, - 0, 0, 0, 0, 1025, 0, 0, 0, 1028, 1031, - 0, 0, 0, 0, 0, 1025, 0, 0, 0, 0, - 0, 0, 0, 4256, 0, 0, 0, 0, 835, 1031, - 0, 0, 0, 1960, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1031, 0, 1029, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 835, 0, - 0, 0, 0, 0, 0, 0, 1023, 0, 0, 0, - 835, 0, 0, 0, 0, 0, 0, 1960, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1023, 0, 1026, - 0, 835, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1026, 0, 0, 0, - 0, 4316, 1023, 0, 0, 0, 0, 1026, 0, 0, - 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1023, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1028, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4350, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1025, 0, 0, - 1025, 0, 1025, 0, 0, 0, 0, 1025, 0, 1031, - 0, 0, 0, 1028, 0, 0, 835, 0, 1023, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1029, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1025, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1025, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4442, 4443, - 0, 0, 4444, 0, 0, 1029, 0, 0, 0, 1026, - 1025, 0, 1026, 0, 1026, 0, 0, 0, 0, 1026, - 0, 0, 0, 0, 0, 0, 0, 1023, 0, 0, - 835, 0, 835, 0, 0, 0, 0, 4478, 4479, 0, - 0, 1028, 1029, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1028, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1028, - 1026, 835, 0, 0, 0, 0, 0, 0, 0, 1025, - 0, 1025, 0, 0, 0, 0, 0, 1026, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1026, 0, 0, 0, 0, 1960, 0, 0, - 0, 0, 1029, 1031, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1029, 0, 0, - 0, 0, 1025, 0, 0, 1029, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1029, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1025, 0, 0, - 0, 0, 1023, 0, 0, 0, 0, 0, 0, 0, - 0, 1026, 0, 1026, 0, 0, 0, 0, 0, 1031, - 0, 0, 0, 1025, 0, 0, 0, 0, 0, 0, - 1025, 0, 0, 1029, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1029, 0, 0, 0, - 0, 1023, 0, 0, 0, 0, 1031, 0, 1029, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2570, 0, - 1029, 0, 0, 0, 1026, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1025, - 0, 0, 0, 0, 4643, 0, 0, 0, 0, 1026, - 0, 1028, 0, 0, 1028, 0, 1028, 1025, 0, 1796, - 0, 1028, 0, 0, 1029, 0, 0, 1029, 0, 0, - 1025, 1960, 0, 0, 0, 1026, 0, 0, 1292, 0, - 0, 0, 1026, 0, 0, 0, 1031, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1031, 835, 0, 0, 0, 0, 0, 0, 1031, - 0, 0, 1028, 0, 0, 0, 4692, 0, 0, 0, - 1031, 0, 0, 0, 0, 0, 0, 0, 0, 1028, - 0, 0, 1023, 0, 0, 0, 0, 0, 0, 0, - 0, 1026, 1023, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1028, 0, 0, 0, 0, 1026, - 0, 0, 0, 0, 0, 0, 0, 1031, 0, 0, - 0, 0, 1026, 1025, 0, 0, 0, 0, 0, 0, - 1031, 4743, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1031, 0, 1025, 0, 1029, 0, 0, 0, - 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1025, - 0, 0, 0, 1028, 0, 1028, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4478, 0, 0, 0, 1031, 0, - 0, 1031, 0, 1025, 0, 0, 0, 0, 0, 1960, - 0, 835, 1023, 0, 0, 0, 0, 0, 4800, 0, - 0, 0, 0, 0, 0, 1026, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1028, 0, 0, 0, - 0, 0, 0, 1023, 0, 0, 1026, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1028, 0, 0, 1023, 0, 0, 0, 0, 0, - 0, 1026, 0, 0, 0, 0, 0, 0, 0, 1023, - 0, 0, 0, 0, 0, 0, 0, 1028, 0, 0, - 0, 0, 0, 0, 1028, 1025, 0, 0, 835, 0, - 0, 0, 0, 0, 0, 1026, 0, 0, 0, 4860, - 4860, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4478, 0, 1023, 0, 0, 0, 0, 0, 0, 0, - 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1028, 0, 0, 0, 0, 0, 0, - 0, 1029, 0, 0, 0, 1029, 1029, 0, 0, 0, - 0, 1028, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1028, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1025, 4860, 835, 1026, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1960, 1023, 0, 0, 4931, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1029, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1029, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1023, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1960, 0, 0, 0, 0, 0, 0, - 1029, 0, 0, 0, 0, 0, 0, 1028, 0, 0, - 0, 0, 1960, 0, 0, 0, 1026, 4860, 4972, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1028, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1908, 0, 5104, 0, 0, 1064, 0, 0, 0, 0, + 1066, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1028, 0, 1833, 0, 0, 0, 1025, - 0, 0, 0, 0, 0, 1031, 0, 0, 0, 1031, - 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1028, 0, 0, + 0, 1069, 1067, 0, 0, 5130, 5130, 0, 0, 0, + 0, 0, 0, 1069, 0, 0, 0, 0, 0, 1067, + 1063, 0, 0, 4670, 0, 0, 0, 0, 0, 0, + 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, + 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, + 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1023, 0, 0, 0, 0, 0, 0, 1025, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1833, + 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1066, 0, 0, 0, 5130, 0, + 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1031, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1029, 0, 0, 0, 0, - 0, 1026, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1028, - 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1023, - 1026, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1029, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1023, 0, 1025, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1025, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, + 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1066, 0, 0, 1064, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1066, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, + 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1069, 0, 0, 0, 0, 1067, 0, 0, + 1067, 0, 1067, 0, 0, 0, 0, 1067, 0, 0, + 0, 5130, 0, 0, 0, 0, 0, 5288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1023, 0, 0, 1028, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1067, 1069, 0, 0, 0, 1066, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1023, 0, - 0, 0, 1023, 1023, 0, 0, 0, 0, 0, 1031, - 0, 1026, 0, 1029, 0, 0, 0, 0, 0, 0, - 0, 1026, 0, 0, 0, 0, 0, 0, 0, 0, - 1029, 0, 0, 0, 0, 0, 0, 0, 0, 1025, - 0, 1029, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1067, 1066, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1066, 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1025, 0, 0, 0, 0, 0, 0, 0, 0, 1031, + 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, + 0, 0, 0, 0, 0, 0, 0, 1067, 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1025, 0, 1028, 1023, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1025, 0, 0, 0, + 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1908, 0, 1063, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, + 1067, 1064, 2661, 0, 1066, 0, 0, 0, 0, 0, + 0, 1064, 0, 0, 0, 0, 1908, 1908, 1908, 0, + 1908, 0, 0, 0, 1063, 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1026, 1028, 0, 0, 0, 0, 0, 0, 1025, + 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, + 0, 1067, 0, 0, 0, 0, 0, 0, 0, 1067, + 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1026, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1833, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1026, 0, 0, 0, 1031, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1026, 0, - 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1031, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1025, 0, - 0, 0, 0, 1029, 0, 0, 1029, 0, 1029, 0, - 0, 1026, 0, 1029, 0, 0, 0, 1833, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, + 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, + 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1066, 1067, 0, + 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1833, 0, 1028, 0, 2552, 0, 0, 0, 0, - 0, 0, 0, 1028, 1025, 0, 0, 0, 0, 1833, - 1833, 1833, 0, 1833, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1029, 0, 0, 0, 0, 0, + 1069, 0, 0, 1069, 1064, 1069, 0, 0, 0, 0, + 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, + 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1908, 0, 0, 1908, 0, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1029, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1833, 0, 0, 0, 0, - 1026, 0, 0, 0, 0, 0, 1029, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, + 0, 0, 1066, 0, 0, 1067, 0, 0, 0, 0, + 1064, 0, 0, 1063, 0, 0, 0, 0, 0, 0, + 0, 1069, 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1833, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1026, 0, 0, 0, + 0, 1067, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1028, 0, 0, 0, 0, 1025, 0, - 0, 0, 0, 0, 0, 1029, 0, 1029, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1031, 0, 0, - 1031, 0, 1031, 0, 1028, 0, 0, 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1028, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, + 1069, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1028, 0, 0, 0, 0, 0, 0, 1833, 1029, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1031, 1833, - 0, 0, 1833, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1029, 0, 1031, 0, 0, 0, 0, - 1026, 0, 0, 1028, 0, 0, 1025, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1029, - 1031, 0, 0, 0, 0, 0, 1029, 0, 0, 0, - 0, 0, 0, 0, 1025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1025, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1029, 0, 0, 0, 1031, - 0, 1031, 1028, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1029, 0, 0, 0, 0, 1026, 0, - 0, 0, 0, 0, 0, 0, 1029, 0, 0, 0, - 0, 0, 0, 0, 0, 1025, 0, 0, 0, 1025, - 1025, 0, 0, 0, 0, 0, 1026, 0, 1028, 0, + 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1069, 1066, 0, 0, 0, 0, 0, + 0, 1067, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1031, 0, 0, 0, 0, 0, 0, 0, + 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1026, 0, 0, 1031, 0, 0, + 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, + 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1031, 0, 0, 0, 0, 0, 0, - 1031, 0, 0, 0, 0, 0, 0, 0, 0, 1029, - 0, 1025, 0, 0, 0, 0, 0, 1026, 0, 0, - 0, 1026, 1026, 0, 0, 0, 0, 0, 0, 0, - 1029, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1028, 0, 0, 1029, 0, 0, 0, 1031, + 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1063, 0, 0, 1064, 0, 0, 0, + 0, 1069, 0, 0, 1067, 0, 0, 0, 0, 1066, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1031, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1029, - 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1069, 1063, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1026, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, + 0, 0, 1063, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1069, 1067, + 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1064, 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1028, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1069, 0, 0, 0, 0, 1067, + 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1029, 0, 0, 0, 0, 0, 0, 1028, 0, - 0, 0, 0, 1031, 0, 0, 0, 0, 0, 0, + 0, 0, 1063, 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1028, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1908, 0, 0, 0, 0, 0, 0, 1064, 0, 0, + 0, 0, 1064, 1064, 1066, 0, 0, 0, 0, 0, + 1908, 0, 1908, 0, 0, 2661, 2661, 0, 3367, 0, + 2661, 0, 0, 0, 1908, 0, 0, 1908, 0, 0, + 0, 0, 1908, 0, 0, 0, 0, 0, 1908, 0, + 0, 0, 0, 1908, 0, 0, 1066, 0, 0, 0, + 1908, 1908, 1908, 1908, 0, 0, 0, 2661, 2661, 0, + 1908, 1067, 0, 0, 1069, 0, 0, 0, 0, 0, + 0, 1067, 1908, 0, 1908, 0, 0, 0, 0, 0, + 0, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, + 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1064, 0, 0, 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1031, 0, 0, 0, 0, 0, 1028, - 1029, 0, 0, 1028, 1028, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1833, + 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1833, - 0, 1833, 0, 0, 2552, 2552, 0, 3234, 0, 2552, - 0, 0, 0, 1833, 0, 0, 1833, 0, 0, 0, - 0, 1833, 0, 0, 0, 0, 0, 1833, 0, 0, - 0, 0, 1833, 0, 0, 0, 0, 0, 0, 1833, - 1833, 1833, 1833, 0, 0, 1031, 2552, 2552, 0, 1833, - 0, 0, 0, 0, 0, 1028, 0, 0, 0, 0, - 0, 1833, 0, 1833, 0, 0, 0, 0, 0, 0, - 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1063, 0, 1069, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1066, + 0, 0, 0, 0, 0, 0, 0, 1069, 0, 0, + 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1029, 0, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, + 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1064, 1069, 0, 0, 0, 0, 0, 0, 0, + 1067, 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1069, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1029, 0, 0, 0, 1031, - 0, 0, 0, 0, 0, 1029, 0, 0, 0, 0, + 1066, 0, 0, 0, 0, 1066, 1066, 0, 0, 0, + 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1031, 0, + 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1069, 0, 0, 0, 1908, 0, + 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1029, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1833, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1029, 0, 1031, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1031, - 0, 0, 1029, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1029, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1069, 0, + 0, 0, 0, 0, 0, 1908, 0, 0, 0, 0, + 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3367, 3367, 0, + 0, 2661, 2661, 2661, 2661, 0, 0, 2661, 2661, 2661, + 2661, 2661, 2661, 2661, 2661, 2661, 2661, 3367, 1067, 0, + 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, + 0, 0, 0, 1069, 0, 0, 0, 0, 0, 1908, + 0, 0, 1908, 1067, 1908, 0, 0, 3367, 3367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1908, 2661, 2661, 1908, 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1067, 0, 0, + 0, 0, 1067, 1067, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1833, 0, 1031, + 0, 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1029, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1833, 1031, 0, 0, 0, 0, 1833, 0, 0, 0, - 1029, 0, 0, 0, 0, 0, 1031, 0, 0, 0, - 0, 0, 3234, 3234, 0, 0, 2552, 2552, 2552, 2552, - 0, 0, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, - 2552, 2552, 3234, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1031, - 0, 0, 0, 0, 1833, 0, 0, 1833, 0, 1833, - 0, 0, 3234, 3234, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1833, 2552, 2552, - 1833, 0, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1029, 0, 0, 0, 0, 0, - 1833, 0, 0, 0, 0, 0, 0, 0, 1031, 0, - 0, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1833, 0, - 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1029, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1029, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2661, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1029, 0, 0, 0, 1029, 1029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1031, 0, 0, 1029, 0, 0, + 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1908, 0, 0, 0, 1908, 1908, 1908, 0, + 0, 0, 0, 0, 3367, 3367, 3367, 3367, 0, 0, + 0, 0, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, + 3367, 3367, 1908, 1908, 0, 0, 0, 0, 0, 0, + 1069, 0, 0, 0, 0, 1069, 1069, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, + 0, 1908, 0, 1908, 0, 0, 0, 1908, 0, 0, + 3367, 3367, 0, 0, 1908, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1908, 0, 0, 0, 0, 0, 0, 1908, + 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1908, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1069, 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1031, 0, 1833, 0, 1031, - 1031, 1833, 1833, 1833, 0, 0, 0, 0, 0, 3234, - 3234, 3234, 3234, 0, 0, 0, 0, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 1833, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1833, 0, 0, 1833, 0, 1833, 0, - 0, 0, 1833, 0, 0, 3234, 3234, 0, 0, 1833, - 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1833, 0, 0, 0, 0, 0, - 0, 1833, 1833, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5481,54 +7430,58 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3367, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1908, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, + 0, 0, 1908, 2661, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 1908, + 0, 0, 0, 1908, 1908, 1908, 0, 0, 1908, 0, + 0, 1908, 1908, 0, 0, 0, 1908, 0, 0, 0, + 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1833, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1833, 0, 0, 0, 0, - 1833, 2552, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1833, 0, 1833, 0, 0, - 0, 1833, 1833, 1833, 0, 0, 1833, 0, 0, 1833, - 1833, 0, 0, 0, 1833, 0, 0, 0, 1833, 0, + 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1833, 0, 0, 0, 0, 0, 0, + 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3367, 2661, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1908, 1908, 1908, 0, 0, 0, 0, 0, 0, + 0, 2661, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, + 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3234, 2552, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1833, - 1833, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1833, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5539,9282 +7492,9726 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2661, 0, 0, 3367, 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3367, + 0, 2661, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1833, 0, 0, + 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 783, 1146, 601, 1147, 1148, 1149, 655, - 1150, 0, 0, 0, 0, 0, 0, 1833, 224, 225, - 226, 227, 228, 229, 230, 231, 2644, 233, 234, 235, - 0, 0, 0, 0, 1151, 0, 0, 236, 237, 0, - 238, 239, 784, 240, 241, 242, 243, 1152, 785, 1153, - 1154, 0, 247, 248, 249, 250, 251, 1155, 1156, 252, - 253, 1157, 1158, 256, 0, 257, 258, 259, 260, 1159, - 0, 1160, 0, 262, 263, 264, 265, 787, 266, 267, - 268, 0, 269, 270, 271, 272, 273, 274, 1833, 788, - 275, 276, 277, 1161, 1162, 1163, 1164, 1165, 1166, 1167, - 278, 279, 280, 281, 282, 283, 1168, 1169, 286, 0, - 287, 0, 288, 289, 290, 291, 292, 293, 0, 294, - 295, 296, 2645, 0, 297, 298, 1004, 300, 301, 1833, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 311, 1170, 313, 314, 315, 1171, 1172, 317, 0, - 318, 319, 1173, 321, 0, 322, 0, 323, 790, 0, - 791, 324, 325, 326, 0, 327, 1174, 0, 1175, 330, - 0, 331, 332, 333, 334, 335, 792, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 344, 345, 0, 346, - 793, 347, 348, 349, 350, 351, 1176, 1177, 0, 1178, - 0, 355, 794, 795, 356, 796, 357, 358, 359, 360, - 361, 0, 0, 362, 1179, 797, 364, 798, 0, 365, - 366, 367, 1180, 1181, 368, 369, 370, 371, 372, 373, + 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2661, 2661, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 3367, 3367, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 2753, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 1908, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 2754, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 2755, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 2756, 0, + 0, 0, 0, 0, 0, 1256, 2757, 804, 1185, 618, + 1186, 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, + 0, 0, 225, 226, 227, 228, 229, 230, 231, 232, + 0, 234, 235, 236, 0, 0, 0, 0, 1190, 0, + 0, 237, 238, 0, 239, 240, 241, 805, 242, 243, + 244, 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, + 252, 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, + 259, 260, 261, 262, 1198, 0, 1199, 0, 264, 265, + 266, 267, 268, 808, 269, 270, 271, 0, 272, 273, + 274, 275, 276, 277, 0, 809, 278, 279, 280, 1200, + 1201, 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, + 285, 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, + 293, 294, 295, 296, 0, 297, 298, 299, 300, 0, + 0, 301, 302, 1042, 304, 305, 0, 306, 307, 308, + 0, 309, 310, 311, 0, 312, 313, 314, 315, 1210, + 317, 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, + 325, 0, 326, 0, 327, 811, 0, 812, 328, 329, + 330, 331, 0, 332, 1214, 0, 1215, 335, 0, 336, + 337, 338, 339, 340, 813, 341, 342, 343, 344, 0, + 345, 346, 347, 348, 349, 350, 0, 351, 814, 352, + 353, 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, + 815, 816, 361, 817, 362, 363, 364, 365, 366, 0, + 0, 367, 1219, 818, 369, 819, 0, 370, 371, 372, + 1220, 1221, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 1222, 820, + 1223, 391, 392, 393, 394, 1224, 395, 396, 821, 397, + 1225, 1226, 399, 1227, 401, 402, 403, 0, 404, 405, + 0, 0, 1228, 407, 408, 0, 0, 409, 410, 822, + 411, 823, 1229, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 0, 0, 422, 423, 1230, 425, 426, 427, + 428, 429, 0, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 1231, 440, 441, 442, 443, 0, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 0, 456, 457, 824, 458, 459, 460, 1232, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 40, 471, 472, + 473, 474, 475, 1233, 476, 477, 478, 479, 480, 825, + 481, 482, 1234, 484, 0, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 1235, 0, 498, + 499, 44, 500, 826, 501, 502, 503, 504, 505, 0, + 1236, 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, + 513, 514, 515, 516, 517, 518, 519, 0, 1241, 520, + 521, 522, 523, 524, 1242, 0, 525, 526, 527, 528, + 529, 1116, 1243, 0, 532, 827, 533, 534, 535, 536, + 0, 0, 537, 0, 49, 538, 539, 540, 541, 542, + 543, 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, + 1251, 554, 555, 556, 557, 1252, 0, 50, 0, 0, + 0, 0, 1253, 1254, 0, 0, 0, 0, 0, 0, + 0, 1256, 4872, 804, 1185, 618, 1186, 1187, 1188, 677, + 1189, 0, 0, 0, 0, 0, 0, 0, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 1190, 0, 0, 237, 238, 0, + 239, 240, 241, 805, 242, 243, 244, 245, 1191, 806, + 1192, 1193, 0, 249, 250, 251, 252, 253, 1194, 1195, + 254, 255, 1196, 1197, 258, 0, 259, 260, 261, 262, + 1198, 0, 1199, 0, 264, 265, 266, 267, 268, 808, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 809, 278, 279, 280, 1200, 1201, 1202, 1203, 1204, + 1205, 1206, 281, 282, 283, 284, 285, 286, 1207, 1208, + 289, 1209, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 1042, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 1210, 317, 318, 319, 1211, + 1212, 321, 0, 322, 323, 1213, 325, 0, 326, 0, + 327, 811, 0, 812, 328, 329, 330, 331, 0, 332, + 1214, 0, 1215, 335, 0, 336, 337, 338, 339, 340, + 813, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 814, 352, 353, 354, 355, 356, + 1216, 1217, 0, 1218, 0, 360, 815, 816, 361, 817, + 362, 363, 364, 365, 366, 0, 0, 367, 1219, 818, + 369, 819, 0, 370, 371, 372, 1220, 1221, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 1222, 820, 1223, 391, 392, 393, + 394, 1224, 395, 396, 821, 397, 1225, 1226, 399, 1227, + 401, 402, 403, 0, 404, 405, 0, 0, 1228, 407, + 408, 0, 0, 409, 410, 822, 411, 823, 1229, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 1230, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 1231, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 824, + 458, 459, 460, 1232, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 1233, + 476, 477, 478, 479, 480, 825, 481, 482, 1234, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 1235, 0, 498, 499, 0, 500, 826, + 501, 502, 503, 504, 505, 0, 1236, 1237, 0, 0, + 508, 509, 1238, 511, 1239, 1240, 513, 514, 515, 516, + 517, 518, 519, 0, 1241, 520, 521, 522, 523, 524, + 1242, 0, 525, 526, 527, 528, 529, 530, 1243, 0, + 532, 827, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 1244, 1245, + 1246, 1247, 549, 1248, 1249, 1250, 1251, 554, 555, 556, + 557, 1252, 0, 0, 0, 0, 0, 0, 1253, 1254, + 0, 0, 0, 0, 0, 0, 0, 1256, 2663, 804, + 1185, 618, 1186, 1187, 1188, 677, 1189, 0, 0, 0, + 0, 0, 0, 0, 225, 226, 227, 228, 229, 230, + 231, 232, 0, 234, 235, 236, 0, 0, 0, 0, + 1190, 0, 0, 237, 238, 0, 239, 240, 241, 805, + 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, 249, + 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, 1197, + 258, 0, 259, 260, 261, 262, 1198, 0, 1199, 0, + 264, 265, 266, 267, 268, 808, 269, 270, 271, 0, + 272, 273, 274, 275, 276, 277, 0, 809, 278, 279, + 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, 282, + 283, 284, 285, 286, 1207, 1208, 289, 1209, 290, 0, + 291, 292, 293, 294, 295, 296, 0, 297, 298, 299, + 300, 0, 0, 301, 302, 1042, 304, 305, 0, 306, + 307, 308, 0, 309, 310, 311, 0, 312, 313, 314, + 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, 322, + 323, 1213, 325, 0, 326, 0, 327, 811, 0, 812, + 328, 329, 330, 331, 0, 332, 1214, 0, 1215, 335, + 0, 336, 337, 338, 339, 340, 813, 341, 342, 343, + 344, 0, 345, 346, 347, 348, 349, 350, 0, 351, + 814, 352, 353, 354, 355, 356, 1216, 1217, 0, 1218, + 0, 360, 815, 816, 361, 817, 362, 363, 364, 365, + 366, 0, 0, 367, 1219, 818, 369, 819, 0, 370, + 371, 372, 1220, 1221, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 1222, 820, 1223, 391, 392, 393, 394, 1224, 395, 396, + 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, 0, + 404, 405, 0, 0, 1228, 407, 408, 0, 0, 409, + 410, 822, 411, 823, 1229, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 0, 0, 422, 423, 1230, 425, + 426, 427, 428, 429, 0, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 1231, 440, 441, 442, 443, 0, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 0, 456, 457, 824, 458, 459, 460, 1232, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 0, + 471, 472, 473, 474, 475, 1233, 476, 477, 478, 479, + 480, 825, 481, 482, 1234, 484, 0, 485, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 1235, + 0, 498, 499, 0, 500, 826, 501, 502, 503, 504, + 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, 511, + 1239, 1240, 513, 514, 515, 516, 517, 518, 519, 0, + 1241, 520, 521, 522, 523, 524, 1242, 0, 525, 526, + 527, 528, 529, 530, 1243, 0, 532, 827, 533, 534, + 535, 536, 0, 0, 537, 0, 0, 538, 539, 540, + 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, 1248, + 1249, 1250, 1251, 554, 555, 556, 557, 1252, 0, 0, + 0, 0, 0, 0, 1253, 1254, 0, 0, 0, 0, + 0, 0, 0, 1256, 3881, 804, 1185, 618, 1186, 1187, + 1188, 677, 1189, 0, 0, 0, 0, 0, 0, 0, + 225, 226, 227, 228, 229, 230, 231, 232, 0, 234, + 235, 236, 0, 0, 0, 0, 1190, 0, 0, 237, + 238, 0, 239, 240, 241, 805, 242, 243, 244, 245, + 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, 253, + 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, 260, + 261, 262, 1198, 0, 1199, 0, 264, 265, 266, 267, + 268, 808, 269, 270, 271, 0, 272, 273, 274, 275, + 276, 277, 0, 809, 278, 279, 280, 1200, 1201, 1202, + 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, 286, + 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, 294, + 295, 296, 0, 297, 298, 299, 300, 0, 0, 301, + 302, 1042, 304, 305, 0, 306, 307, 308, 0, 309, + 310, 311, 0, 312, 313, 314, 315, 1210, 317, 318, + 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, 0, + 326, 0, 327, 811, 0, 812, 328, 329, 330, 331, + 0, 332, 1214, 0, 1215, 335, 0, 336, 337, 338, + 339, 340, 813, 341, 342, 343, 344, 0, 345, 346, + 347, 348, 349, 350, 0, 351, 814, 352, 353, 354, + 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, 816, + 361, 817, 362, 363, 364, 365, 366, 0, 0, 367, + 1219, 818, 369, 819, 0, 370, 371, 372, 1220, 1221, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 1222, 820, 1223, 391, + 392, 393, 394, 1224, 395, 396, 821, 397, 1225, 1226, + 399, 1227, 401, 402, 403, 0, 404, 405, 0, 0, + 1228, 407, 408, 0, 0, 409, 410, 822, 411, 823, + 1229, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 0, 0, 422, 423, 1230, 425, 426, 427, 428, 429, + 0, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 1231, 440, 441, 442, 443, 0, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 0, 456, + 457, 824, 458, 459, 460, 1232, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, + 475, 1233, 476, 477, 478, 479, 480, 825, 481, 482, + 1234, 484, 0, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 1235, 0, 498, 499, 0, + 500, 826, 501, 502, 503, 504, 505, 0, 1236, 1237, + 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, 514, + 515, 516, 517, 518, 519, 0, 1241, 520, 521, 522, + 523, 524, 1242, 0, 525, 526, 527, 528, 529, 530, + 1243, 0, 532, 827, 533, 534, 535, 536, 0, 0, + 537, 0, 0, 538, 539, 540, 541, 542, 543, 544, + 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, 554, + 555, 556, 557, 1252, 0, 0, 224, 0, 0, 0, + 1253, 1254, 0, 0, 0, 0, 0, 0, 0, 1256, + 3952, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 3970, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, -1726, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, -1726, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, -1726, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, -1726, 362, 363, 364, 365, 366, 0, 0, + 367, 368, -1726, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, -1726, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, -1726, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 0, 0, 0, 1034, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1337, 225, 226, 227, 228, 229, 230, 231, 232, + 0, 234, 235, 236, 0, 0, 0, 0, 0, 0, + 0, 237, 238, 0, 239, 240, 241, 805, 242, 243, + 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, 251, + 252, 253, 0, 0, 254, 255, 1038, 1039, 258, 0, + 259, 260, 261, 262, 0, 0, 807, 0, 264, 265, + 266, 267, 268, 808, 269, 270, 271, 0, 272, 273, + 274, 275, 276, 277, 0, 809, 278, 279, 280, 0, + 0, 0, 810, 0, 0, 0, 281, 282, 283, 284, + 285, 286, 1040, 1041, 289, 0, 290, 0, 291, 292, + 293, 294, 295, 296, 0, 297, 298, 299, 300, 0, + 0, 301, 302, 1042, 304, 305, 0, 306, 307, 308, + 0, 309, 310, 311, 0, 312, 313, 314, 315, 0, + 317, 318, 319, 0, 0, 321, 0, 322, 323, 1043, + 325, 0, 326, 0, 327, 811, 0, 812, 328, 329, + 330, 331, 0, 332, 0, 0, 0, 335, 0, 336, + 337, 338, 339, 340, 813, 341, 342, 343, 344, 2093, + 345, 346, 347, 348, 349, 350, 0, 351, 814, 2094, + 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, 360, + 815, 816, 361, 817, 362, 363, 364, 365, 366, 0, + 0, 367, 0, 818, 369, 819, 0, 370, 371, 372, + 0, 0, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 1048, 820, + 1049, 391, 392, 393, 0, 0, 395, 396, 821, 397, + 0, 0, 399, 1050, 401, 402, 403, 0, 404, 405, + 0, 0, 406, 407, 408, 0, 0, 409, 2096, 822, + 411, 823, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 0, 0, 422, 423, 0, 425, 0, 427, + 428, 429, 0, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 1051, 440, 441, 442, 443, 0, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 0, 456, 457, 824, 458, 459, 460, 0, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 0, 471, 472, + 473, 474, 475, 0, 476, 477, 2097, 479, 480, 825, + 481, 482, 1053, 484, 0, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 0, 0, 498, + 499, 0, 500, 826, 501, 502, 503, 504, 505, 0, + 1054, 1055, 0, 0, 508, 509, 0, 511, 0, 0, + 513, 514, 515, 516, 517, 518, 519, 0, 0, 520, + 521, 522, 523, 524, 0, 0, 525, 526, 527, 528, + 529, 0, 1056, 2098, 532, 827, 533, 534, 535, 536, + 0, 0, 537, 0, 0, 538, 539, 540, 541, 542, + 543, 1034, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 555, 556, 557, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 2203, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 0, 1035, 806, 1036, 1037, + 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, + 1038, 1039, 258, 0, 259, 260, 261, 262, 0, 0, + 807, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 0, 0, 0, 810, 0, 0, 0, + 281, 282, 283, 284, 285, 286, 1040, 1041, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 0, 317, 318, 319, 0, 0, 321, + 0, 322, 323, 1043, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 0, 0, + 0, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 2093, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 2094, 353, 354, 355, 356, 1045, 1046, + 0, 1047, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 0, 818, 369, 819, + 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1048, 820, 1049, 391, 392, 393, 0, 0, + 395, 396, 821, 397, 0, 0, 399, 1050, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 2096, 822, 411, 823, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 0, 425, 0, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1051, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 0, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 0, 476, 477, + 2097, 479, 480, 825, 481, 482, 1053, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 0, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1054, 1055, 0, 0, 508, 509, + 0, 511, 0, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, + 525, 526, 527, 528, 529, 0, 1056, 2098, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 0, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 555, 556, 557, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 3215, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 40, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 44, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 1116, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 49, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 50, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 2669, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 2670, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 2671, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 2672, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 1832, 2624, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 1255, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 2064, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 2670, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 4002, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 4015, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 4340, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 4349, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 4660, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 4661, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 4662, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 4663, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 5127, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 5128, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 5129, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 5128, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 5129, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 4853, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 2655, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 0, 0, 0, 0, 0, 0, + 0, 2656, 2657, 0, 0, 0, 0, 0, 0, 0, + 2658, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, -2568, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 5128, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, -2568, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 0, 0, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, -2568, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 0, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, -2568, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 5129, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, -2568, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 2655, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 0, 0, 0, 0, 0, 0, + 0, 2656, 2657, 0, 0, 0, 0, 0, 0, 0, + 2658, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 0, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 2655, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, + 0, 0, 0, 0, 0, 0, 2656, 2657, 0, 0, + 804, 1185, 618, 1186, 1187, 2658, 677, 1189, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, + 249, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, + 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, + 282, 283, 284, 285, 286, 1207, 1208, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, + 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, + 1218, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 1219, 818, 369, 819, 0, + 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1222, 820, 1223, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 2655, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, + 479, 480, 825, 481, 482, 1234, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, + 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, + 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, + 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, + 804, 1185, 618, 1186, 1187, 0, 677, 1189, 0, 0, + 0, 0, 0, 0, 2658, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, + 3914, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, + 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, + 282, 283, 284, 285, 286, 1207, 1208, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, + 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, + 1218, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 1219, 818, 369, 819, 0, + 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1222, 820, 1223, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 2655, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, + 479, 480, 825, 481, 482, 1234, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, + 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, + 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, + 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, + 804, 1185, 618, 1186, 1187, 0, 677, 1189, 0, 0, + 0, 0, 0, 0, 2658, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, + 249, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, + 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, + 282, 283, 284, 285, 286, 1207, 1208, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, + 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, + 1218, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 1219, 818, 369, 819, 0, + 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1222, 820, 1223, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 2655, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, + 479, 480, 825, 481, 482, 1234, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, + 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, + 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 4380, + 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, + 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, 0, + 0, 0, 0, 0, 2658, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 0, 1191, 806, 1192, 1193, 0, + 249, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, + 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, + 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 0, 311, 0, 312, 313, + 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, + 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, + 1218, 0, 360, 0, 0, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 1219, 818, 369, 0, 0, + 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, 395, + 396, 0, 397, 1225, 1226, 399, 1227, 401, 402, 403, + 0, 404, 405, 0, 0, 1228, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 1232, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, + 479, 480, 0, 481, 482, 1234, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, + 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, + 0, 1241, 520, 521, 522, 523, 524, 1242, 0, 525, + 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, + 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, + 804, 0, 0, 0, 0, 1253, 1254, 0, 0, 0, + 0, 0, 0, 0, 1256, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 1195, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 1211, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 1214, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 3436, 0, 367, 1219, 818, 369, 819, 0, + 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 1226, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 769, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 3437, 463, 464, 465, 466, 467, 468, 469, 470, + 40, 471, 472, 473, 474, 475, 1233, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 1235, 0, 498, 499, 44, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 1238, + 511, 1239, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, + 526, 527, 528, 529, 1116, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 49, 538, 539, + 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, + 1248, 1249, 1250, 1251, 3438, 555, 556, 557, 0, 0, + 50, 804, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3439, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 3436, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 769, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 3437, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 3438, 555, 556, 557, 0, + 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3439, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 3437, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 3438, 555, 556, 557, 0, + 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, + 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4043, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, + 0, 849, 1464, 618, 0, 0, 0, 677, 0, 0, + 0, 0, 0, 0, 0, 5110, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 263, 0, + 807, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 0, 0, 0, 810, 0, 0, 0, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 1765, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 333, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 368, 818, 369, 819, + 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 398, 399, 400, 401, 402, + 403, 0, 404, 405, 1766, 0, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 0, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 510, 511, 512, 1767, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, + 549, 550, 551, 552, 553, 554, 555, 556, 557, 0, + 0, 849, 0, 0, 0, 0, 1465, 1466, 4930, 0, + 0, 0, 0, 0, 0, 4931, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 3, 4, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 263, 0, + 807, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 0, 0, 0, 810, 0, 0, 0, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 0, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 333, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 368, 818, 369, 819, + 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 398, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 40, 471, 472, 473, 474, 475, 0, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 0, 498, 499, 44, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, + 525, 526, 527, 528, 529, 1116, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 49, 538, + 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, + 549, 550, 551, 552, 553, 554, 555, 556, 557, 0, + 0, 50, 804, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, + 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4712, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 40, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 44, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 1116, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 49, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 0, 0, 50, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 0, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, + 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, + 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, + 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, + 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, + 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, + 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, + 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, + 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, + 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, + 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, + 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, + 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, + 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, + 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, + 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, + 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 0, 0, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1314, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, + 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, + 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, + 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, + 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, + 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, + 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, + 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, + 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, + 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, + 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, + 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, + 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, + 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, + 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, + 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, + 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 0, 0, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2812, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, + 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, + 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, + 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, + 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, + 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, + 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, + 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, + 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, + 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, + 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, + 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, + 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, + 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, + 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, + 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, + 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 0, 0, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3949, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, + 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, + 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, + 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, + 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, + 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, + 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, + 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, + 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, + 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, + 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, + 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, + 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, + 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, + 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, + 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, + 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 0, 0, 0, 0, 0, 1034, 1464, 618, 0, + 0, 863, 677, 0, 0, 0, 0, 4397, 864, 865, + 866, 225, 226, 227, 228, 229, 230, 231, 232, 1953, + 234, 235, 236, 1954, 1955, 1956, 1957, 1958, 1959, 1960, + 237, 238, 1961, 239, 240, 241, 805, 242, 243, 244, + 0, 1035, 806, 1036, 1037, 1962, 249, 250, 251, 252, + 253, 1963, 1964, 254, 255, 1038, 1039, 258, 1965, 259, + 260, 261, 262, 0, 1966, 807, 1967, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 1968, 272, 273, 274, + 275, 276, 277, 1969, 809, 278, 279, 280, 1970, 1971, + 1972, 810, 1973, 1974, 1975, 281, 282, 283, 284, 285, + 286, 1040, 1041, 289, 1976, 290, 1977, 291, 292, 293, + 294, 295, 296, 1978, 297, 298, 299, 300, 1979, 1980, + 301, 302, 1042, 304, 305, 1981, 306, 307, 308, 1982, + 309, 310, 311, 1983, 312, 313, 314, 315, 0, 317, + 318, 319, 0, 1984, 321, 1985, 322, 323, 1043, 325, + 1986, 326, 1987, 327, 811, 1988, 812, 328, 329, 330, + 331, 1989, 332, 0, 1990, 0, 335, 1991, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 1992, 345, + 346, 347, 348, 349, 350, 1993, 351, 814, 0, 353, + 354, 355, 356, 1045, 1046, 1994, 1047, 1995, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 1996, 1997, + 367, 0, 818, 369, 819, 1998, 370, 371, 372, 1999, + 2000, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1048, 820, 1049, + 391, 392, 393, 3703, 2001, 395, 396, 821, 397, 2002, + 0, 399, 1050, 401, 402, 403, 2003, 404, 405, 2004, + 2005, 3704, 407, 408, 2006, 2007, 409, 0, 822, 411, + 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 2008, 422, 423, 0, 425, 0, 427, 428, + 429, 2009, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1051, 440, 441, 442, 443, 2010, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 2011, + 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 2012, 471, 472, 473, + 474, 475, 2013, 476, 477, 2097, 479, 480, 825, 481, + 482, 1053, 484, 2014, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 0, 2015, 498, 499, + 2016, 500, 826, 501, 502, 503, 504, 505, 2017, 1054, + 1055, 2018, 2019, 508, 509, 0, 511, 0, 2020, 513, + 514, 515, 516, 517, 518, 519, 2021, 2022, 520, 521, + 522, 523, 524, 2023, 2024, 525, 526, 527, 528, 529, + 0, 1056, 2025, 532, 827, 533, 534, 535, 536, 2026, + 2027, 537, 2028, 2029, 538, 539, 540, 541, 542, 543, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 555, 556, 557, 0, 0, 0, 869, 870, 871, + 0, 3705, 3706, 874, 875, 876, 877, 1034, 1464, 618, + 0, 0, 863, 677, 0, 0, 0, 0, 0, 864, + 865, 866, 225, 226, 227, 228, 229, 230, 231, 232, + 1953, 234, 235, 236, 1954, 1955, 1956, 1957, 1958, 1959, + 1960, 237, 238, 1961, 239, 240, 241, 805, 242, 243, + 244, 0, 1035, 806, 1036, 1037, 1962, 249, 250, 251, + 252, 253, 1963, 1964, 254, 255, 1038, 1039, 258, 1965, + 259, 260, 261, 262, 0, 1966, 807, 1967, 264, 265, + 266, 267, 268, 808, 269, 270, 271, 1968, 272, 273, + 274, 275, 276, 277, 1969, 809, 278, 279, 280, 1970, + 1971, 1972, 810, 1973, 1974, 1975, 281, 282, 283, 284, + 285, 286, 1040, 1041, 289, 1976, 290, 1977, 291, 292, + 293, 294, 295, 296, 1978, 297, 298, 299, 300, 1979, + 1980, 301, 302, 1042, 304, 305, 1981, 306, 307, 308, + 1982, 309, 310, 311, 1983, 312, 313, 314, 315, 0, + 317, 318, 319, 0, 1984, 321, 1985, 322, 323, 1043, + 325, 1986, 326, 1987, 327, 811, 1988, 812, 328, 329, + 330, 331, 1989, 332, 0, 1990, 0, 335, 1991, 336, + 337, 338, 339, 340, 813, 341, 342, 343, 344, 1992, + 345, 346, 347, 348, 349, 350, 1993, 351, 814, 0, + 353, 354, 355, 356, 1045, 1046, 1994, 1047, 1995, 360, + 815, 816, 361, 817, 362, 363, 364, 365, 366, 1996, + 1997, 367, 0, 818, 369, 819, 1998, 370, 371, 372, + 1999, 2000, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 1048, 820, + 1049, 391, 392, 393, 4134, 2001, 395, 396, 821, 397, + 2002, 0, 399, 1050, 401, 402, 403, 2003, 404, 405, + 2004, 2005, 3704, 407, 408, 2006, 2007, 409, 0, 822, + 411, 823, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 0, 2008, 422, 423, 0, 425, 0, 427, + 428, 429, 2009, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 1051, 440, 441, 442, 443, 2010, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 2011, 456, 457, 824, 458, 459, 460, 0, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 2012, 471, 472, + 473, 474, 475, 2013, 476, 477, 2097, 479, 480, 825, + 481, 482, 1053, 484, 2014, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 0, 2015, 498, + 499, 2016, 500, 826, 501, 502, 503, 504, 505, 2017, + 1054, 1055, 2018, 2019, 508, 509, 0, 511, 0, 2020, + 513, 514, 515, 516, 517, 518, 519, 2021, 2022, 520, + 521, 522, 523, 524, 2023, 2024, 525, 526, 527, 528, + 529, 0, 1056, 2025, 532, 827, 533, 534, 535, 536, + 2026, 2027, 537, 2028, 2029, 538, 539, 540, 541, 542, + 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 555, 556, 557, 0, 224, 0, 869, 870, + 871, 863, 3705, 3706, 874, 875, 876, 877, 864, 865, + 866, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 867, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 868, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 0, 224, 0, 869, 870, 871, + 863, 872, 873, 874, 875, 876, 877, 864, 865, 866, + 225, 226, 227, 228, 229, 230, 231, 232, 0, 234, + 235, 236, 0, 0, 0, 0, 0, 0, 0, 237, + 238, 0, 239, 240, 241, 0, 242, 243, 244, 245, + 246, 0, 247, 248, 0, 249, 250, 251, 252, 253, + 0, 0, 254, 255, 256, 257, 258, 0, 259, 985, + 261, 262, 263, 0, 0, 0, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 0, 272, 273, 274, 275, + 276, 277, 0, 0, 278, 279, 280, 0, 0, 0, + 0, 0, 0, 0, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 290, 0, 291, 292, 293, 294, + 295, 296, 0, 297, 298, 299, 300, 0, 0, 301, + 302, 303, 304, 305, 0, 306, 307, 308, 0, 309, + 310, 311, 0, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 0, 986, 0, 322, 323, 324, 325, 0, + 326, 0, 327, 0, 0, 0, 328, 329, 330, 331, + 0, 332, 333, 0, 334, 335, 0, 336, 337, 338, + 339, 340, 0, 341, 342, 343, 344, 0, 345, 346, + 347, 348, 349, 350, 0, 351, 0, 352, 353, 354, + 355, 356, 357, 358, 0, 359, 0, 360, 0, 0, + 361, 0, 362, 363, 364, 365, 366, 0, 0, 367, + 368, 0, 369, 0, 0, 370, 371, 372, 0, 0, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 0, 390, 391, + 392, 393, 394, 0, 395, 396, 0, 397, 0, 398, + 399, 400, 401, 402, 403, 0, 404, 405, 0, 0, + 406, 407, 408, 0, 0, 409, 410, 0, 411, 0, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 0, 0, 422, 423, 424, 425, 426, 427, 428, 429, + 0, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 0, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 0, 456, + 457, 0, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, + 475, 0, 476, 477, 478, 479, 480, 0, 481, 482, + 483, 484, 0, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 0, 498, 499, 0, + 500, 0, 501, 502, 503, 504, 505, 0, 506, 507, + 0, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 515, 516, 517, 518, 519, 0, 0, 520, 521, 522, + 523, 524, 0, 0, 525, 526, 527, 528, 529, 530, + 531, 0, 532, 0, 533, 534, 535, 536, 0, 0, + 537, 0, 0, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 0, 224, 0, 869, 870, 871, 863, + 872, 873, 874, 875, 876, 877, 864, 865, 866, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 1084, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 1085, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 1086, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 1182, 799, 1183, 386, 387, 388, 1184, 389, 390, 800, - 391, 1185, 1186, 393, 1187, 395, 396, 397, 0, 398, - 0, 0, 1188, 400, 401, 0, 0, 402, 403, 801, - 404, 802, 1189, 406, 407, 408, 409, 410, 411, 412, - 413, 0, 0, 414, 415, 1190, 417, 418, 419, 420, - 421, 0, 422, 423, 424, 425, 426, 427, 428, 429, - 1191, 431, 432, 433, 434, 0, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 0, 446, 447, - 803, 448, 449, 450, 1192, 452, 453, 454, 455, 456, - 457, 458, 459, 0, 460, 461, 462, 463, 464, 1193, - 465, 466, 467, 468, 469, 804, 470, 471, 1194, 473, - 0, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 1195, 0, 486, 487, 0, 488, 805, 489, - 490, 491, 492, 493, 0, 1196, 1197, 0, 0, 496, - 497, 1198, 499, 1199, 1200, 501, 502, 503, 504, 505, - 506, 507, 0, 1201, 508, 509, 510, 511, 512, 1202, - 0, 513, 514, 515, 516, 517, 518, 1203, 2646, 520, - 806, 521, 522, 523, 524, 0, 0, 525, 0, 0, - 526, 527, 528, 529, 530, 531, 532, 1204, 1205, 1206, - 1207, 1208, 1209, 1210, 1211, 541, 542, 543, 1212, 0, - 0, 0, 0, 0, 0, 1213, 1214, 2647, 0, 0, - 0, 0, 0, 0, 1216, 2648, 783, 1146, 601, 1147, - 1148, 1149, 655, 1150, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 1151, 0, 0, - 236, 237, 0, 238, 239, 784, 240, 241, 242, 243, - 1152, 785, 1153, 1154, 0, 247, 248, 249, 250, 251, - 1155, 1156, 252, 253, 1157, 1158, 256, 0, 257, 258, - 259, 260, 1159, 0, 1160, 0, 262, 263, 264, 265, - 787, 266, 267, 268, 0, 269, 270, 271, 272, 273, - 274, 0, 788, 275, 276, 277, 1161, 1162, 1163, 1164, - 1165, 1166, 1167, 278, 279, 280, 281, 282, 283, 1168, - 1169, 286, 0, 287, 0, 288, 289, 290, 291, 292, - 293, 0, 294, 295, 296, 0, 0, 297, 298, 1004, - 300, 301, 0, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 311, 1170, 313, 314, 315, 1171, - 1172, 317, 0, 318, 319, 1173, 321, 0, 322, 0, - 323, 790, 0, 791, 324, 325, 326, 0, 327, 1174, - 0, 1175, 330, 0, 331, 332, 333, 334, 335, 792, - 336, 337, 338, 339, 0, 340, 341, 342, 343, 344, - 345, 0, 346, 793, 347, 348, 349, 350, 351, 1176, - 1177, 0, 1178, 0, 355, 794, 795, 356, 796, 357, - 358, 359, 360, 361, 0, 0, 362, 1179, 797, 364, - 798, 0, 365, 366, 367, 1180, 1181, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 1182, 799, 1183, 386, 387, 388, 1184, - 389, 390, 800, 391, 1185, 1186, 393, 1187, 395, 396, - 397, 0, 398, 0, 0, 1188, 400, 401, 0, 0, - 402, 403, 801, 404, 802, 1189, 406, 407, 408, 409, - 410, 411, 412, 413, 0, 0, 414, 415, 1190, 417, - 418, 419, 420, 421, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 1191, 431, 432, 433, 434, 0, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 0, 446, 447, 803, 448, 449, 450, 1192, 452, 453, - 454, 455, 456, 457, 458, 459, 40, 460, 461, 462, - 463, 464, 1193, 465, 466, 467, 468, 469, 804, 470, - 471, 1194, 473, 0, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 1195, 0, 486, 487, 44, - 488, 805, 489, 490, 491, 492, 493, 0, 1196, 1197, - 0, 0, 496, 497, 1198, 499, 1199, 1200, 501, 502, - 503, 504, 505, 506, 507, 0, 1201, 508, 509, 510, - 511, 512, 1202, 0, 513, 514, 515, 516, 517, 1077, - 1203, 0, 520, 806, 521, 522, 523, 524, 0, 0, - 525, 0, 49, 526, 527, 528, 529, 530, 531, 532, - 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 541, 542, - 543, 1212, 0, 50, 0, 0, 0, 0, 1213, 1214, - 0, 0, 0, 0, 0, 0, 0, 1216, 4655, 783, - 1146, 601, 1147, 1148, 1149, 655, 1150, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 1151, 0, 0, 236, 237, 0, 238, 239, 784, 240, - 241, 242, 243, 1152, 785, 1153, 1154, 0, 247, 248, - 249, 250, 251, 1155, 1156, 252, 253, 1157, 1158, 256, - 0, 257, 258, 259, 260, 1159, 0, 1160, 0, 262, - 263, 264, 265, 787, 266, 267, 268, 0, 269, 270, - 271, 272, 273, 274, 0, 788, 275, 276, 277, 1161, - 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, 280, 281, - 282, 283, 1168, 1169, 286, 0, 287, 0, 288, 289, - 290, 291, 292, 293, 0, 294, 295, 296, 0, 0, - 297, 298, 1004, 300, 301, 0, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 311, 1170, 313, - 314, 315, 1171, 1172, 317, 0, 318, 319, 1173, 321, - 0, 322, 0, 323, 790, 0, 791, 324, 325, 326, - 0, 327, 1174, 0, 1175, 330, 0, 331, 332, 333, - 334, 335, 792, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 344, 345, 0, 346, 793, 347, 348, 349, - 350, 351, 1176, 1177, 0, 1178, 0, 355, 794, 795, - 356, 796, 357, 358, 359, 360, 361, 0, 0, 362, - 1179, 797, 364, 798, 0, 365, 366, 367, 1180, 1181, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 1182, 799, 1183, 386, - 387, 388, 1184, 389, 390, 800, 391, 1185, 1186, 393, - 1187, 395, 396, 397, 0, 398, 0, 0, 1188, 400, - 401, 0, 0, 402, 403, 801, 404, 802, 1189, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 414, - 415, 1190, 417, 418, 419, 420, 421, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 1191, 431, 432, 433, - 434, 0, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 0, 446, 447, 803, 448, 449, 450, - 1192, 452, 453, 454, 455, 456, 457, 458, 459, 0, - 460, 461, 462, 463, 464, 1193, 465, 466, 467, 468, - 469, 804, 470, 471, 1194, 473, 0, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 1195, 0, - 486, 487, 0, 488, 805, 489, 490, 491, 492, 493, - 0, 1196, 1197, 0, 0, 496, 497, 1198, 499, 1199, - 1200, 501, 502, 503, 504, 505, 506, 507, 0, 1201, - 508, 509, 510, 511, 512, 1202, 0, 513, 514, 515, - 516, 517, 518, 1203, 0, 520, 806, 521, 522, 523, - 524, 0, 0, 525, 0, 0, 526, 527, 528, 529, - 530, 531, 532, 1204, 1205, 1206, 1207, 1208, 1209, 1210, - 1211, 541, 542, 543, 1212, 0, 0, 0, 0, 0, - 0, 1213, 1214, 0, 0, 0, 0, 0, 0, 0, - 1216, 2554, 783, 1146, 601, 1147, 1148, 1149, 655, 1150, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1151, 0, 0, 236, 237, 0, 238, - 239, 784, 240, 241, 242, 243, 1152, 785, 1153, 1154, - 0, 247, 248, 249, 250, 251, 1155, 1156, 252, 253, - 1157, 1158, 256, 0, 257, 258, 259, 260, 1159, 0, - 1160, 0, 262, 263, 264, 265, 787, 266, 267, 268, - 0, 269, 270, 271, 272, 273, 274, 0, 788, 275, - 276, 277, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 278, - 279, 280, 281, 282, 283, 1168, 1169, 286, 0, 287, - 0, 288, 289, 290, 291, 292, 293, 0, 294, 295, - 296, 0, 0, 297, 298, 1004, 300, 301, 0, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 311, 1170, 313, 314, 315, 1171, 1172, 317, 0, 318, - 319, 1173, 321, 0, 322, 0, 323, 790, 0, 791, - 324, 325, 326, 0, 327, 1174, 0, 1175, 330, 0, - 331, 332, 333, 334, 335, 792, 336, 337, 338, 339, - 0, 340, 341, 342, 343, 344, 345, 0, 346, 793, - 347, 348, 349, 350, 351, 1176, 1177, 0, 1178, 0, - 355, 794, 795, 356, 796, 357, 358, 359, 360, 361, - 0, 0, 362, 1179, 797, 364, 798, 0, 365, 366, - 367, 1180, 1181, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 1182, - 799, 1183, 386, 387, 388, 1184, 389, 390, 800, 391, - 1185, 1186, 393, 1187, 395, 396, 397, 0, 398, 0, - 0, 1188, 400, 401, 0, 0, 402, 403, 801, 404, - 802, 1189, 406, 407, 408, 409, 410, 411, 412, 413, - 0, 0, 414, 415, 1190, 417, 418, 419, 420, 421, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 1191, - 431, 432, 433, 434, 0, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 0, 446, 447, 803, - 448, 449, 450, 1192, 452, 453, 454, 455, 456, 457, - 458, 459, 0, 460, 461, 462, 463, 464, 1193, 465, - 466, 467, 468, 469, 804, 470, 471, 1194, 473, 0, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 1195, 0, 486, 487, 0, 488, 805, 489, 490, - 491, 492, 493, 0, 1196, 1197, 0, 0, 496, 497, - 1198, 499, 1199, 1200, 501, 502, 503, 504, 505, 506, - 507, 0, 1201, 508, 509, 510, 511, 512, 1202, 0, - 513, 514, 515, 516, 517, 518, 1203, 0, 520, 806, - 521, 522, 523, 524, 0, 0, 525, 0, 0, 526, - 527, 528, 529, 530, 531, 532, 1204, 1205, 1206, 1207, - 1208, 1209, 1210, 1211, 541, 542, 543, 1212, 0, 0, - 0, 0, 0, 0, 1213, 1214, 0, 0, 0, 0, - 0, 0, 0, 1216, 3748, 783, 1146, 601, 1147, 1148, - 1149, 655, 1150, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 1151, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 1152, - 785, 1153, 1154, 0, 247, 248, 249, 250, 251, 1155, - 1156, 252, 253, 1157, 1158, 256, 0, 257, 258, 259, - 260, 1159, 0, 1160, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 1161, 1162, 1163, 1164, 1165, - 1166, 1167, 278, 279, 280, 281, 282, 283, 1168, 1169, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 1004, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 1170, 313, 314, 315, 1171, 1172, - 317, 0, 318, 319, 1173, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 1174, 0, - 1175, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 1176, 1177, - 0, 1178, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 1179, 797, 364, 798, - 0, 365, 366, 367, 1180, 1181, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 1182, 799, 1183, 386, 387, 388, 1184, 389, - 390, 800, 391, 1185, 1186, 393, 1187, 395, 396, 397, - 0, 398, 0, 0, 1188, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 1189, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 1190, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 1191, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 1192, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 1193, 465, 466, 467, 468, 469, 804, 470, 471, - 1194, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 1195, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 1196, 1197, 0, - 0, 496, 497, 1198, 499, 1199, 1200, 501, 502, 503, - 504, 505, 506, 507, 0, 1201, 508, 509, 510, 511, - 512, 1202, 0, 513, 514, 515, 516, 517, 518, 1203, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 1204, - 1205, 1206, 1207, 1208, 1209, 1210, 1211, 541, 542, 543, - 1212, 0, 0, 223, 0, 0, 0, 1213, 1214, 0, - 0, 0, 0, 0, 0, 0, 1216, 3819, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 3835, 0, 236, 237, 0, - 238, 239, 0, 240, 241, 242, 243, 244, 0, 245, - 246, 0, 247, 248, 249, 250, 251, 0, 0, 252, - 253, 254, 255, 256, 0, 257, 258, 259, 260, 261, - 0, 0, 0, 262, 263, 264, 265, 0, 266, 267, - 268, 0, 269, 270, 271, 272, 273, 274, 0, -1602, - 275, 276, 277, 0, 0, 0, 0, 0, 0, 0, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 0, - 287, 0, 288, 289, 290, 291, 292, 293, 0, 294, - 295, 296, 0, 0, 297, 298, 299, 300, 301, 0, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 0, 317, 0, - 318, 319, 320, 321, 0, 322, 0, 323, 0, 0, - -1602, 324, 325, 326, 0, 327, 328, 0, 329, 330, - 0, 331, 332, 333, 334, 335, 0, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 344, 345, 0, 346, - -1602, 347, 348, 349, 350, 351, 352, 353, 0, 354, - 0, 355, 0, 0, 356, -1602, 357, 358, 359, 360, - 361, 0, 0, 362, 363, -1602, 364, 0, 0, 365, - 366, 367, 0, 0, 368, 369, 370, 371, 372, 373, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 0, 224, 0, 869, 870, 871, 863, 872, + 873, 874, 875, 876, 877, 864, 865, 866, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, + 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, + 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, + 254, 255, 256, 257, 258, 0, 259, 1585, 261, 262, + 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 0, 1586, 0, 322, 323, 324, 325, 0, 326, 0, + 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, + 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, + 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, + 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, + 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, + 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, + 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, + 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, + 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, + 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, + 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, + 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 0, 224, 0, 869, 870, 871, 863, 872, 873, + 874, 875, 876, 877, 864, 865, 866, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 0, 224, 0, 869, 870, 871, 863, 872, 873, 874, + 875, 876, 877, 864, 865, 866, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 0, 242, 243, 244, 245, 246, 0, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, + 256, 257, 258, 0, 259, 2890, 261, 262, 263, 0, + 0, 0, 264, 265, 266, 267, 268, 0, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 0, + 278, 279, 280, 0, 0, 0, 0, 0, 0, 0, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 0, 2891, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 0, + 0, 0, 328, 329, 330, 331, 0, 332, 333, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 0, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 0, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 0, 0, 361, 0, 362, 363, + 364, 365, 366, 0, 0, 367, 368, 0, 369, 0, + 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 0, 390, 391, 392, 393, 394, 0, + 395, 396, 0, 397, 0, 398, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 410, 0, 411, 0, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 0, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 0, 476, 477, + 478, 479, 480, 0, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 0, 498, 499, 0, 500, 0, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 0, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, + 549, 550, 551, 552, 553, 554, 555, 556, 557, 0, + 224, 0, 869, 870, 871, 863, 872, 873, 874, 875, + 876, 877, 864, 865, 866, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 4690, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 1952, 0, + 0, 869, 870, 871, 0, 872, 873, 874, 875, 876, + 877, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 1953, 234, 235, 236, 1954, 1955, 1956, 1957, 1958, + 1959, 1960, 237, 238, 1961, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 1962, 249, 250, + 251, 252, 253, 1963, 1964, 254, 255, 256, 257, 258, + 1965, 259, 260, 261, 262, 263, 1966, 807, 1967, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 1968, 272, + 273, 274, 275, 276, 277, 1969, 809, 278, 279, 280, + 1970, 1971, 1972, 810, 1973, 1974, 1975, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 1976, 290, 1977, 291, + 292, 293, 294, 295, 296, 1978, 297, 298, 299, 300, + 1979, 1980, 301, 302, 303, 304, 305, 1981, 306, 307, + 308, 1982, 309, 310, 311, 1983, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 1984, 321, 1985, 322, 323, + 324, 325, 1986, 326, 1987, 327, 811, 1988, 812, 328, + 329, 330, 331, 1989, 332, 333, 1990, 334, 335, 1991, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 1992, 345, 346, 347, 348, 349, 350, 1993, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 1994, 359, 1995, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 1996, 1997, 367, 368, 818, 369, 819, 1998, 370, 371, + 372, 1999, 2000, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 2001, 395, 396, 821, + 397, 2002, 398, 399, 400, 401, 402, 403, 2003, 404, + 405, 2004, 2005, 406, 407, 408, 2006, 2007, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 2008, 422, 423, 424, 425, 426, + 427, 428, 429, 2009, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 2010, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 2011, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 2012, 471, + 472, 473, 474, 475, 2013, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 2014, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 2015, + 498, 499, 2016, 500, 826, 501, 502, 503, 504, 505, + 2017, 506, 507, 2018, 2019, 508, 509, 510, 511, 512, + 2020, 513, 514, 515, 516, 517, 518, 519, 2021, 2022, + 520, 521, 522, 523, 524, 2023, 2024, 525, 526, 527, + 528, 529, 530, 531, 2025, 532, 827, 533, 534, 535, + 536, 2026, 2027, 537, 2028, 2029, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 2030, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 774, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, -1602, 385, 386, 387, 388, 0, 389, 390, 0, - 391, 0, 392, 393, 394, 395, 396, 397, 0, 398, - 0, 0, 399, 400, 401, 0, 0, 402, 403, 0, - 404, 0, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 0, 0, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 0, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 0, 446, 447, - -1602, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 0, 460, 461, 462, 463, 464, 0, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 0, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 0, 486, 487, 0, 488, 0, 489, - 490, 491, 492, 493, 0, 494, 495, 0, 0, 496, - 497, 498, 499, 500, 0, 501, 502, 503, 504, 505, - 506, 507, 0, 0, 508, 509, 510, 511, 512, 0, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 520, - 0, 521, 522, 523, 524, 0, 0, 525, 0, 0, - 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 0, 0, - 0, 996, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1299, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 784, 240, 241, 242, 0, 997, 785, 998, 999, 0, - 247, 248, 249, 250, 251, 0, 0, 252, 253, 1000, - 1001, 256, 0, 257, 258, 259, 260, 0, 0, 786, - 0, 262, 263, 264, 265, 787, 266, 267, 268, 0, - 269, 270, 271, 272, 273, 274, 0, 788, 275, 276, - 277, 0, 0, 0, 789, 0, 0, 0, 278, 279, - 280, 281, 282, 283, 1002, 1003, 286, 0, 287, 0, - 288, 289, 290, 291, 292, 293, 0, 294, 295, 296, - 0, 0, 297, 298, 1004, 300, 301, 0, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 311, - 0, 313, 314, 315, 0, 0, 317, 0, 318, 319, - 1005, 321, 0, 322, 0, 323, 790, 0, 791, 324, - 325, 326, 0, 327, 0, 0, 0, 330, 0, 331, - 332, 333, 334, 335, 792, 336, 337, 338, 339, 2015, - 340, 341, 342, 343, 344, 345, 0, 346, 793, 2016, - 348, 349, 350, 351, 1007, 1008, 0, 1009, 0, 355, - 794, 795, 356, 796, 357, 358, 359, 360, 361, 0, - 0, 362, 0, 797, 364, 798, 0, 365, 366, 367, - 0, 0, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 1010, 799, - 1011, 386, 387, 0, 0, 389, 390, 800, 391, 0, - 0, 393, 1012, 395, 396, 397, 0, 398, 0, 0, - 399, 400, 401, 0, 0, 402, 2018, 801, 404, 802, - 0, 406, 407, 408, 409, 410, 411, 412, 413, 0, - 0, 414, 415, 0, 417, 0, 419, 420, 421, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 1013, 431, - 432, 433, 434, 0, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 0, 446, 447, 803, 448, - 449, 450, 0, 452, 453, 454, 455, 456, 457, 458, - 459, 0, 460, 461, 462, 463, 464, 0, 465, 466, - 2019, 468, 469, 804, 470, 471, 1015, 473, 0, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 0, 0, 486, 487, 0, 488, 805, 489, 490, 491, - 492, 493, 0, 1016, 1017, 0, 0, 496, 497, 0, - 499, 0, 0, 501, 502, 503, 504, 505, 506, 507, - 0, 0, 508, 509, 510, 511, 512, 0, 0, 513, - 514, 515, 516, 517, 0, 1018, 2020, 520, 806, 521, - 522, 523, 524, 0, 0, 525, 0, 0, 526, 527, - 528, 529, 530, 531, 996, 0, 0, 0, 0, 0, - 0, 0, 0, 541, 542, 543, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 2126, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 784, 240, 241, 242, 0, 997, 785, - 998, 999, 0, 247, 248, 249, 250, 251, 0, 0, - 252, 253, 1000, 1001, 256, 0, 257, 258, 259, 260, - 0, 0, 786, 0, 262, 263, 264, 265, 787, 266, - 267, 268, 0, 269, 270, 271, 272, 273, 274, 0, - 788, 275, 276, 277, 0, 0, 0, 789, 0, 0, - 0, 278, 279, 280, 281, 282, 283, 1002, 1003, 286, - 0, 287, 0, 288, 289, 290, 291, 292, 293, 0, - 294, 295, 296, 0, 0, 297, 298, 1004, 300, 301, - 0, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 311, 0, 313, 314, 315, 0, 0, 317, - 0, 318, 319, 1005, 321, 0, 322, 0, 323, 790, - 0, 791, 324, 325, 326, 0, 327, 0, 0, 0, - 330, 0, 331, 332, 333, 334, 335, 792, 336, 337, - 338, 339, 2015, 340, 341, 342, 343, 344, 345, 0, - 346, 793, 2016, 348, 349, 350, 351, 1007, 1008, 0, - 1009, 0, 355, 794, 795, 356, 796, 357, 358, 359, - 360, 361, 0, 0, 362, 0, 797, 364, 798, 0, - 365, 366, 367, 0, 0, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 1010, 799, 1011, 386, 387, 0, 0, 389, 390, - 800, 391, 0, 0, 393, 1012, 395, 396, 397, 0, - 398, 0, 0, 399, 400, 401, 0, 0, 402, 2018, - 801, 404, 802, 0, 406, 407, 408, 409, 410, 411, - 412, 413, 0, 0, 414, 415, 0, 417, 0, 419, - 420, 421, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 1013, 431, 432, 433, 434, 0, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, - 447, 803, 448, 449, 450, 0, 452, 453, 454, 455, - 456, 457, 458, 459, 0, 460, 461, 462, 463, 464, - 0, 465, 466, 2019, 468, 469, 804, 470, 471, 1015, - 473, 0, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 0, 0, 486, 487, 0, 488, 805, - 489, 490, 491, 492, 493, 0, 1016, 1017, 0, 0, - 496, 497, 0, 499, 0, 0, 501, 502, 503, 504, - 505, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 0, 513, 514, 515, 516, 517, 0, 1018, 2020, - 520, 806, 521, 522, 523, 524, 0, 0, 525, 0, - 0, 526, 527, 528, 529, 530, 531, 783, 1146, 601, - 1147, 1148, 1149, 655, 1150, 0, 541, 542, 543, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 3075, 0, 1151, 0, - 0, 236, 237, 0, 238, 239, 784, 240, 241, 242, - 243, 1152, 785, 1153, 1154, 0, 247, 248, 249, 250, - 251, 1155, 1156, 252, 253, 1157, 1158, 256, 0, 257, - 258, 259, 260, 1159, 0, 1160, 0, 262, 263, 264, - 265, 787, 266, 267, 268, 0, 269, 270, 271, 272, - 273, 274, 0, 788, 275, 276, 277, 1161, 1162, 1163, - 1164, 1165, 1166, 1167, 278, 279, 280, 281, 282, 283, - 1168, 1169, 286, 1291, 287, 0, 288, 289, 290, 291, - 292, 293, 0, 294, 295, 296, 0, 0, 297, 298, - 1004, 300, 301, 0, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 311, 1170, 313, 314, 315, - 1171, 1172, 317, 0, 318, 319, 1173, 321, 0, 322, - 0, 323, 790, 0, 791, 324, 325, 326, 0, 327, - 1174, 0, 1175, 330, 0, 331, 332, 333, 334, 335, - 792, 336, 337, 338, 339, 0, 340, 341, 342, 343, - 344, 345, 0, 346, 793, 347, 348, 349, 350, 351, - 1176, 1177, 0, 1178, 0, 355, 794, 795, 356, 796, - 357, 358, 359, 360, 361, 0, 0, 362, 1179, 797, - 364, 798, 0, 365, 366, 367, 1180, 1181, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 1182, 799, 1183, 386, 387, 388, - 1184, 389, 390, 800, 391, 1185, 1186, 393, 1187, 395, - 396, 397, 0, 398, 0, 0, 1188, 400, 401, 0, - 0, 402, 403, 801, 404, 802, 1189, 406, 407, 408, - 409, 410, 411, 412, 413, 0, 0, 414, 415, 1190, - 417, 418, 419, 420, 421, 0, 422, 423, 424, 425, - 426, 427, 428, 429, 1191, 431, 432, 433, 434, 0, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 0, 446, 447, 803, 448, 449, 450, 1192, 452, - 453, 454, 455, 456, 457, 458, 459, 40, 460, 461, - 462, 463, 464, 1193, 465, 466, 467, 468, 469, 804, - 470, 471, 1194, 473, 0, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 1195, 0, 486, 487, - 44, 488, 805, 489, 490, 491, 492, 493, 0, 1196, - 1197, 0, 0, 496, 497, 1198, 499, 1199, 1200, 501, - 502, 503, 504, 505, 506, 507, 0, 1201, 508, 509, - 510, 511, 512, 1202, 0, 513, 514, 515, 516, 517, - 1077, 1203, 0, 520, 806, 521, 522, 523, 524, 0, - 0, 525, 0, 49, 526, 527, 528, 529, 530, 531, - 532, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 541, - 542, 543, 1212, 0, 50, 0, 0, 0, 0, 1213, - 1214, 0, 0, 0, 0, 0, 0, 0, 1216, 783, - 1146, 601, 1147, 1148, 1149, 655, 1150, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 1151, 0, 0, 236, 237, 0, 238, 239, 784, 240, - 241, 242, 243, 1152, 785, 1153, 1154, 0, 247, 248, - 249, 250, 251, 1155, 1156, 252, 253, 1157, 1158, 256, - 0, 257, 258, 259, 260, 1159, 0, 1160, 0, 262, - 263, 264, 265, 787, 266, 267, 268, 0, 269, 270, - 271, 272, 273, 274, 0, 788, 275, 276, 277, 1161, - 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, 280, 281, - 282, 283, 1168, 1169, 286, 0, 287, 0, 288, 289, - 290, 291, 292, 293, 0, 294, 295, 296, 0, 0, - 297, 298, 1004, 300, 301, 0, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 311, 1170, 313, - 314, 315, 1171, 1172, 317, 0, 318, 319, 1173, 321, - 0, 322, 0, 323, 790, 0, 791, 324, 325, 326, - 0, 327, 1174, 0, 1175, 330, 0, 331, 332, 333, - 334, 335, 792, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 344, 345, 0, 346, 793, 347, 348, 349, - 350, 351, 1176, 1177, 0, 1178, 0, 355, 794, 795, - 356, 796, 357, 358, 359, 360, 361, 0, 0, 362, - 1179, 797, 364, 798, 0, 365, 366, 367, 1180, 1181, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 1182, 799, 1183, 386, - 387, 388, 1184, 389, 390, 800, 391, 1185, 1186, 393, - 1187, 395, 396, 397, 0, 398, 0, 0, 1188, 400, - 401, 0, 0, 402, 403, 801, 404, 802, 1189, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 414, - 415, 1190, 417, 418, 419, 420, 421, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 1191, 431, 432, 433, - 434, 0, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 0, 446, 447, 803, 448, 449, 450, - 1192, 452, 453, 454, 455, 456, 457, 458, 459, 40, - 460, 461, 462, 463, 464, 1193, 465, 466, 467, 468, - 469, 804, 470, 471, 1194, 473, 0, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 1195, 0, - 486, 487, 44, 488, 805, 489, 490, 491, 492, 493, - 0, 1196, 1197, 0, 0, 496, 497, 1198, 499, 1199, - 1200, 501, 502, 503, 504, 505, 506, 507, 0, 1201, - 508, 509, 510, 511, 512, 1202, 0, 513, 514, 515, - 516, 517, 1077, 1203, 0, 520, 806, 521, 522, 523, - 524, 0, 0, 525, 0, 49, 526, 527, 528, 529, - 530, 531, 532, 1204, 1205, 1206, 1207, 1208, 1209, 1210, - 1211, 541, 542, 543, 1212, 0, 50, 0, 0, 0, - 0, 1213, 1214, 0, 0, 0, 0, 0, 0, 0, - 1216, 783, 1146, 601, 1147, 1148, 1149, 655, 1150, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 1151, 0, 0, 236, 237, 0, 238, 239, - 784, 240, 241, 242, 243, 1152, 785, 1153, 1154, 2560, - 247, 248, 249, 250, 251, 1155, 1156, 252, 253, 1157, - 1158, 256, 0, 257, 258, 259, 260, 1159, 0, 1160, - 0, 262, 263, 264, 265, 787, 266, 267, 268, 0, - 269, 270, 271, 272, 273, 274, 0, 788, 275, 276, - 277, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, - 280, 281, 282, 283, 1168, 1169, 286, 0, 287, 0, - 288, 289, 290, 291, 292, 293, 0, 294, 295, 296, - 0, 0, 297, 298, 1004, 300, 301, 0, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 311, - 1170, 313, 314, 315, 1171, 1172, 317, 0, 318, 319, - 1173, 321, 0, 322, 0, 323, 790, 2561, 791, 324, - 325, 326, 0, 327, 1174, 0, 1175, 330, 0, 331, - 332, 333, 334, 335, 792, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 344, 345, 0, 346, 793, 347, - 348, 349, 350, 351, 1176, 1177, 0, 1178, 0, 355, - 794, 795, 356, 796, 357, 358, 359, 360, 361, 0, - 2562, 362, 1179, 797, 364, 798, 0, 365, 366, 367, - 1180, 1181, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 1182, 799, - 1183, 386, 387, 388, 1184, 389, 390, 800, 391, 1185, - 1186, 393, 1187, 395, 396, 397, 0, 398, 0, 0, - 1188, 400, 401, 0, 0, 402, 403, 801, 404, 802, - 1189, 406, 407, 408, 409, 410, 411, 412, 413, 0, - 0, 414, 415, 1190, 417, 418, 419, 420, 421, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 1191, 431, - 432, 433, 434, 0, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 0, 446, 447, 803, 448, - 449, 450, 1192, 452, 453, 454, 455, 456, 457, 458, - 459, 0, 460, 461, 462, 463, 464, 1193, 465, 466, - 467, 468, 469, 804, 470, 471, 1194, 473, 0, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 1195, 0, 486, 487, 0, 488, 805, 489, 490, 491, - 492, 493, 0, 1196, 1197, 0, 2563, 496, 497, 1198, - 499, 1199, 1200, 501, 502, 503, 504, 505, 506, 507, - 0, 1201, 508, 509, 510, 511, 512, 1202, 0, 513, - 514, 515, 516, 517, 518, 1203, 0, 520, 806, 521, - 522, 523, 524, 0, 0, 525, 0, 0, 526, 527, - 528, 529, 530, 531, 532, 1204, 1205, 1206, 1207, 1208, - 1209, 1210, 1211, 541, 542, 543, 1212, 0, 0, 0, - 0, 0, 0, 1213, 1214, 0, 0, 0, 0, 0, - 0, 0, 1216, 783, 1146, 601, 1147, 1148, 1149, 655, - 1150, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 1151, 0, 0, 236, 237, 0, - 238, 239, 784, 240, 241, 242, 243, 1152, 785, 1153, - 1154, 0, 247, 248, 249, 250, 251, 1155, 1156, 252, - 253, 1157, 1158, 256, 0, 257, 258, 259, 260, 1159, - 0, 1160, 0, 262, 263, 264, 265, 787, 266, 267, - 268, 0, 269, 270, 271, 272, 273, 274, 0, 788, - 275, 276, 277, 1161, 1162, 1163, 1164, 1165, 1166, 1167, - 278, 279, 280, 281, 282, 283, 1168, 1169, 286, 0, - 287, 0, 288, 289, 290, 291, 292, 293, 0, 294, - 295, 296, 0, 0, 297, 298, 1004, 300, 301, 0, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 311, 1170, 313, 314, 315, 1171, 1172, 317, 0, - 318, 319, 1173, 321, 0, 322, 0, 323, 790, 0, - 791, 324, 325, 326, 0, 327, 1174, 0, 1175, 330, - 0, 331, 332, 333, 334, 335, 792, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 344, 345, 0, 346, - 793, 347, 348, 349, 350, 351, 1176, 1177, 0, 1178, - 0, 355, 794, 795, 356, 796, 357, 358, 359, 360, - 361, 0, 0, 362, 1179, 797, 364, 798, 0, 365, - 366, 367, 1180, 1181, 368, 369, 370, 371, 372, 373, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 1034, 0, 0, 0, 0, 0, 0, 0, + 0, 5077, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 0, 1035, 806, 1036, + 1037, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 1038, 1039, 258, 0, 259, 260, 261, 262, 0, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 1040, 1041, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 1042, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 0, 317, 318, 319, 0, 0, + 321, 0, 322, 323, 1043, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 0, + 0, 0, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 2093, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 2094, 353, 354, 355, 356, 1045, + 1046, 0, 1047, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 0, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 1048, 820, 1049, 391, 392, 393, 0, + 0, 395, 396, 821, 397, 0, 0, 399, 1050, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 2095, 409, 2096, 822, 411, 823, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 0, 425, 0, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 1051, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 0, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 2097, 479, 480, 825, 481, 482, 1053, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 0, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 1054, 1055, 0, 0, 508, + 509, 0, 511, 0, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 0, 1056, 2098, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 2389, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 555, 556, 557, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 2099, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 0, 1035, 806, 1036, 1037, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 1038, 1039, 258, 0, 259, + 260, 261, 262, 0, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 1040, 1041, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 0, 317, + 318, 319, 0, 0, 321, 0, 322, 323, 1043, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 0, 0, 0, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 2093, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 2094, 353, + 354, 355, 356, 1045, 1046, 0, 1047, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 0, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1048, 820, 1049, + 391, 392, 393, 0, 0, 395, 396, 821, 397, 0, + 0, 399, 1050, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 2095, 409, 2096, 822, 411, + 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 0, 425, 0, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1051, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 2097, 479, 480, 825, 481, + 482, 1053, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 0, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1054, + 1055, 0, 0, 508, 509, 0, 511, 0, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 0, 1056, 2098, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 849, 1464, 618, 0, 0, 0, 677, 0, 0, 0, + 0, 555, 556, 557, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 2099, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 1941, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 1765, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 1766, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 1767, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 849, 1464, + 618, 0, 0, 0, 677, 1465, 1466, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 1946, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 1765, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 1766, 0, 406, 407, 408, 0, 0, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 1767, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 849, 1464, 618, 0, + 0, 0, 677, 1465, 1466, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 1765, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 1766, + 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 825, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 1767, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 849, 0, 618, 0, 0, 0, + 677, 1465, 1466, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, + 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 2844, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 1765, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 1182, 799, 1183, 386, 387, 388, 1184, 389, 390, 800, - 391, 1185, 1186, 393, 1187, 395, 396, 397, 0, 398, - 0, 0, 1188, 400, 401, 0, 0, 402, 403, 801, - 404, 802, 1189, 406, 407, 408, 409, 410, 411, 412, - 413, 0, 0, 414, 415, 1190, 417, 418, 419, 420, - 421, 0, 422, 423, 424, 425, 426, 427, 428, 429, - 1191, 431, 432, 433, 434, 0, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 0, 446, 447, - 803, 448, 449, 450, 1192, 452, 453, 454, 455, 456, - 457, 458, 459, 0, 460, 461, 462, 463, 464, 1193, - 465, 466, 467, 468, 469, 804, 470, 471, 1194, 473, - 0, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 1195, 0, 486, 487, 0, 488, 805, 489, - 490, 491, 492, 493, 0, 1196, 1197, 0, 0, 496, - 497, 1198, 499, 1199, 1200, 501, 502, 503, 504, 505, - 506, 507, 0, 1201, 508, 509, 510, 511, 512, 1202, - 0, 513, 514, 515, 516, 517, 518, 1203, 0, 520, - 806, 521, 522, 523, 524, 0, 0, 525, 0, 0, - 526, 527, 528, 529, 530, 531, 532, 1204, 1205, 1206, - 1207, 1208, 1209, 1210, 1211, 541, 542, 543, 1212, 0, - 0, 0, 0, 0, 0, 1213, 1214, 0, 0, 0, - 0, 0, 1757, 2515, 1216, 783, 1146, 601, 1147, 1148, - 1149, 655, 1150, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 1151, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 1152, - 785, 1153, 1154, 0, 247, 248, 249, 250, 251, 1155, - 1156, 252, 253, 1157, 1158, 256, 0, 257, 258, 259, - 260, 1159, 0, 1160, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 1161, 1162, 1163, 1164, 1165, - 1166, 1167, 278, 279, 280, 281, 282, 283, 1168, 1169, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 1004, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 1170, 313, 314, 315, 1171, 1172, - 317, 0, 318, 319, 1173, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 1174, 0, - 1175, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 1176, 1177, - 0, 1178, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 1179, 797, 364, 798, - 0, 365, 366, 367, 1180, 1181, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 1182, 799, 1183, 386, 387, 388, 1184, 389, - 390, 800, 391, 1185, 1186, 393, 1187, 395, 396, 397, - 0, 398, 0, 0, 1188, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 1189, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 1190, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 1191, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 1192, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 1193, 465, 466, 467, 468, 469, 804, 470, 471, - 1194, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 1195, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 1196, 1197, 0, - 0, 496, 497, 1198, 499, 1199, 1200, 501, 502, 503, - 504, 505, 506, 507, 0, 1201, 508, 509, 510, 511, - 512, 1202, 0, 513, 514, 515, 516, 517, 518, 1203, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 1204, - 1205, 1206, 1207, 1208, 1209, 1210, 1211, 541, 542, 543, - 1212, 0, 0, 0, 0, 0, 0, 1213, 1214, 1215, - 0, 0, 0, 0, 0, 0, 1216, 783, 1146, 601, - 1147, 1148, 1149, 655, 1150, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1151, 0, - 0, 236, 237, 0, 238, 239, 784, 240, 241, 242, - 243, 1152, 785, 1153, 1154, 0, 247, 248, 249, 250, - 251, 1155, 1156, 252, 253, 1157, 1158, 256, 0, 257, - 258, 259, 260, 1159, 0, 1160, 0, 262, 263, 264, - 265, 787, 266, 267, 268, 0, 269, 270, 271, 272, - 273, 274, 0, 788, 275, 276, 277, 1161, 1162, 1163, - 1164, 1165, 1166, 1167, 278, 279, 280, 281, 282, 283, - 1168, 1169, 286, 1291, 287, 0, 288, 289, 290, 291, - 292, 293, 0, 294, 295, 296, 0, 0, 297, 298, - 1004, 300, 301, 0, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 311, 1170, 313, 314, 315, - 1171, 1172, 317, 0, 318, 319, 1173, 321, 0, 322, - 0, 323, 790, 0, 791, 324, 325, 326, 0, 327, - 1174, 0, 1175, 330, 0, 331, 332, 333, 334, 335, - 792, 336, 337, 338, 339, 0, 340, 341, 342, 343, - 344, 345, 0, 346, 793, 347, 348, 349, 350, 351, - 1176, 1177, 0, 1178, 0, 355, 794, 795, 356, 796, - 357, 358, 359, 360, 361, 0, 0, 362, 1179, 797, - 364, 798, 0, 365, 366, 367, 1180, 1181, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 1182, 799, 1183, 386, 387, 388, - 1184, 389, 390, 800, 391, 1185, 1186, 393, 1187, 395, - 396, 397, 0, 398, 0, 0, 1188, 400, 401, 0, - 0, 402, 403, 801, 404, 802, 1189, 406, 407, 408, - 409, 410, 411, 412, 413, 0, 0, 414, 415, 1190, - 417, 418, 419, 420, 421, 0, 422, 423, 424, 425, - 426, 427, 428, 429, 1191, 431, 432, 433, 434, 0, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 0, 446, 447, 803, 448, 449, 450, 1192, 452, - 453, 454, 455, 456, 457, 458, 459, 0, 460, 461, - 462, 463, 464, 1193, 465, 466, 467, 468, 469, 804, - 470, 471, 1194, 473, 0, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 1195, 0, 486, 487, - 0, 488, 805, 489, 490, 491, 492, 493, 0, 1196, - 1197, 0, 0, 496, 497, 1198, 499, 1199, 1200, 501, - 502, 503, 504, 505, 506, 507, 0, 1201, 508, 509, - 510, 511, 512, 1202, 0, 513, 514, 515, 516, 517, - 518, 1203, 0, 520, 806, 521, 522, 523, 524, 0, - 0, 525, 0, 0, 526, 527, 528, 529, 530, 531, - 532, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 541, - 542, 543, 1212, 0, 0, 0, 0, 0, 0, 1213, - 1214, 0, 0, 0, 0, 0, 0, 0, 1216, 783, - 1146, 601, 1147, 1148, 1149, 655, 1150, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 1990, 233, 234, 235, 0, 0, 0, 0, - 1151, 0, 0, 236, 237, 0, 238, 239, 784, 240, - 241, 242, 243, 1152, 785, 1153, 1154, 0, 247, 248, - 249, 250, 251, 1155, 1156, 252, 253, 1157, 1158, 256, - 0, 257, 258, 259, 260, 1159, 0, 1160, 0, 262, - 263, 264, 265, 787, 266, 267, 268, 0, 269, 270, - 271, 272, 273, 274, 0, 788, 275, 276, 277, 1161, - 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, 280, 281, - 282, 283, 1168, 1169, 286, 0, 287, 0, 288, 289, - 290, 291, 292, 293, 0, 294, 295, 296, 0, 0, - 297, 298, 1004, 300, 301, 0, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 311, 1170, 313, - 314, 315, 1171, 1172, 317, 0, 318, 319, 1173, 321, - 0, 322, 0, 323, 790, 0, 791, 324, 325, 326, - 0, 327, 1174, 0, 1175, 330, 0, 331, 332, 333, - 334, 335, 792, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 344, 345, 0, 346, 793, 347, 348, 349, - 350, 351, 1176, 1177, 0, 1178, 0, 355, 794, 795, - 356, 796, 357, 358, 359, 360, 361, 0, 0, 362, - 1179, 797, 364, 798, 0, 365, 366, 367, 1180, 1181, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 1182, 799, 1183, 386, - 387, 388, 1184, 389, 390, 800, 391, 1185, 1186, 393, - 1187, 395, 396, 397, 0, 398, 0, 0, 1188, 400, - 401, 0, 0, 402, 403, 801, 404, 802, 1189, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 414, - 415, 1190, 417, 418, 419, 420, 421, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 1191, 431, 432, 433, - 434, 0, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 0, 446, 447, 803, 448, 449, 450, - 1192, 452, 453, 454, 455, 456, 457, 458, 459, 0, - 460, 461, 462, 463, 464, 1193, 465, 466, 467, 468, - 469, 804, 470, 471, 1194, 473, 0, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 1195, 0, - 486, 487, 0, 488, 805, 489, 490, 491, 492, 493, - 0, 1196, 1197, 0, 0, 496, 497, 1198, 499, 1199, - 1200, 501, 502, 503, 504, 505, 506, 507, 0, 1201, - 508, 509, 510, 511, 512, 1202, 0, 513, 514, 515, - 516, 517, 518, 1203, 0, 520, 806, 521, 522, 523, - 524, 0, 0, 525, 0, 0, 526, 527, 528, 529, - 530, 531, 532, 1204, 1205, 1206, 1207, 1208, 1209, 1210, - 1211, 541, 542, 543, 1212, 0, 0, 0, 0, 0, - 0, 1213, 1214, 0, 0, 0, 0, 0, 0, 0, - 1216, 783, 1146, 601, 1147, 1148, 1149, 655, 1150, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 1151, 0, 0, 236, 237, 0, 238, 239, - 784, 240, 241, 242, 243, 1152, 785, 1153, 1154, 0, - 247, 248, 249, 250, 251, 1155, 1156, 252, 253, 1157, - 1158, 256, 0, 257, 258, 259, 260, 1159, 0, 1160, - 0, 262, 263, 264, 265, 787, 266, 267, 268, 0, - 269, 270, 271, 272, 273, 274, 0, 788, 275, 276, - 277, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, - 280, 281, 282, 283, 1168, 1169, 286, 0, 287, 0, - 288, 289, 290, 291, 292, 293, 0, 294, 295, 296, - 0, 0, 297, 298, 1004, 300, 301, 0, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 311, - 1170, 313, 314, 315, 1171, 1172, 317, 0, 318, 319, - 1173, 321, 0, 322, 0, 323, 790, 2561, 791, 324, - 325, 326, 0, 327, 1174, 0, 1175, 330, 0, 331, - 332, 333, 334, 335, 792, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 344, 345, 0, 346, 793, 347, - 348, 349, 350, 351, 1176, 1177, 0, 1178, 0, 355, - 794, 795, 356, 796, 357, 358, 359, 360, 361, 0, - 0, 362, 1179, 797, 364, 798, 0, 365, 366, 367, - 1180, 1181, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 1182, 799, - 1183, 386, 387, 388, 1184, 389, 390, 800, 391, 1185, - 1186, 393, 1187, 395, 396, 397, 0, 398, 0, 0, - 1188, 400, 401, 0, 0, 402, 403, 801, 404, 802, - 1189, 406, 407, 408, 409, 410, 411, 412, 413, 0, - 0, 414, 415, 1190, 417, 418, 419, 420, 421, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 1191, 431, - 432, 433, 434, 0, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 0, 446, 447, 803, 448, - 449, 450, 1192, 452, 453, 454, 455, 456, 457, 458, - 459, 0, 460, 461, 462, 463, 464, 1193, 465, 466, - 467, 468, 469, 804, 470, 471, 1194, 473, 0, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 1195, 0, 486, 487, 0, 488, 805, 489, 490, 491, - 492, 493, 0, 1196, 1197, 0, 0, 496, 497, 1198, - 499, 1199, 1200, 501, 502, 503, 504, 505, 506, 507, - 0, 1201, 508, 509, 510, 511, 512, 1202, 0, 513, - 514, 515, 516, 517, 518, 1203, 0, 520, 806, 521, - 522, 523, 524, 0, 0, 525, 0, 0, 526, 527, - 528, 529, 530, 531, 532, 1204, 1205, 1206, 1207, 1208, - 1209, 1210, 1211, 541, 542, 543, 1212, 0, 0, 0, - 0, 0, 0, 1213, 1214, 0, 0, 0, 0, 0, - 0, 0, 1216, 783, 1146, 601, 1147, 1148, 1149, 655, - 1150, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 1151, 0, 0, 236, 237, 0, - 238, 239, 784, 240, 241, 242, 243, 1152, 785, 1153, - 1154, 0, 247, 248, 249, 250, 251, 1155, 1156, 252, - 253, 1157, 1158, 256, 0, 257, 258, 259, 260, 1159, - 0, 1160, 0, 262, 263, 264, 265, 787, 266, 267, - 268, 0, 269, 270, 271, 272, 273, 274, 0, 788, - 275, 276, 277, 1161, 1162, 1163, 1164, 1165, 1166, 1167, - 278, 279, 280, 281, 282, 283, 1168, 1169, 286, 0, - 287, 0, 288, 289, 290, 291, 292, 293, 0, 294, - 295, 296, 0, 0, 297, 298, 1004, 300, 301, 0, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 311, 1170, 313, 314, 315, 1171, 1172, 317, 0, - 318, 319, 1173, 321, 0, 322, 0, 323, 790, 0, - 791, 324, 325, 326, 0, 327, 1174, 0, 1175, 330, - 0, 331, 332, 333, 334, 335, 792, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 344, 345, 0, 346, - 793, 347, 348, 349, 350, 351, 1176, 1177, 0, 1178, - 0, 355, 794, 795, 356, 796, 357, 358, 359, 360, - 361, 0, 0, 362, 1179, 797, 364, 798, 0, 365, - 366, 367, 1180, 1181, 368, 369, 370, 371, 372, 373, + 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, + 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 1766, 0, 406, + 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 825, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 1767, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 677, 689, + 690, 0, 0, 0, 0, 0, 0, 225, 678, 227, + 228, 229, 230, 231, 232, 679, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 680, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 681, 324, 325, 0, 326, 0, 682, + 0, 683, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 684, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 685, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 686, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 687, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 688, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 1952, 5272, 618, 0, 0, 0, 677, 689, 690, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 1953, 234, 235, 236, 1954, 1955, 1956, + 1957, 1958, 1959, 1960, 237, 238, 1961, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 1962, + 249, 250, 251, 252, 253, 1963, 1964, 254, 255, 256, + 257, 258, 1965, 259, 260, 261, 262, 263, 1966, 807, + 1967, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 1968, 272, 273, 274, 275, 276, 277, 1969, 809, 278, + 279, 280, 1970, 1971, 1972, 810, 1973, 1974, 1975, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 1976, 290, + 1977, 291, 292, 293, 294, 295, 296, 1978, 297, 298, + 299, 300, 1979, 1980, 301, 302, 303, 304, 305, 1981, + 306, 307, 308, 1982, 309, 310, 311, 1983, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 1984, 321, 1985, + 322, 323, 324, 325, 1986, 326, 1987, 327, 811, 1988, + 812, 328, 329, 330, 331, 1989, 332, 333, 1990, 334, + 335, 1991, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 1992, 345, 346, 347, 348, 349, 350, 1993, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 1994, + 359, 1995, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 1996, 1997, 367, 368, 818, 369, 819, 1998, + 370, 371, 372, 1999, 2000, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 2001, 395, + 396, 821, 397, 2002, 398, 399, 400, 401, 402, 403, + 2003, 404, 405, 2004, 2005, 406, 407, 408, 2006, 2007, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 2008, 422, 423, 424, + 425, 426, 427, 428, 429, 2009, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 2010, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 2011, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 2012, 471, 472, 473, 474, 475, 2013, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 2014, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 2015, 498, 499, 2016, 500, 826, 501, 502, 503, + 504, 505, 2017, 506, 507, 2018, 2019, 508, 509, 510, + 511, 512, 2020, 513, 514, 515, 516, 517, 518, 519, + 2021, 2022, 520, 521, 522, 523, 524, 2023, 2024, 525, + 526, 527, 528, 529, 530, 531, 2025, 532, 827, 533, + 534, 535, 536, 2026, 2027, 537, 2028, 2029, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 1952, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 1953, 234, 235, 236, 1954, 1955, 1956, 1957, 1958, + 1959, 1960, 237, 238, 1961, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 1962, 249, 250, + 251, 252, 253, 1963, 1964, 254, 255, 256, 257, 258, + 1965, 259, 260, 261, 262, 263, 1966, 807, 1967, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 1968, 272, + 273, 274, 275, 276, 277, 1969, 809, 278, 279, 280, + 1970, 1971, 1972, 810, 1973, 1974, 1975, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 1976, 290, 1977, 291, + 292, 293, 294, 295, 296, 1978, 297, 298, 299, 300, + 1979, 1980, 301, 302, 303, 304, 305, 1981, 306, 307, + 308, 1982, 309, 310, 311, 1983, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 1984, 321, 1985, 322, 323, + 324, 325, 1986, 326, 1987, 327, 811, 1988, 812, 328, + 329, 330, 331, 1989, 332, 333, 1990, 334, 335, 1991, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 1992, 345, 346, 347, 348, 349, 350, 1993, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 1994, 359, 1995, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 1996, 1997, 367, 368, 818, 369, 819, 1998, 370, 371, + 372, 1999, 2000, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 2001, 395, 396, 821, + 397, 2002, 398, 399, 400, 401, 402, 403, 2003, 404, + 405, 2004, 2005, 406, 407, 408, 2006, 2007, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 2008, 422, 423, 424, 425, 426, + 427, 428, 429, 2009, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 2010, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 2011, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 2012, 471, + 472, 473, 474, 475, 2013, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 2014, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 2015, + 498, 499, 2016, 500, 826, 501, 502, 503, 504, 505, + 2017, 506, 507, 2018, 2019, 508, 509, 510, 511, 512, + 2020, 513, 514, 515, 516, 517, 518, 519, 2021, 2022, + 520, 521, 522, 523, 524, 2023, 2024, 525, 526, 527, + 528, 529, 530, 531, 2025, 532, 827, 533, 534, 535, + 536, 2026, 2027, 537, 2028, 2029, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 1952, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 2958, 230, 231, 232, 1953, + 234, 235, 236, 1954, 1955, 1956, 1957, 1958, 1959, 1960, + 237, 238, 1961, 239, 240, 241, 805, 242, 243, 244, + 245, 246, 806, 247, 248, 1962, 249, 250, 251, 252, + 253, 1963, 1964, 254, 255, 256, 257, 258, 1965, 259, + 260, 261, 262, 263, 1966, 807, 1967, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 1968, 272, 273, 274, + 275, 276, 277, 1969, 809, 278, 279, 280, 1970, 1971, + 1972, 810, 1973, 1974, 1975, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 1976, 290, 1977, 291, 292, 293, + 294, 295, 296, 1978, 297, 298, 299, 300, 1979, 1980, + 301, 302, 303, 2959, 305, 1981, 306, 307, 308, 1982, + 309, 310, 311, 1983, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 1984, 321, 1985, 322, 323, 324, 325, + 1986, 326, 1987, 327, 811, 1988, 812, 328, 329, 330, + 331, 1989, 332, 333, 1990, 334, 335, 1991, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 1992, 345, + 346, 347, 348, 349, 350, 1993, 351, 814, 352, 353, + 354, 355, 356, 357, 358, 1994, 359, 1995, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 1996, 1997, + 367, 368, 818, 369, 819, 1998, 370, 371, 372, 1999, + 2000, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, + 391, 392, 393, 394, 2001, 395, 396, 821, 397, 2002, + 398, 399, 400, 401, 402, 403, 2003, 404, 405, 2004, + 2005, 406, 407, 408, 2006, 2007, 409, 410, 822, 411, + 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 2008, 422, 423, 424, 425, 426, 427, 428, + 429, 2009, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 2010, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 2011, + 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 2012, 471, 472, 473, + 474, 475, 2013, 2960, 477, 478, 479, 480, 825, 481, + 482, 483, 484, 2014, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 2015, 498, 499, + 2016, 500, 826, 501, 502, 503, 504, 505, 2017, 506, + 507, 2018, 2019, 508, 509, 510, 511, 512, 2020, 513, + 514, 515, 516, 517, 518, 519, 2021, 2022, 520, 521, + 522, 523, 524, 2023, 2024, 525, 526, 527, 528, 529, + 530, 531, 2025, 532, 827, 533, 534, 535, 536, 2026, + 2027, 537, 2028, 2029, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 804, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, + 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 1195, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 1198, 0, 1199, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 1200, 1201, 1202, 1203, + 1204, 1205, 1206, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 1211, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 1214, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 1219, + 818, 369, 819, 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 1182, 799, 1183, 386, 387, 388, 1184, 389, 390, 800, - 391, 1185, 1186, 393, 1187, 395, 396, 397, 0, 398, - 0, 0, 1188, 400, 401, 0, 0, 402, 403, 801, - 404, 802, 1189, 406, 407, 408, 409, 410, 411, 412, - 413, 0, 0, 414, 415, 1190, 417, 418, 419, 420, - 421, 0, 422, 423, 424, 425, 426, 427, 428, 429, - 1191, 431, 432, 433, 434, 0, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 0, 446, 447, - 803, 448, 449, 450, 1192, 452, 453, 454, 455, 456, - 457, 458, 459, 0, 460, 461, 462, 463, 464, 1193, - 465, 466, 467, 468, 469, 804, 470, 471, 1194, 473, - 0, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 1195, 0, 486, 487, 0, 488, 805, 489, - 490, 491, 492, 493, 0, 1196, 1197, 0, 0, 496, - 497, 1198, 499, 1199, 1200, 501, 502, 503, 504, 505, - 506, 507, 0, 1201, 508, 509, 510, 511, 512, 1202, - 0, 513, 514, 515, 516, 517, 518, 1203, 3866, 520, - 806, 521, 522, 523, 524, 0, 0, 525, 0, 0, - 526, 527, 528, 529, 530, 531, 532, 1204, 1205, 1206, - 1207, 1208, 1209, 1210, 1211, 541, 542, 543, 1212, 0, - 0, 0, 0, 0, 0, 1213, 1214, 0, 0, 0, - 0, 0, 0, 0, 1216, 783, 1146, 601, 1147, 1148, - 1149, 655, 1150, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 1151, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 1152, - 785, 1153, 1154, 0, 247, 248, 249, 250, 251, 1155, - 1156, 252, 253, 1157, 1158, 256, 0, 257, 258, 259, - 260, 1159, 0, 1160, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 1161, 1162, 1163, 1164, 1165, - 1166, 1167, 278, 279, 280, 281, 282, 283, 1168, 1169, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 1004, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 1170, 313, 314, 315, 1171, 1172, - 317, 0, 318, 319, 1173, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 1174, 0, - 1175, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 1176, 1177, - 0, 1178, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 1179, 797, 364, 798, - 0, 365, 366, 367, 1180, 1181, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 1182, 799, 1183, 386, 387, 388, 1184, 389, - 390, 800, 391, 1185, 1186, 393, 1187, 395, 396, 397, - 0, 398, 0, 0, 1188, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 1189, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 1190, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 1191, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 1192, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 1193, 465, 466, 467, 468, 469, 804, 470, 471, - 1194, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 1195, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 1196, 1197, 0, - 0, 496, 497, 1198, 499, 1199, 1200, 501, 502, 503, - 504, 505, 506, 507, 0, 1201, 508, 509, 510, 511, - 512, 1202, 0, 513, 514, 515, 516, 517, 518, 1203, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 1204, - 1205, 1206, 1207, 1208, 1209, 1210, 1211, 541, 542, 543, - 1212, 0, 0, 0, 0, 0, 0, 1213, 1214, 0, - 0, 0, 0, 0, 0, 0, 1216, 783, 1146, 601, - 1147, 1148, 1149, 655, 1150, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1151, 0, - 0, 236, 237, 0, 238, 239, 784, 240, 241, 242, - 243, 1152, 785, 1153, 1154, 0, 247, 248, 249, 250, - 251, 1155, 1156, 252, 253, 1157, 1158, 256, 0, 257, - 258, 259, 260, 1159, 0, 1160, 0, 262, 263, 264, - 265, 787, 266, 267, 268, 0, 269, 270, 271, 272, - 273, 274, 0, 788, 275, 276, 3879, 1161, 1162, 1163, - 1164, 1165, 1166, 1167, 278, 279, 280, 281, 282, 283, - 1168, 1169, 286, 0, 287, 0, 288, 289, 290, 291, - 292, 293, 0, 294, 295, 296, 0, 0, 297, 298, - 1004, 300, 301, 0, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 311, 1170, 313, 314, 315, - 1171, 1172, 317, 0, 318, 319, 1173, 321, 0, 322, - 0, 323, 790, 0, 791, 324, 325, 326, 0, 327, - 1174, 0, 1175, 330, 0, 331, 332, 333, 334, 335, - 792, 336, 337, 338, 339, 0, 340, 341, 342, 343, - 344, 345, 0, 346, 793, 347, 348, 349, 350, 351, - 1176, 1177, 0, 1178, 0, 355, 794, 795, 356, 796, - 357, 358, 359, 360, 361, 0, 0, 362, 1179, 797, - 364, 798, 0, 365, 366, 367, 1180, 1181, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 1182, 799, 1183, 386, 387, 388, - 1184, 389, 390, 800, 391, 1185, 1186, 393, 1187, 395, - 396, 397, 0, 398, 0, 0, 1188, 400, 401, 0, - 0, 402, 403, 801, 404, 802, 1189, 406, 407, 408, - 409, 410, 411, 412, 413, 0, 0, 414, 415, 1190, - 417, 418, 419, 420, 421, 0, 422, 423, 424, 425, - 426, 427, 428, 429, 1191, 431, 432, 433, 434, 0, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 0, 446, 447, 803, 448, 449, 450, 1192, 452, - 453, 454, 455, 456, 457, 458, 459, 0, 460, 461, - 462, 463, 464, 1193, 465, 466, 467, 468, 469, 804, - 470, 471, 1194, 473, 0, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 1195, 0, 486, 487, - 0, 488, 805, 489, 490, 491, 492, 493, 0, 1196, - 1197, 0, 0, 496, 497, 1198, 499, 1199, 1200, 501, - 502, 503, 504, 505, 506, 507, 0, 1201, 508, 509, - 510, 511, 512, 1202, 0, 513, 514, 515, 516, 517, - 518, 1203, 0, 520, 806, 521, 522, 523, 524, 0, - 0, 525, 0, 0, 526, 527, 528, 529, 530, 531, - 532, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 541, - 542, 543, 1212, 0, 0, 0, 0, 0, 0, 1213, - 1214, 0, 0, 0, 0, 0, 0, 0, 1216, 783, - 1146, 601, 1147, 1148, 1149, 655, 1150, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 1151, 0, 0, 236, 237, 0, 238, 239, 784, 240, - 241, 242, 243, 1152, 785, 1153, 1154, 0, 247, 248, - 249, 250, 251, 1155, 1156, 252, 253, 1157, 1158, 256, - 0, 257, 258, 259, 260, 1159, 0, 1160, 0, 262, - 263, 264, 265, 787, 266, 267, 268, 0, 269, 270, - 271, 272, 273, 274, 0, 788, 275, 276, 277, 1161, - 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, 280, 281, - 282, 283, 1168, 1169, 286, 0, 287, 0, 288, 289, - 290, 291, 292, 293, 0, 294, 295, 296, 0, 0, - 297, 298, 1004, 300, 301, 0, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 311, 1170, 313, - 314, 315, 1171, 1172, 317, 0, 318, 319, 1173, 321, - 0, 322, 0, 323, 790, 0, 791, 324, 325, 326, - 0, 327, 1174, 0, 1175, 330, 0, 331, 332, 333, - 334, 335, 792, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 344, 345, 0, 346, 793, 347, 348, 349, - 350, 351, 1176, 1177, 0, 1178, 0, 355, 794, 795, - 356, 796, 357, 358, 359, 360, 361, 0, 0, 362, - 1179, 797, 364, 798, 0, 365, 366, 367, 1180, 1181, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 1182, 799, 1183, 386, - 387, 388, 1184, 389, 390, 800, 391, 1185, 1186, 393, - 1187, 395, 396, 397, 0, 398, 0, 0, 1188, 400, - 401, 0, 0, 402, 403, 801, 404, 802, 1189, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 414, - 415, 1190, 417, 418, 419, 420, 421, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 1191, 431, 432, 433, - 434, 0, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 0, 446, 447, 803, 448, 449, 450, - 1192, 452, 453, 454, 455, 456, 457, 458, 459, 0, - 460, 461, 462, 463, 464, 1193, 465, 466, 467, 468, - 469, 804, 470, 471, 1194, 473, 0, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 1195, 0, - 486, 487, 0, 488, 805, 489, 490, 491, 492, 493, - 0, 1196, 1197, 0, 0, 496, 497, 1198, 499, 1199, - 1200, 501, 502, 503, 504, 505, 506, 507, 0, 1201, - 508, 509, 510, 511, 512, 1202, 0, 513, 514, 515, - 516, 517, 518, 1203, 0, 520, 806, 521, 522, 523, - 524, 0, 0, 525, 0, 0, 526, 527, 528, 529, - 530, 531, 4170, 1204, 1205, 1206, 1207, 1208, 1209, 1210, - 1211, 541, 542, 543, 1212, 0, 0, 0, 0, 0, - 0, 1213, 1214, 0, 0, 0, 0, 0, 0, 0, - 1216, 783, 1146, 601, 1147, 1148, 1149, 655, 1150, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 1151, 0, 0, 236, 237, 0, 238, 239, - 784, 240, 241, 242, 243, 1152, 785, 1153, 1154, 0, - 247, 248, 249, 250, 251, 1155, 1156, 252, 253, 1157, - 1158, 256, 0, 257, 258, 259, 260, 1159, 0, 1160, - 0, 262, 263, 264, 265, 787, 266, 267, 268, 0, - 269, 270, 271, 272, 273, 274, 0, 788, 275, 276, - 277, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, - 280, 281, 282, 283, 1168, 1169, 286, 0, 287, 0, - 288, 289, 290, 291, 292, 293, 0, 294, 295, 296, - 0, 0, 297, 298, 1004, 300, 301, 0, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 311, - 1170, 313, 314, 315, 1171, 1172, 317, 0, 318, 319, - 1173, 321, 0, 322, 0, 323, 790, 0, 791, 324, - 325, 326, 0, 327, 1174, 0, 1175, 330, 0, 331, - 332, 333, 334, 335, 792, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 344, 345, 0, 346, 793, 347, - 348, 349, 350, 351, 1176, 1177, 0, 1178, 0, 355, - 794, 795, 356, 796, 357, 358, 359, 360, 361, 0, - 0, 362, 1179, 797, 364, 798, 0, 365, 366, 367, - 1180, 1181, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 1182, 799, - 1183, 386, 4179, 388, 1184, 389, 390, 800, 391, 1185, - 1186, 393, 1187, 395, 396, 397, 0, 398, 0, 0, - 1188, 400, 401, 0, 0, 402, 403, 801, 404, 802, - 1189, 406, 407, 408, 409, 410, 411, 412, 413, 0, - 0, 414, 415, 1190, 417, 418, 419, 420, 421, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 1191, 431, - 432, 433, 434, 0, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 0, 446, 447, 803, 448, - 449, 450, 1192, 452, 453, 454, 455, 456, 457, 458, - 459, 0, 460, 461, 462, 463, 464, 1193, 465, 466, - 467, 468, 469, 804, 470, 471, 1194, 473, 0, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 1195, 0, 486, 487, 0, 488, 805, 489, 490, 491, - 492, 493, 0, 1196, 1197, 0, 0, 496, 497, 1198, - 499, 1199, 1200, 501, 502, 503, 504, 505, 506, 507, - 0, 1201, 508, 509, 510, 511, 512, 1202, 0, 513, - 514, 515, 516, 517, 518, 1203, 0, 520, 806, 521, - 522, 523, 524, 0, 0, 525, 0, 0, 526, 527, - 528, 529, 530, 531, 532, 1204, 1205, 1206, 1207, 1208, - 1209, 1210, 1211, 541, 542, 543, 1212, 0, 0, 0, - 0, 0, 0, 1213, 1214, 0, 0, 0, 0, 0, - 0, 0, 1216, 783, 1146, 601, 1147, 1148, 1149, 655, - 1150, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 1151, 0, 0, 236, 237, 0, - 238, 239, 784, 240, 241, 242, 243, 1152, 785, 1153, - 1154, 0, 247, 248, 249, 250, 251, 1155, 1156, 252, - 253, 1157, 1158, 256, 0, 257, 258, 259, 260, 1159, - 0, 1160, 0, 262, 263, 264, 265, 787, 266, 267, - 268, 0, 269, 270, 271, 272, 273, 274, 0, 788, - 275, 4468, 277, 1161, 1162, 1163, 1164, 1165, 1166, 1167, - 278, 279, 280, 281, 282, 283, 1168, 1169, 286, 0, - 287, 0, 288, 289, 290, 291, 292, 293, 0, 294, - 295, 296, 0, 0, 297, 298, 1004, 300, 301, 0, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 311, 1170, 313, 314, 315, 1171, 1172, 317, 0, - 318, 319, 1173, 321, 0, 322, 0, 323, 790, 0, - 791, 324, 325, 326, 0, 327, 1174, 0, 4469, 330, - 0, 331, 332, 333, 334, 335, 792, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 344, 345, 0, 346, - 793, 347, 348, 349, 350, 351, 1176, 1177, 0, 1178, - 0, 355, 794, 795, 356, 796, 357, 358, 359, 360, - 361, 0, 0, 362, 1179, 797, 364, 798, 0, 365, - 366, 367, 1180, 1181, 368, 369, 370, 371, 372, 373, + 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, + 393, 394, 0, 395, 396, 821, 397, 0, 1226, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 822, 411, 823, 1229, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 1230, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 1233, 476, 477, 478, 479, 480, 825, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 1235, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 1238, 511, 1239, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 1242, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 1244, + 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, 554, 555, + 556, 557, 849, 0, 618, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 1765, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, + 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 1766, 0, 406, 407, 408, + 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 1767, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 886, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 850, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 851, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 849, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 905, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 850, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 906, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 851, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 849, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 850, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 851, 476, 477, 478, 479, 480, 825, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 2345, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 849, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, + 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 850, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 333, 3284, 334, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 1182, 799, 1183, 386, 387, 388, 1184, 389, 390, 800, - 391, 1185, 1186, 393, 1187, 395, 396, 397, 0, 398, - 0, 0, 1188, 400, 401, 0, 0, 402, 403, 801, - 404, 802, 1189, 406, 407, 408, 409, 410, 411, 412, - 413, 0, 0, 414, 415, 1190, 417, 418, 419, 420, - 421, 0, 422, 423, 424, 425, 426, 427, 428, 429, - 1191, 431, 432, 433, 434, 0, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 0, 446, 447, - 803, 448, 449, 4470, 1192, 452, 453, 454, 455, 456, - 457, 458, 459, 0, 460, 461, 462, 463, 464, 1193, - 465, 466, 467, 468, 469, 804, 470, 471, 1194, 473, - 0, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 1195, 0, 486, 487, 0, 488, 805, 489, - 490, 491, 492, 493, 0, 1196, 1197, 0, 0, 496, - 497, 1198, 499, 1199, 1200, 501, 502, 503, 504, 505, - 506, 507, 0, 1201, 508, 509, 510, 511, 512, 1202, - 0, 513, 514, 515, 516, 517, 518, 1203, 0, 520, - 806, 521, 522, 523, 524, 0, 0, 525, 0, 0, - 526, 527, 528, 529, 530, 531, 532, 1204, 1205, 1206, - 1207, 1208, 1209, 1210, 1211, 541, 542, 543, 1212, 0, - 0, 0, 0, 0, 0, 1213, 1214, 0, 0, 0, - 0, 0, 0, 0, 4471, 783, 1146, 601, 1147, 1148, - 1149, 655, 1150, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 1151, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 4857, 1152, - 785, 1153, 1154, 0, 247, 248, 249, 250, 251, 1155, - 1156, 252, 253, 1157, 1158, 256, 0, 257, 258, 259, - 260, 1159, 0, 1160, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 4858, 1161, 1162, 1163, 1164, 1165, - 1166, 1167, 278, 279, 280, 281, 282, 283, 1168, 1169, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 1004, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 1170, 313, 314, 315, 1171, 1172, - 317, 0, 318, 319, 1173, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 1174, 0, - 1175, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 1176, 1177, - 0, 1178, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 1179, 797, 364, 798, - 0, 365, 366, 367, 1180, 1181, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 1182, 799, 1183, 386, 387, 388, 1184, 389, - 390, 800, 391, 1185, 1186, 393, 1187, 395, 396, 397, - 0, 398, 0, 0, 1188, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 1189, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 1190, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 1191, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 1192, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 1193, 465, 466, 467, 468, 469, 804, 470, 471, - 1194, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 1195, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 1196, 1197, 0, - 0, 496, 497, 1198, 499, 1199, 1200, 501, 502, 503, - 504, 4859, 506, 507, 0, 1201, 508, 509, 510, 511, - 512, 1202, 0, 513, 514, 515, 516, 517, 518, 1203, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 1204, - 1205, 1206, 1207, 1208, 1209, 1210, 1211, 541, 542, 543, - 1212, 0, 0, 0, 0, 0, 0, 1213, 1214, 0, - 0, 0, 0, 0, 0, 0, 1216, 783, 1146, 601, - 1147, 1148, 1149, 655, 1150, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1151, 0, - 0, 236, 237, 0, 238, 239, 784, 240, 241, 242, - 243, 1152, 785, 1153, 1154, 0, 247, 248, 249, 250, - 251, 1155, 1156, 252, 253, 1157, 1158, 256, 0, 257, - 258, 259, 260, 1159, 0, 1160, 0, 262, 263, 264, - 265, 787, 266, 267, 268, 0, 269, 270, 271, 272, - 273, 274, 0, 788, 275, 276, 4858, 1161, 1162, 1163, - 1164, 1165, 1166, 1167, 278, 279, 280, 281, 282, 283, - 1168, 1169, 286, 0, 287, 0, 288, 289, 290, 291, - 292, 293, 0, 294, 295, 296, 0, 0, 297, 298, - 1004, 300, 301, 0, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 311, 1170, 313, 314, 315, - 1171, 1172, 317, 0, 318, 319, 1173, 321, 0, 322, - 0, 323, 790, 0, 791, 324, 325, 326, 0, 327, - 1174, 0, 1175, 330, 0, 331, 332, 333, 334, 335, - 792, 336, 337, 338, 339, 0, 340, 341, 342, 343, - 344, 345, 0, 346, 793, 347, 348, 349, 350, 351, - 1176, 1177, 0, 1178, 0, 355, 794, 795, 356, 796, - 357, 358, 359, 360, 361, 0, 0, 362, 1179, 797, - 364, 798, 0, 365, 366, 367, 1180, 1181, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 1182, 799, 1183, 386, 387, 388, - 1184, 389, 390, 800, 391, 1185, 1186, 393, 1187, 395, - 396, 397, 0, 398, 0, 0, 1188, 400, 401, 0, - 0, 402, 403, 801, 404, 802, 1189, 406, 407, 408, - 409, 410, 411, 412, 413, 0, 0, 414, 415, 1190, - 417, 418, 419, 420, 421, 0, 422, 423, 424, 425, - 426, 427, 428, 429, 1191, 431, 432, 433, 434, 0, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 0, 446, 447, 803, 448, 449, 450, 1192, 452, - 453, 454, 455, 456, 457, 458, 459, 0, 460, 461, - 462, 463, 464, 1193, 465, 466, 467, 468, 469, 804, - 470, 471, 1194, 473, 0, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 1195, 0, 486, 487, - 0, 488, 805, 489, 490, 491, 492, 493, 0, 1196, - 1197, 0, 0, 496, 497, 1198, 499, 1199, 1200, 501, - 502, 503, 504, 4859, 506, 507, 0, 1201, 508, 509, - 510, 511, 512, 1202, 0, 513, 514, 515, 516, 517, - 518, 1203, 0, 520, 806, 521, 522, 523, 524, 0, - 0, 525, 0, 0, 526, 527, 528, 529, 530, 531, - 532, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 541, - 542, 543, 1212, 0, 0, 0, 0, 0, 0, 1213, - 1214, 0, 0, 0, 0, 0, 0, 0, 1216, 783, - 1146, 601, 1147, 1148, 1149, 655, 1150, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 1151, 0, 0, 236, 237, 0, 238, 239, 784, 240, - 241, 242, 243, 1152, 785, 1153, 1154, 0, 247, 248, - 249, 250, 251, 1155, 1156, 252, 253, 1157, 1158, 256, - 0, 257, 258, 259, 260, 1159, 0, 1160, 0, 262, - 263, 264, 265, 787, 266, 267, 268, 0, 269, 270, - 271, 272, 273, 274, 0, 788, 275, 276, 277, 1161, - 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, 280, 281, - 282, 283, 1168, 1169, 286, 0, 287, 0, 288, 289, - 290, 291, 292, 293, 0, 294, 295, 296, 0, 0, - 297, 298, 1004, 300, 301, 0, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 311, 1170, 313, - 314, 315, 1171, 1172, 317, 0, 318, 319, 1173, 321, - 0, 322, 0, 323, 790, 0, 791, 324, 325, 326, - 0, 327, 1174, 0, 1175, 330, 0, 331, 332, 333, - 334, 335, 792, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 344, 345, 0, 346, 793, 347, 348, 349, - 350, 351, 1176, 1177, 0, 1178, 0, 355, 794, 795, - 356, 796, 357, 358, 359, 360, 361, 0, 0, 362, - 1179, 797, 364, 798, 0, 365, 366, 367, 1180, 1181, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 1182, 799, 1183, 386, - 387, 388, 0, 389, 390, 800, 391, 1185, 1186, 393, - 1187, 395, 396, 397, 0, 398, 0, 0, 1188, 400, - 401, 0, 0, 402, 403, 801, 404, 802, 1189, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 414, - 415, 1190, 417, 418, 419, 420, 421, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 1191, 431, 432, 433, - 434, 0, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 0, 446, 447, 803, 448, 449, 450, - 2546, 452, 453, 454, 455, 456, 457, 458, 459, 0, - 460, 461, 462, 463, 464, 1193, 465, 466, 467, 468, - 469, 804, 470, 471, 1194, 473, 0, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 1195, 0, - 486, 487, 0, 488, 805, 489, 490, 491, 492, 493, - 0, 1196, 1197, 0, 0, 496, 497, 1198, 499, 1199, - 1200, 501, 502, 503, 504, 505, 506, 507, 0, 0, - 508, 509, 510, 511, 512, 1202, 0, 513, 514, 515, - 516, 517, 518, 1203, 0, 520, 806, 521, 522, 523, - 524, 0, 0, 525, 0, 0, 526, 527, 528, 529, - 530, 531, 532, 1204, 1205, 1206, 1207, 1208, 1209, 1210, - 1211, 541, 542, 543, 0, 0, 0, 0, 0, 0, - 0, 2547, 2548, 0, 0, 0, 0, 0, 0, 0, - 2549, 783, 1146, 601, 1147, 1148, 1149, 655, 1150, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 1151, 0, 0, 236, 237, 0, 238, 239, - 784, 240, 241, 242, -2420, 1152, 785, 1153, 1154, 0, - 247, 248, 249, 250, 251, 1155, 1156, 252, 253, 1157, - 1158, 256, 0, 257, 258, 259, 260, 1159, 0, 1160, - 0, 262, 263, 264, 265, 787, 266, 267, 268, 0, - 269, 270, 271, 272, 273, 274, 0, 788, 275, 276, - 4858, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, - 280, 281, 282, 283, 1168, 1169, 286, 0, 287, 0, - 288, 289, 290, 291, 292, 293, 0, 294, 295, 296, - 0, 0, 297, 298, 1004, 300, 301, 0, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 311, - 1170, 313, 314, 315, 1171, 1172, 317, 0, 318, 319, - 1173, 321, 0, 322, 0, 323, 790, 0, 791, 324, - 325, 326, 0, 327, 1174, 0, 1175, 330, 0, 331, - 332, 333, 334, 335, -2420, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 344, 345, 0, 346, 793, 347, - 348, 349, 350, 351, 1176, 1177, 0, 1178, 0, 355, - 0, 0, 356, 796, 357, 358, 359, 360, 361, 0, - 0, 362, 1179, 797, 364, -2420, 0, 365, 366, 367, - 1180, 1181, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 1182, 799, - 1183, 386, 387, 388, 1184, 389, 390, 0, 391, 1185, - 1186, 393, 1187, 395, 396, 397, 0, 398, 0, 0, - 1188, 400, 401, 0, 0, 402, 403, 801, 404, 802, - 1189, 406, 407, 408, 409, 410, 411, 412, 413, 0, - 0, 414, 415, 1190, 417, 418, 419, 420, 421, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 1191, 431, - 432, 433, 434, 0, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 0, 446, 447, 803, 448, - 449, 450, 1192, 452, 453, 454, 455, 456, 457, 458, - 459, 0, 460, 461, 462, 463, 464, 1193, 465, 466, - 467, 468, 469, -2420, 470, 471, 1194, 473, 0, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 1195, 0, 486, 487, 0, 488, 805, 489, 490, 491, - 492, 493, 0, 1196, 1197, 0, 0, 496, 497, 1198, - 499, 1199, 1200, 501, 502, 503, 504, 4859, 506, 507, - 0, 1201, 508, 509, 510, 511, 512, 1202, 0, 513, - 514, 515, 516, 517, 518, 1203, 0, 520, 806, 521, - 522, 523, 524, 0, 0, 525, 0, 0, 526, 527, - 528, 529, 530, 531, 532, 1204, 1205, 1206, 1207, 1208, - 1209, 1210, 1211, 541, 542, 543, -2420, 0, 0, 0, - 0, 0, 0, 1213, 1214, 0, 0, 0, 0, 0, - 0, 0, 1216, 783, 1146, 601, 1147, 1148, 1149, 655, - 1150, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 1151, 0, 0, 236, 237, 0, - 238, 239, 784, 240, 241, 242, 243, 1152, 785, 1153, - 1154, 0, 247, 248, 249, 250, 251, 1155, 1156, 252, - 253, 1157, 1158, 256, 0, 257, 258, 259, 260, 1159, - 0, 1160, 0, 262, 263, 264, 265, 787, 266, 267, - 268, 0, 269, 270, 271, 272, 273, 274, 0, 788, - 275, 276, 277, 1161, 1162, 1163, 1164, 1165, 1166, 1167, - 278, 279, 280, 281, 282, 283, 1168, 1169, 286, 0, - 287, 0, 288, 289, 290, 291, 292, 293, 0, 294, - 295, 296, 0, 0, 297, 298, 1004, 300, 301, 0, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 311, 1170, 313, 314, 315, 1171, 1172, 317, 0, - 318, 319, 1173, 321, 0, 322, 0, 323, 790, 0, - 791, 324, 325, 326, 0, 327, 1174, 0, 1175, 330, - 0, 331, 332, 333, 334, 335, 792, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 344, 345, 0, 346, - 793, 347, 348, 349, 350, 351, 1176, 1177, 0, 1178, - 0, 355, 0, 795, 356, 796, 357, 358, 359, 360, - 361, 0, 0, 362, 1179, 797, 364, 798, 0, 365, - 366, 367, 1180, 1181, 368, 369, 370, 371, 372, 373, + 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, + 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 851, 476, 477, 478, 479, 480, 825, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 849, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 850, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, + 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 851, 476, + 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 850, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 1004, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 851, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 849, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 850, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 1079, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 851, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 849, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 850, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 1090, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 851, 476, 477, 478, 479, 480, 825, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 849, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, + 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 850, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 1100, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 1101, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, + 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 851, 476, 477, 478, 479, 480, 825, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 849, 0, 618, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 1926, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, + 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 3, 4, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 849, 0, + 618, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 849, 0, 618, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 1751, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 825, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 804, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, + 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 1182, 799, 1183, 386, 387, 388, 0, 389, 390, 800, - 391, 1185, 1186, 393, 1187, 395, 396, 397, 0, 398, - 0, 0, 1188, 400, 401, 0, 0, 402, 403, 801, - 404, 802, 1189, 406, 407, 408, 409, 410, 411, 412, - 413, 0, 0, 414, 415, 1190, 417, 418, 419, 420, - 421, 0, 422, 423, 424, 425, 426, 427, 428, 429, - 1191, 431, 432, 433, 434, 0, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 0, 446, 447, - 803, 448, 449, 450, 2546, 452, 453, 454, 455, 456, - 457, 458, 459, 0, 460, 461, 462, 463, 464, 1193, - 465, 466, 467, 468, 469, 804, 470, 471, 1194, 473, - 0, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 1195, 0, 486, 487, 0, 488, 805, 489, - 490, 491, 492, 493, 0, 1196, 1197, 0, 0, 496, - 497, 1198, 499, 1199, 1200, 501, 502, 503, 504, 505, - 506, 507, 0, 0, 508, 509, 510, 511, 512, 1202, - 0, 513, 514, 515, 516, 517, 518, 1203, 0, 520, - 806, 521, 522, 523, 524, 0, 0, 525, 0, 0, - 526, 527, 528, 529, 530, 531, 532, 1204, 1205, 1206, - 1207, 1208, 1209, 1210, 1211, 541, 542, 543, 0, 0, - 0, 0, 0, 0, 0, 2547, 2548, 0, 0, 783, - 1146, 601, 1147, 1148, 2549, 655, 1150, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 1151, 0, 0, 236, 237, 0, 238, 239, 784, 240, - 241, 242, 243, 1152, 785, 1153, 1154, 0, 247, 248, - 249, 250, 251, 1155, 1156, 252, 253, 1157, 1158, 256, - 0, 257, 258, 259, 260, 1159, 0, 1160, 0, 262, - 263, 264, 265, 787, 266, 267, 268, 0, 269, 270, - 271, 272, 273, 274, 0, 788, 275, 276, 277, 1161, - 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, 280, 281, - 282, 283, 1168, 1169, 286, 0, 287, 0, 288, 289, - 290, 291, 292, 293, 0, 294, 295, 296, 0, 0, - 297, 298, 1004, 300, 301, 0, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 311, 1170, 313, - 314, 315, 1171, 1172, 317, 0, 318, 319, 1173, 321, - 0, 322, 0, 323, 790, 0, 791, 324, 325, 326, - 0, 327, 1174, 0, 1175, 330, 0, 331, 332, 333, - 334, 335, 792, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 344, 345, 0, 346, 793, 347, 348, 349, - 350, 351, 1176, 1177, 0, 1178, 0, 355, 794, 795, - 356, 796, 357, 358, 359, 360, 361, 0, 0, 362, - 1179, 797, 364, 798, 0, 365, 366, 367, 1180, 1181, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 1182, 799, 1183, 386, - 387, 388, 0, 389, 390, 800, 391, 1185, 1186, 393, - 1187, 395, 396, 397, 0, 398, 0, 0, 399, 400, - 401, 0, 0, 402, 403, 801, 404, 802, 1189, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 414, - 415, 1190, 417, 418, 419, 420, 421, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 1191, 431, 432, 433, - 434, 0, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 0, 446, 447, 803, 448, 449, 450, - 2546, 452, 453, 454, 455, 456, 457, 458, 459, 0, - 460, 461, 462, 463, 464, 1193, 465, 466, 467, 468, - 469, 804, 470, 471, 1194, 473, 0, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 1195, 0, - 486, 487, 0, 488, 805, 489, 490, 491, 492, 493, - 0, 1196, 1197, 0, 0, 496, 497, 1198, 499, 1199, - 1200, 501, 502, 503, 504, 505, 506, 507, 0, 0, - 508, 509, 510, 511, 512, 1202, 0, 513, 514, 515, - 516, 517, 518, 1203, 0, 520, 806, 521, 522, 523, - 524, 0, 0, 525, 0, 0, 526, 527, 528, 529, - 530, 531, 532, 1204, 1205, 1206, 1207, 1208, 1209, 1210, - 1211, 541, 542, 543, 0, 0, 783, 1146, 601, 1147, - 1148, 0, 655, 1150, 0, 0, 0, 0, 0, 0, - 2549, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 1151, 0, 0, - 236, 237, 0, 238, 239, 784, 240, 241, 242, 243, - 1152, 785, 1153, 1154, 0, 3781, 248, 249, 250, 251, - 1155, 1156, 252, 253, 1157, 1158, 256, 0, 257, 258, - 259, 260, 1159, 0, 1160, 0, 262, 263, 264, 265, - 787, 266, 267, 268, 0, 269, 270, 271, 272, 273, - 274, 0, 788, 275, 276, 277, 1161, 1162, 1163, 1164, - 1165, 1166, 1167, 278, 279, 280, 281, 282, 283, 1168, - 1169, 286, 0, 287, 0, 288, 289, 290, 291, 292, - 293, 0, 294, 295, 296, 0, 0, 297, 298, 1004, - 300, 301, 0, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 311, 1170, 313, 314, 315, 1171, - 1172, 317, 0, 318, 319, 1173, 321, 0, 322, 0, - 323, 790, 0, 791, 324, 325, 326, 0, 327, 1174, - 0, 1175, 330, 0, 331, 332, 333, 334, 335, 792, - 336, 337, 338, 339, 0, 340, 341, 342, 343, 344, - 345, 0, 346, 793, 347, 348, 349, 350, 351, 1176, - 1177, 0, 1178, 0, 355, 794, 795, 356, 796, 357, - 358, 359, 360, 361, 0, 0, 362, 1179, 797, 364, - 798, 0, 365, 366, 367, 1180, 1181, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 1182, 799, 1183, 386, 387, 388, 0, - 389, 390, 800, 391, 1185, 1186, 393, 1187, 395, 396, - 397, 0, 398, 0, 0, 399, 400, 401, 0, 0, - 402, 403, 801, 404, 802, 1189, 406, 407, 408, 409, - 410, 411, 412, 413, 0, 0, 414, 415, 1190, 417, - 418, 419, 420, 421, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 1191, 431, 432, 433, 434, 0, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 0, 446, 447, 803, 448, 449, 450, 2546, 452, 453, - 454, 455, 456, 457, 458, 459, 0, 460, 461, 462, - 463, 464, 1193, 465, 466, 467, 468, 469, 804, 470, - 471, 1194, 473, 0, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 1195, 0, 486, 487, 0, - 488, 805, 489, 490, 491, 492, 493, 0, 1196, 1197, - 0, 0, 496, 497, 1198, 499, 1199, 1200, 501, 502, - 503, 504, 505, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 1202, 0, 513, 514, 515, 516, 517, 518, - 1203, 0, 520, 806, 521, 522, 523, 524, 0, 0, - 525, 0, 0, 526, 527, 528, 529, 530, 531, 532, - 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 541, 542, - 543, 0, 0, 783, 1146, 601, 1147, 1148, 1149, 655, - 1150, 0, 0, 0, 0, 0, 0, 2549, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 1151, 0, 0, 236, 237, 0, - 238, 239, 784, 240, 241, 242, 0, 1152, 785, 1153, - 1154, 0, 247, 248, 249, 250, 251, 1155, 1156, 252, - 253, 1157, 1158, 256, 0, 257, 258, 259, 260, 1159, - 0, 1160, 0, 262, 263, 264, 265, 787, 266, 267, - 268, 0, 269, 270, 271, 272, 273, 274, 0, 788, - 275, 276, 277, 1161, 1162, 1163, 1164, 1165, 1166, 1167, - 278, 279, 280, 281, 282, 283, 1168, 1169, 286, 0, - 287, 0, 288, 289, 290, 291, 292, 293, 0, 294, - 295, 296, 0, 0, 297, 298, 1004, 300, 301, 0, - 302, 303, 304, 0, 305, 0, 307, 0, 308, 309, - 310, 311, 1170, 313, 314, 315, 1171, 1172, 317, 0, - 318, 319, 1173, 321, 0, 322, 0, 323, 790, 0, - 791, 324, 325, 326, 0, 327, 1174, 0, 1175, 330, - 0, 331, 332, 333, 334, 335, 0, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 344, 345, 0, 346, - 793, 347, 348, 349, 350, 351, 1176, 1177, 0, 1178, - 0, 355, 0, 0, 356, 796, 357, 358, 359, 360, - 361, 0, 0, 362, 1179, 797, 364, 0, 0, 365, - 366, 367, 1180, 1181, 368, 369, 370, 371, 372, 373, + 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, + 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 825, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 804, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 1026, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, + 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 1076, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 2133, 259, 260, 261, 262, 263, 0, 0, 2210, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 2134, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 2211, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 2136, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 2212, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 2137, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 2138, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 2133, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 2134, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 2211, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 2136, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 3148, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 2137, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 2138, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 737, 231, 232, 696, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 697, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 738, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 1182, 799, 1183, 386, 387, 388, 1184, 389, 390, 0, - 391, 1185, 1186, 393, 1187, 395, 396, 397, 0, 398, - 0, 0, 1188, 400, 401, 0, 0, 402, 403, 801, - 404, 802, 1189, 406, 407, 408, 409, 410, 411, 412, - 413, 0, 0, 414, 415, 1190, 417, 418, 419, 420, - 421, 0, 422, 423, 424, 425, 426, 427, 428, 429, - 1191, 431, 432, 433, 434, 0, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 0, 446, 447, - 803, 448, 449, 450, 1192, 452, 453, 454, 455, 456, - 457, 458, 459, 0, 460, 461, 462, 463, 464, 1193, - 465, 466, 467, 468, 469, 0, 470, 471, 1194, 473, - 0, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 1195, 0, 486, 487, 0, 488, 805, 489, - 490, 491, 492, 493, 0, 1196, 1197, 0, 0, 496, - 497, 1198, 499, 1199, 1200, 501, 502, 503, 504, 505, - 506, 507, 0, 1201, 508, 509, 510, 511, 512, 1202, - 0, 513, 514, 515, 516, 517, 518, 1203, 0, 520, - 806, 521, 522, 523, 524, 0, 0, 525, 0, 0, - 526, 527, 528, 529, 530, 531, 532, 1204, 1205, 1206, - 1207, 1208, 1209, 1210, 1211, 541, 542, 543, 0, 0, - 783, 0, 0, 0, 0, 1213, 1214, 0, 0, 0, - 0, 0, 0, 0, 1216, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 1156, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 1159, 0, 1160, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 1161, 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 1171, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 1174, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 3303, 0, - 362, 1179, 797, 364, 798, 0, 365, 366, 367, 1180, - 1181, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 1186, - 393, 394, 395, 396, 397, 0, 398, 0, 747, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 1189, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 1190, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 3304, 453, 454, 455, 456, 457, 458, 459, - 40, 460, 461, 462, 463, 464, 1193, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 1195, - 0, 486, 487, 44, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 1198, 499, - 1199, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 1202, 0, 513, 514, - 515, 516, 517, 1077, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 49, 526, 527, 528, - 529, 530, 531, 532, 1204, 1205, 1206, 1207, 1208, 1209, - 1210, 1211, 541, 542, 543, 0, 0, 50, 783, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3305, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 784, 240, 241, - 242, 243, 244, 785, 245, 246, 0, 247, 248, 249, - 250, 251, 0, 1156, 252, 253, 254, 255, 256, 0, - 257, 258, 259, 260, 1159, 0, 1160, 0, 262, 263, - 264, 265, 787, 266, 267, 268, 0, 269, 270, 271, - 272, 273, 274, 0, 788, 275, 276, 277, 1161, 1162, - 1163, 1164, 1165, 1166, 1167, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 0, 287, 0, 288, 289, 290, - 291, 292, 293, 0, 294, 295, 296, 0, 0, 297, - 298, 299, 300, 301, 0, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 311, 312, 313, 314, - 315, 1171, 0, 317, 0, 318, 319, 320, 321, 0, - 322, 0, 323, 790, 0, 791, 324, 325, 326, 0, - 327, 1174, 0, 329, 330, 0, 331, 332, 333, 334, - 335, 792, 336, 337, 338, 339, 0, 340, 341, 342, - 343, 344, 345, 0, 346, 793, 347, 348, 349, 350, - 351, 352, 353, 0, 354, 0, 355, 794, 795, 356, - 796, 357, 358, 359, 360, 361, 3303, 0, 362, 1179, - 797, 364, 798, 0, 365, 366, 367, 1180, 1181, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 799, 385, 386, 387, - 388, 0, 389, 390, 800, 391, 0, 1186, 393, 394, - 395, 396, 397, 0, 398, 0, 747, 399, 400, 401, - 0, 0, 402, 403, 801, 404, 802, 1189, 406, 407, - 408, 409, 410, 411, 412, 413, 0, 0, 414, 415, - 1190, 417, 418, 419, 420, 421, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 0, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 0, 446, 447, 803, 448, 449, 450, 451, - 3304, 453, 454, 455, 456, 457, 458, 459, 0, 460, - 461, 462, 463, 464, 1193, 465, 466, 467, 468, 469, - 804, 470, 471, 472, 473, 0, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 1195, 0, 486, - 487, 0, 488, 805, 489, 490, 491, 492, 493, 0, - 494, 495, 0, 0, 496, 497, 1198, 499, 1199, 0, - 501, 502, 503, 504, 505, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 1202, 0, 513, 514, 515, 516, - 517, 518, 519, 0, 520, 806, 521, 522, 523, 524, - 0, 0, 525, 0, 0, 526, 527, 528, 529, 530, - 531, 532, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, - 541, 542, 543, 0, 0, 783, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3305, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 1156, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 1159, 0, 1160, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 1161, 1162, 1163, 1164, 1165, - 1166, 1167, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 1171, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 1174, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 1179, 797, 364, 798, - 0, 365, 366, 367, 1180, 1181, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 1186, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 1189, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 1190, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 3304, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 1193, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 1195, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 1198, 499, 1199, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 1202, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 1204, - 1205, 1206, 1207, 1208, 1209, 1210, 1211, 541, 542, 543, - 0, 0, 783, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 784, 240, 241, 242, 243, 244, 785, 245, 246, - 0, 247, 248, 249, 250, 251, 0, 1156, 252, 253, - 254, 255, 256, 0, 257, 258, 259, 260, 1159, 0, - 1160, 0, 262, 263, 264, 265, 787, 266, 267, 268, - 0, 269, 270, 271, 272, 273, 274, 0, 788, 275, - 276, 277, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 0, 287, - 0, 288, 289, 290, 291, 292, 293, 0, 294, 295, - 296, 0, 0, 297, 298, 299, 300, 301, 0, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 311, 312, 313, 314, 315, 1171, 0, 317, 0, 318, - 319, 320, 321, 0, 322, 0, 323, 790, 0, 791, - 324, 325, 326, 0, 327, 1174, 0, 329, 330, 0, - 331, 332, 333, 334, 335, 792, 336, 337, 338, 339, - 0, 340, 341, 342, 343, 344, 345, 0, 346, 793, - 347, 348, 349, 350, 351, 352, 353, 0, 354, 0, - 355, 794, 795, 356, 796, 357, 358, 359, 360, 361, - 0, 0, 362, 1179, 797, 364, 798, 0, 365, 366, - 367, 1180, 1181, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 799, 385, 386, 387, 388, 0, 389, 390, 800, 391, - 0, 1186, 393, 394, 395, 396, 397, 0, 398, 0, - 0, 399, 400, 401, 0, 0, 402, 403, 801, 404, - 802, 1189, 406, 407, 408, 409, 410, 411, 412, 413, - 0, 0, 414, 415, 1190, 417, 418, 419, 420, 421, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 0, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 0, 446, 447, 803, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 0, 460, 461, 462, 463, 464, 1193, 465, - 466, 467, 468, 469, 804, 470, 471, 472, 473, 0, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 1195, 0, 486, 487, 0, 488, 805, 489, 490, - 491, 492, 493, 0, 494, 495, 0, 0, 496, 497, - 1198, 499, 1199, 0, 501, 502, 503, 504, 505, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 1202, 0, - 513, 514, 515, 516, 517, 518, 519, 0, 520, 806, - 521, 522, 523, 524, 0, 0, 525, 0, 0, 526, - 527, 528, 529, 530, 531, 532, 1204, 1205, 1206, 1207, - 1208, 1209, 1210, 1211, 541, 542, 543, 0, 0, 827, - 1421, 601, 0, 0, 0, 655, 0, 0, 0, 0, - 0, 0, 0, 3905, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 784, 240, - 241, 242, 243, 244, 785, 245, 246, 0, 247, 248, - 249, 250, 251, 0, 0, 252, 253, 254, 255, 256, - 0, 257, 258, 259, 260, 261, 0, 786, 0, 262, - 263, 264, 265, 787, 266, 267, 268, 0, 269, 270, - 271, 272, 273, 274, 0, 788, 275, 276, 277, 0, - 0, 0, 789, 0, 0, 0, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 289, - 290, 291, 292, 293, 0, 294, 295, 296, 0, 0, - 297, 298, 299, 300, 301, 0, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 1690, 317, 0, 318, 319, 320, 321, - 0, 322, 0, 323, 790, 0, 791, 324, 325, 326, - 0, 327, 328, 0, 329, 330, 0, 331, 332, 333, - 334, 335, 792, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 344, 345, 0, 346, 793, 347, 348, 349, - 350, 351, 352, 353, 0, 354, 0, 355, 794, 795, - 356, 796, 357, 358, 359, 360, 361, 0, 0, 362, - 363, 797, 364, 798, 0, 365, 366, 367, 0, 0, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 799, 385, 386, - 387, 388, 0, 389, 390, 800, 391, 0, 392, 393, - 394, 395, 396, 397, 0, 398, 1691, 0, 399, 400, - 401, 0, 0, 402, 403, 801, 404, 802, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 0, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 0, 446, 447, 803, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 0, - 460, 461, 462, 463, 464, 0, 465, 466, 467, 468, - 469, 804, 470, 471, 472, 473, 0, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 0, - 486, 487, 0, 488, 805, 489, 490, 491, 492, 493, - 0, 494, 495, 0, 0, 496, 497, 498, 499, 500, - 1692, 501, 502, 503, 504, 505, 506, 507, 0, 0, - 508, 509, 510, 511, 512, 0, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 520, 806, 521, 522, 523, - 524, 0, 0, 525, 0, 0, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 542, 543, 0, 0, 827, 0, 0, 0, - 0, 667, 1422, 4702, 0, 0, 0, 0, 0, 0, - 4703, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 3, 4, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 784, 240, 241, 242, 243, - 244, 785, 245, 246, 0, 247, 248, 249, 250, 251, - 0, 0, 252, 253, 254, 255, 256, 0, 257, 258, - 259, 260, 261, 0, 786, 0, 262, 263, 264, 265, - 787, 266, 267, 268, 0, 269, 270, 271, 272, 273, - 274, 0, 788, 275, 276, 277, 0, 0, 0, 789, - 0, 0, 0, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 0, 287, 0, 288, 289, 290, 291, 292, - 293, 0, 294, 295, 296, 0, 0, 297, 298, 299, - 300, 301, 0, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 0, 317, 0, 318, 319, 320, 321, 0, 322, 0, - 323, 790, 0, 791, 324, 325, 326, 0, 327, 328, - 0, 329, 330, 0, 331, 332, 333, 334, 335, 792, - 336, 337, 338, 339, 0, 340, 341, 342, 343, 344, - 345, 0, 346, 793, 347, 348, 349, 350, 351, 352, - 353, 0, 354, 0, 355, 794, 795, 356, 796, 357, - 358, 359, 360, 361, 0, 0, 362, 363, 797, 364, - 798, 0, 365, 366, 367, 0, 0, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 799, 385, 386, 387, 388, 0, - 389, 390, 800, 391, 0, 392, 393, 394, 395, 396, - 397, 0, 398, 0, 0, 399, 400, 401, 0, 0, - 402, 403, 801, 404, 802, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 0, 0, 414, 415, 416, 417, - 418, 419, 420, 421, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 0, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 0, 446, 447, 803, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 40, 460, 461, 462, - 463, 464, 0, 465, 466, 467, 468, 469, 804, 470, - 471, 472, 473, 0, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 0, 486, 487, 44, - 488, 805, 489, 490, 491, 492, 493, 0, 494, 495, - 0, 0, 496, 497, 498, 499, 500, 0, 501, 502, - 503, 504, 505, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 0, 513, 514, 515, 516, 517, 1077, - 519, 0, 520, 806, 521, 522, 523, 524, 0, 0, - 525, 0, 49, 526, 527, 528, 529, 530, 531, 532, - 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 0, 0, 50, 783, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 784, 240, 241, 242, 243, 244, 785, - 245, 246, 0, 247, 248, 249, 250, 251, 0, 0, - 252, 253, 254, 255, 256, 0, 257, 258, 259, 260, - 261, 0, 786, 0, 262, 263, 264, 265, 787, 266, - 267, 268, 0, 269, 270, 271, 272, 273, 274, 0, - 788, 275, 276, 277, 0, 0, 0, 789, 0, 0, - 0, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 0, 287, 0, 288, 289, 290, 291, 292, 293, 0, - 294, 295, 296, 0, 0, 297, 298, 299, 300, 301, - 0, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 0, 317, - 0, 318, 319, 320, 321, 0, 322, 0, 323, 790, - 0, 791, 324, 325, 326, 0, 327, 328, 0, 329, - 330, 0, 331, 332, 333, 334, 335, 792, 336, 337, - 338, 339, 0, 340, 341, 342, 343, 344, 345, 0, - 346, 793, 347, 348, 349, 350, 351, 352, 353, 0, - 354, 0, 355, 794, 795, 356, 796, 357, 358, 359, - 360, 361, 0, 0, 362, 363, 797, 364, 798, 0, - 365, 366, 367, 0, 0, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 799, 385, 386, 387, 388, 0, 389, 390, - 800, 391, 0, 392, 393, 394, 395, 396, 397, 0, - 398, 0, 0, 399, 400, 401, 0, 0, 402, 403, - 801, 404, 802, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 0, 0, 414, 415, 416, 417, 418, 419, - 420, 421, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 0, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, - 447, 803, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 0, 460, 461, 462, 463, 464, - 0, 465, 466, 467, 468, 469, 804, 470, 471, 472, - 473, 0, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 0, 486, 487, 0, 488, 805, - 489, 490, 491, 492, 493, 0, 494, 495, 0, 0, - 496, 497, 498, 499, 500, 0, 501, 502, 503, 504, - 505, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 0, 513, 514, 515, 516, 517, 518, 519, 0, - 520, 806, 521, 522, 523, 524, 0, 0, 525, 0, - 0, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 0, - 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4519, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 0, 240, 241, 242, 243, 244, 0, 245, 246, 0, - 247, 248, 249, 250, 251, 0, 0, 252, 253, 254, - 255, 256, 0, 257, 258, 259, 260, 261, 0, 0, - 0, 262, 263, 264, 265, 0, 266, 267, 268, 0, - 269, 270, 271, 272, 273, 274, 0, 0, 275, 276, - 277, 0, 0, 0, 0, 0, 0, 0, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 289, 290, 291, 292, 293, 0, 294, 295, 296, - 0, 0, 297, 298, 299, 300, 301, 0, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 0, 317, 0, 318, 319, - 320, 321, 0, 322, 0, 323, 0, 0, 0, 324, - 325, 326, 0, 327, 328, 0, 329, 330, 0, 331, - 332, 333, 334, 335, 0, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 344, 345, 0, 346, 0, 347, - 348, 349, 350, 351, 352, 353, 0, 354, 0, 355, - 0, 0, 356, 0, 357, 358, 359, 360, 361, 0, - 0, 362, 363, 0, 364, 0, 0, 365, 366, 367, - 0, 0, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 0, - 385, 386, 387, 388, 0, 389, 390, 0, 391, 0, - 392, 393, 394, 395, 396, 397, 0, 398, 0, 0, - 399, 400, 401, 0, 0, 402, 403, 0, 404, 0, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 0, - 0, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 0, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 0, 446, 447, 0, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 40, 460, 461, 462, 463, 464, 0, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 0, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 0, 486, 487, 44, 488, 0, 489, 490, 491, - 492, 493, 0, 494, 495, 0, 0, 496, 497, 498, - 499, 500, 0, 501, 502, 503, 504, 505, 506, 507, - 0, 0, 508, 509, 510, 511, 512, 0, 0, 513, - 514, 515, 516, 517, 1077, 519, 0, 520, 0, 521, - 522, 523, 524, 0, 0, 525, 0, 49, 526, 527, - 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 542, 543, 0, 0, 50, 223, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 0, 240, - 241, 242, 243, 244, 0, 245, 246, 0, 247, 248, - 249, 250, 251, 0, 0, 252, 253, 254, 255, 256, - 0, 257, 258, 259, 260, 261, 0, 0, 0, 262, - 263, 264, 265, 0, 266, 267, 268, 0, 269, 270, - 271, 272, 273, 274, 0, 0, 275, 276, 277, 0, - 0, 0, 0, 0, 0, 0, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 289, - 290, 291, 292, 293, 0, 294, 295, 296, 0, 0, - 297, 298, 299, 300, 301, 0, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 0, 317, 0, 318, 319, 320, 321, - 0, 322, 0, 323, 0, 0, 0, 324, 325, 326, - 0, 327, 328, 0, 329, 330, 0, 331, 332, 333, - 334, 335, 0, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 344, 345, 0, 346, 0, 347, 348, 349, - 350, 351, 352, 353, 0, 354, 0, 355, 0, 0, - 356, 0, 357, 358, 359, 360, 361, 0, 0, 362, - 363, 0, 364, 0, 0, 365, 366, 367, 0, 0, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, - 387, 388, 0, 389, 390, 0, 391, 0, 392, 393, - 394, 395, 396, 397, 0, 398, 0, 0, 399, 400, - 401, 0, 0, 402, 403, 0, 404, 0, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 0, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 0, 446, 447, 0, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 0, - 460, 461, 462, 463, 464, 0, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 0, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 0, - 486, 487, 0, 488, 0, 489, 490, 491, 492, 493, - 0, 494, 495, 0, 0, 496, 497, 498, 499, 500, - 0, 501, 502, 503, 504, 505, 506, 507, 0, 0, - 508, 509, 510, 511, 512, 0, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 520, 0, 521, 522, 523, - 524, 0, 0, 525, 0, 0, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 542, 543, 0, 0, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1274, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 0, 240, 241, 242, 243, - 244, 0, 245, 246, 0, 247, 248, 249, 250, 251, - 0, 0, 252, 253, 254, 255, 256, 0, 257, 258, - 259, 260, 261, 0, 0, 0, 262, 263, 264, 265, - 0, 266, 267, 268, 0, 269, 270, 271, 272, 273, - 274, 0, 0, 275, 276, 277, 0, 0, 0, 0, - 0, 0, 0, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 0, 287, 0, 288, 289, 290, 291, 292, - 293, 0, 294, 295, 296, 0, 0, 297, 298, 299, - 300, 301, 0, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 0, 317, 0, 318, 319, 320, 321, 0, 322, 0, - 323, 0, 0, 0, 324, 325, 326, 0, 327, 328, - 0, 329, 330, 0, 331, 332, 333, 334, 335, 0, - 336, 337, 338, 339, 0, 340, 341, 342, 343, 344, - 345, 0, 346, 0, 347, 348, 349, 350, 351, 352, - 353, 0, 354, 0, 355, 0, 0, 356, 0, 357, - 358, 359, 360, 361, 0, 0, 362, 363, 0, 364, - 0, 0, 365, 366, 367, 0, 0, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 0, 385, 386, 387, 388, 0, - 389, 390, 0, 391, 0, 392, 393, 394, 395, 396, - 397, 0, 398, 0, 0, 399, 400, 401, 0, 0, - 402, 403, 0, 404, 0, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 0, 0, 414, 415, 416, 417, - 418, 419, 420, 421, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 0, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 0, 446, 447, 0, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 0, 460, 461, 462, - 463, 464, 0, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 0, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 0, 486, 487, 0, - 488, 0, 489, 490, 491, 492, 493, 0, 494, 495, - 0, 0, 496, 497, 498, 499, 500, 0, 501, 502, - 503, 504, 505, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 0, 513, 514, 515, 516, 517, 518, - 519, 0, 520, 0, 521, 522, 523, 524, 0, 0, - 525, 0, 0, 526, 527, 528, 529, 530, 531, 532, - 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 0, 0, 223, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2703, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 0, 240, 241, 242, 243, 244, 0, 245, - 246, 0, 247, 248, 249, 250, 251, 0, 0, 252, - 253, 254, 255, 256, 0, 257, 258, 259, 260, 261, - 0, 0, 0, 262, 263, 264, 265, 0, 266, 267, - 268, 0, 269, 270, 271, 272, 273, 274, 0, 0, - 275, 276, 277, 0, 0, 0, 0, 0, 0, 0, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 0, - 287, 0, 288, 289, 290, 291, 292, 293, 0, 294, - 295, 296, 0, 0, 297, 298, 299, 300, 301, 0, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 0, 317, 0, - 318, 319, 320, 321, 0, 322, 0, 323, 0, 0, - 0, 324, 325, 326, 0, 327, 328, 0, 329, 330, - 0, 331, 332, 333, 334, 335, 0, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 344, 345, 0, 346, - 0, 347, 348, 349, 350, 351, 352, 353, 0, 354, - 0, 355, 0, 0, 356, 0, 357, 358, 359, 360, - 361, 0, 0, 362, 363, 0, 364, 0, 0, 365, - 366, 367, 0, 0, 368, 369, 370, 371, 372, 373, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 698, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 699, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 696, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 697, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 2851, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 698, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 699, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 2133, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 2134, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 2211, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 2136, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 2137, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 2138, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 696, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 697, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 698, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 699, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 1792, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 1793, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 1794, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 1795, 327, 0, 0, 0, 1796, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 1797, 1798, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 1799, 466, 467, 468, 469, 470, 0, 1800, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 1801, 500, 0, 1802, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 1803, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 697, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 0, 385, 386, 387, 388, 0, 389, 390, 0, - 391, 0, 392, 393, 394, 395, 396, 397, 0, 398, - 0, 0, 399, 400, 401, 0, 0, 402, 403, 0, - 404, 0, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 0, 0, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 0, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 0, 446, 447, - 0, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 0, 460, 461, 462, 463, 464, 0, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 0, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 0, 486, 487, 0, 488, 0, 489, - 490, 491, 492, 493, 0, 494, 495, 0, 0, 496, - 497, 498, 499, 500, 0, 501, 502, 503, 504, 505, - 506, 507, 0, 0, 508, 509, 510, 511, 512, 0, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 520, - 0, 521, 522, 523, 524, 0, 0, 525, 0, 0, - 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 0, 0, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3816, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 0, 0, 0, 0, 0, - 996, 1421, 601, 0, 0, 841, 655, 0, 0, 0, - 0, 4224, 842, 843, 844, 224, 225, 226, 227, 228, - 229, 230, 231, 1878, 233, 234, 235, 1879, 1880, 1881, - 1882, 1883, 1884, 1885, 236, 237, 1886, 238, 239, 784, - 240, 241, 242, 0, 997, 785, 998, 999, 1887, 247, - 248, 249, 250, 251, 1888, 1889, 252, 253, 1000, 1001, - 256, 1890, 257, 258, 259, 260, 0, 1891, 786, 1892, - 262, 263, 264, 265, 787, 266, 267, 268, 1893, 269, - 270, 271, 272, 273, 274, 1894, 788, 275, 276, 277, - 1895, 1896, 1897, 789, 1898, 1899, 1900, 278, 279, 280, - 281, 282, 283, 1002, 1003, 286, 1901, 287, 1902, 288, - 289, 290, 291, 292, 293, 1903, 294, 295, 296, 1904, - 1905, 297, 298, 1004, 300, 301, 1906, 302, 303, 304, - 1907, 305, 306, 307, 1908, 308, 309, 310, 311, 0, - 313, 314, 315, 0, 1909, 317, 1910, 318, 319, 1005, - 321, 1911, 322, 1912, 323, 790, 1913, 791, 324, 325, - 326, 1914, 327, 0, 1915, 0, 330, 1916, 331, 332, - 333, 334, 335, 792, 336, 337, 338, 339, 1917, 340, - 341, 342, 343, 344, 345, 1918, 346, 793, 0, 348, - 349, 350, 351, 1007, 1008, 1919, 1009, 1920, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 1921, 1922, - 362, 0, 797, 364, 798, 1923, 365, 366, 367, 1924, - 1925, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 1010, 799, 1011, - 386, 387, 4313, 1926, 389, 390, 800, 391, 1927, 0, - 393, 1012, 395, 396, 397, 1928, 398, 1929, 1930, 3567, - 400, 401, 1931, 1932, 402, 0, 801, 404, 802, 0, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 1933, - 414, 415, 0, 417, 0, 419, 420, 421, 1934, 422, - 423, 424, 425, 426, 427, 428, 429, 1013, 431, 432, - 433, 434, 1935, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 1936, 446, 447, 803, 448, 449, - 450, 0, 452, 453, 454, 455, 456, 457, 458, 459, - 1937, 460, 461, 462, 463, 464, 1938, 465, 466, 2019, - 468, 469, 804, 470, 471, 1015, 473, 1939, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 0, - 1940, 486, 487, 1941, 488, 805, 489, 490, 491, 492, - 493, 1942, 1016, 1017, 1943, 1944, 496, 497, 0, 499, - 0, 1945, 501, 502, 503, 504, 505, 506, 507, 1946, - 1947, 508, 509, 510, 511, 512, 1948, 1949, 513, 514, - 515, 516, 517, 0, 1018, 1950, 520, 806, 521, 522, - 523, 524, 1951, 1952, 525, 1953, 1954, 526, 527, 528, - 529, 530, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 541, 542, 543, 0, 0, 0, 847, 848, - 849, 0, 3568, 3569, 852, 853, 854, 855, 996, 1421, - 601, 0, 0, 841, 655, 0, 0, 0, 0, 0, - 842, 843, 844, 224, 225, 226, 227, 228, 229, 230, - 231, 1878, 233, 234, 235, 1879, 1880, 1881, 1882, 1883, - 1884, 1885, 236, 237, 1886, 238, 239, 784, 240, 241, - 242, 0, 997, 785, 998, 999, 1887, 247, 248, 249, - 250, 251, 1888, 1889, 252, 253, 1000, 1001, 256, 1890, - 257, 258, 259, 260, 0, 1891, 786, 1892, 262, 263, - 264, 265, 787, 266, 267, 268, 1893, 269, 270, 271, - 272, 273, 274, 1894, 788, 275, 276, 277, 1895, 1896, - 1897, 789, 1898, 1899, 1900, 278, 279, 280, 281, 282, - 283, 1002, 1003, 286, 1901, 287, 1902, 288, 289, 290, - 291, 292, 293, 1903, 294, 295, 296, 1904, 1905, 297, - 298, 1004, 300, 301, 1906, 302, 303, 304, 1907, 305, - 306, 307, 1908, 308, 309, 310, 311, 0, 313, 314, - 315, 0, 1909, 317, 1910, 318, 319, 1005, 321, 1911, - 322, 1912, 323, 790, 1913, 791, 324, 325, 326, 1914, - 327, 0, 1915, 0, 330, 1916, 331, 332, 333, 334, - 335, 792, 336, 337, 338, 339, 1917, 340, 341, 342, - 343, 344, 345, 1918, 346, 793, 0, 348, 349, 350, - 351, 1007, 1008, 1919, 1009, 1920, 355, 794, 795, 356, - 796, 357, 358, 359, 360, 361, 1921, 1922, 362, 0, - 797, 364, 798, 1923, 365, 366, 367, 1924, 1925, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 1010, 799, 1011, 386, 387, - 0, 1926, 389, 390, 800, 391, 1927, 0, 393, 1012, - 395, 396, 397, 1928, 398, 1929, 1930, 3567, 400, 401, - 1931, 1932, 402, 0, 801, 404, 802, 0, 406, 407, - 408, 409, 410, 411, 412, 413, 0, 1933, 414, 415, - 0, 417, 0, 419, 420, 421, 1934, 422, 423, 424, - 425, 426, 427, 428, 429, 1013, 431, 432, 433, 434, - 1935, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 1936, 446, 447, 803, 448, 449, 450, 0, - 452, 453, 454, 455, 456, 457, 458, 459, 1937, 460, - 461, 462, 463, 464, 1938, 465, 466, 2019, 468, 469, - 804, 470, 471, 1015, 473, 1939, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 0, 1940, 486, - 487, 1941, 488, 805, 489, 490, 491, 492, 493, 1942, - 1016, 1017, 1943, 1944, 496, 497, 0, 499, 0, 1945, - 501, 502, 503, 504, 505, 506, 507, 1946, 1947, 508, - 509, 510, 511, 512, 1948, 1949, 513, 514, 515, 516, - 517, 0, 1018, 1950, 520, 806, 521, 522, 523, 524, - 1951, 1952, 525, 1953, 1954, 526, 527, 528, 529, 530, - 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 541, 542, 543, 0, 223, 0, 847, 848, 849, 841, - 3568, 3569, 852, 853, 854, 855, 842, 843, 844, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 0, 240, 241, 242, 243, 244, 0, - 245, 246, 0, 247, 248, 249, 250, 251, 0, 0, - 252, 253, 254, 255, 256, 0, 257, 845, 259, 260, - 261, 0, 0, 0, 262, 263, 264, 265, 0, 266, - 267, 268, 0, 269, 270, 271, 272, 273, 274, 0, - 0, 275, 276, 277, 0, 0, 0, 0, 0, 0, - 0, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 0, 287, 0, 288, 289, 290, 291, 292, 293, 0, - 294, 295, 296, 0, 0, 297, 298, 299, 300, 301, - 0, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 0, 846, - 0, 318, 319, 320, 321, 0, 322, 0, 323, 0, - 0, 0, 324, 325, 326, 0, 327, 328, 0, 329, - 330, 0, 331, 332, 333, 334, 335, 0, 336, 337, - 338, 339, 0, 340, 341, 342, 343, 344, 345, 0, - 346, 0, 347, 348, 349, 350, 351, 352, 353, 0, - 354, 0, 355, 0, 0, 356, 0, 357, 358, 359, - 360, 361, 0, 0, 362, 363, 0, 364, 0, 0, - 365, 366, 367, 0, 0, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 0, 385, 386, 387, 388, 0, 389, 390, - 0, 391, 0, 392, 393, 394, 395, 396, 397, 0, - 398, 0, 0, 399, 400, 401, 0, 0, 402, 403, - 0, 404, 0, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 0, 0, 414, 415, 416, 417, 418, 419, - 420, 421, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 0, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, - 447, 0, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 0, 460, 461, 462, 463, 464, - 0, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 0, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 0, 486, 487, 0, 488, 0, - 489, 490, 491, 492, 493, 0, 494, 495, 0, 0, - 496, 497, 498, 499, 500, 0, 501, 502, 503, 504, - 505, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 0, 513, 514, 515, 516, 517, 518, 519, 0, - 520, 0, 521, 522, 523, 524, 0, 0, 525, 0, - 0, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 0, - 223, 0, 847, 848, 849, 841, 850, 851, 852, 853, - 854, 855, 842, 843, 844, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 953, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 954, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 0, 223, 0, 847, 848, - 849, 841, 850, 851, 852, 853, 854, 855, 842, 843, - 844, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 0, 240, 241, 242, 243, - 244, 0, 245, 246, 0, 247, 248, 249, 250, 251, - 0, 0, 252, 253, 254, 255, 256, 0, 257, 1045, - 259, 260, 261, 0, 0, 0, 262, 263, 264, 265, - 0, 266, 267, 268, 0, 269, 270, 271, 272, 273, - 274, 0, 0, 275, 276, 277, 0, 0, 0, 0, - 0, 0, 0, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 0, 287, 0, 288, 289, 290, 291, 292, - 293, 0, 294, 295, 296, 0, 0, 297, 298, 299, - 300, 301, 0, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 0, 1046, 0, 318, 319, 320, 321, 0, 322, 0, - 323, 0, 0, 0, 324, 325, 326, 0, 327, 328, - 0, 329, 330, 0, 331, 332, 333, 334, 1047, 0, - 336, 337, 338, 339, 0, 340, 341, 342, 343, 344, - 345, 0, 346, 0, 347, 348, 349, 350, 351, 352, - 353, 0, 354, 0, 355, 0, 0, 356, 0, 357, - 358, 359, 360, 361, 0, 0, 362, 363, 0, 364, - 0, 0, 365, 366, 367, 0, 0, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 0, 385, 386, 387, 388, 0, - 389, 390, 0, 391, 0, 392, 393, 394, 395, 396, - 397, 0, 398, 0, 0, 399, 400, 401, 0, 0, - 402, 403, 0, 404, 0, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 0, 0, 414, 415, 416, 417, - 418, 419, 420, 421, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 0, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 0, 446, 447, 0, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 0, 460, 461, 462, - 463, 464, 0, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 0, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 0, 486, 487, 0, - 488, 0, 489, 490, 491, 492, 493, 0, 494, 495, - 0, 0, 496, 497, 498, 499, 500, 0, 501, 502, - 503, 504, 505, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 0, 513, 514, 515, 516, 517, 518, - 519, 0, 520, 0, 521, 522, 523, 524, 0, 0, - 525, 0, 0, 526, 527, 528, 529, 530, 531, 532, - 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 0, 223, 0, 847, 848, 849, 841, 850, 851, - 852, 853, 854, 855, 842, 843, 844, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 0, 240, 241, 242, 243, 244, 0, 245, 246, - 0, 247, 248, 249, 250, 251, 0, 0, 252, 253, - 254, 255, 256, 0, 257, 1519, 259, 260, 261, 0, - 0, 0, 262, 263, 264, 265, 0, 266, 267, 268, - 0, 269, 270, 271, 272, 273, 274, 0, 0, 275, - 276, 277, 0, 0, 0, 0, 0, 0, 0, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 0, 287, - 0, 288, 289, 290, 291, 292, 293, 0, 294, 295, - 296, 0, 0, 297, 298, 299, 300, 301, 0, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 0, 1520, 0, 318, - 319, 320, 321, 0, 322, 0, 323, 0, 0, 0, - 324, 325, 326, 0, 327, 328, 0, 329, 330, 0, - 331, 332, 333, 334, 335, 0, 336, 337, 338, 339, - 0, 340, 341, 342, 343, 344, 345, 0, 346, 0, - 347, 348, 349, 350, 351, 352, 353, 0, 354, 0, - 355, 0, 0, 356, 0, 357, 358, 359, 360, 361, - 0, 0, 362, 363, 0, 364, 0, 0, 365, 366, - 367, 0, 0, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 0, 385, 386, 387, 388, 0, 389, 390, 0, 391, - 0, 392, 393, 394, 395, 396, 397, 0, 398, 0, - 0, 399, 400, 401, 0, 0, 402, 403, 0, 404, - 0, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 0, 0, 414, 415, 416, 417, 418, 419, 420, 421, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 0, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 0, 460, 461, 462, 463, 464, 0, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 0, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 0, 486, 487, 0, 488, 0, 489, 490, - 491, 492, 493, 0, 494, 495, 0, 0, 496, 497, - 498, 499, 500, 0, 501, 502, 503, 504, 505, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 0, - 513, 514, 515, 516, 517, 518, 519, 0, 520, 0, - 521, 522, 523, 524, 0, 0, 525, 0, 0, 526, - 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 0, 223, 0, - 847, 848, 849, 841, 850, 851, 852, 853, 854, 855, - 842, 843, 844, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 0, 240, 241, - 242, 243, 244, 0, 245, 246, 0, 247, 248, 249, - 250, 251, 0, 0, 252, 253, 254, 255, 256, 0, - 257, 258, 259, 260, 261, 0, 0, 0, 262, 263, - 264, 265, 0, 266, 267, 268, 0, 269, 270, 271, - 272, 273, 274, 0, 0, 275, 276, 277, 0, 0, - 0, 0, 0, 0, 0, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 0, 287, 0, 288, 289, 290, - 291, 292, 293, 0, 294, 295, 296, 0, 0, 297, - 298, 299, 300, 301, 0, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 0, 317, 0, 318, 319, 320, 321, 0, - 322, 0, 323, 0, 0, 0, 324, 325, 326, 0, - 327, 328, 0, 329, 330, 0, 331, 332, 333, 334, - 335, 0, 336, 337, 338, 339, 0, 340, 341, 342, - 343, 344, 345, 0, 346, 0, 347, 348, 349, 350, - 351, 352, 353, 0, 354, 0, 355, 0, 0, 356, - 0, 357, 358, 359, 360, 361, 0, 0, 362, 363, - 0, 364, 0, 0, 365, 366, 367, 0, 0, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, - 388, 0, 389, 390, 0, 391, 0, 392, 393, 394, - 395, 396, 397, 0, 398, 0, 0, 399, 400, 401, - 0, 0, 402, 403, 0, 404, 0, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 0, 0, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 0, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 0, 446, 447, 0, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 0, 460, - 461, 462, 463, 464, 0, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 0, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 0, 486, - 487, 0, 488, 0, 489, 490, 491, 492, 493, 0, - 494, 495, 0, 0, 496, 497, 498, 499, 500, 0, - 501, 502, 503, 504, 505, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 0, 513, 514, 515, 516, - 517, 518, 519, 0, 520, 0, 521, 522, 523, 524, - 0, 0, 525, 0, 0, 526, 527, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, - 541, 542, 543, 0, 223, 0, 847, 848, 849, 841, - 850, 851, 852, 853, 854, 855, 842, 843, 844, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 0, 240, 241, 242, 243, 244, 0, - 245, 246, 0, 247, 248, 249, 250, 251, 0, 0, - 252, 253, 254, 255, 256, 0, 257, 2781, 259, 260, - 261, 0, 0, 0, 262, 263, 264, 265, 0, 266, - 267, 268, 0, 269, 270, 271, 272, 273, 274, 0, - 0, 275, 276, 277, 0, 0, 0, 0, 0, 0, - 0, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 0, 287, 0, 288, 289, 290, 291, 292, 293, 0, - 294, 295, 296, 0, 0, 297, 298, 299, 300, 301, - 0, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 0, 2782, - 0, 318, 319, 320, 321, 0, 322, 0, 323, 0, - 0, 0, 324, 325, 326, 0, 327, 328, 0, 329, - 330, 0, 331, 332, 333, 334, 335, 0, 336, 337, - 338, 339, 0, 340, 341, 342, 343, 344, 345, 0, - 346, 0, 347, 348, 349, 350, 351, 352, 353, 0, - 354, 0, 355, 0, 0, 356, 0, 357, 358, 359, - 360, 361, 0, 0, 362, 363, 0, 364, 0, 0, - 365, 366, 367, 0, 0, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 0, 385, 386, 387, 388, 0, 389, 390, - 0, 391, 0, 392, 393, 394, 395, 396, 397, 0, - 398, 0, 0, 399, 400, 401, 0, 0, 402, 403, - 0, 404, 0, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 0, 0, 414, 415, 416, 417, 418, 419, - 420, 421, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 0, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, - 447, 0, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 0, 460, 461, 462, 463, 464, - 0, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 0, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 0, 486, 487, 0, 488, 0, - 489, 490, 491, 492, 493, 0, 494, 495, 0, 0, - 496, 497, 498, 499, 500, 0, 501, 502, 503, 504, - 505, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 0, 513, 514, 515, 516, 517, 518, 519, 0, - 520, 0, 521, 522, 523, 524, 0, 0, 525, 0, - 0, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 0, - 223, 0, 847, 848, 849, 841, 850, 851, 852, 853, - 854, 855, 842, 843, 844, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 4499, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 1877, 0, 0, 847, 848, - 849, 0, 850, 851, 852, 853, 854, 855, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 1878, 233, - 234, 235, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 236, - 237, 1886, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 1887, 247, 248, 249, 250, 251, 1888, - 1889, 252, 253, 254, 255, 256, 1890, 257, 258, 259, - 260, 261, 1891, 786, 1892, 262, 263, 264, 265, 787, - 266, 267, 268, 1893, 269, 270, 271, 272, 273, 274, - 1894, 788, 275, 276, 277, 1895, 1896, 1897, 789, 1898, - 1899, 1900, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 1901, 287, 1902, 288, 289, 290, 291, 292, 293, - 1903, 294, 295, 296, 1904, 1905, 297, 298, 299, 300, - 301, 1906, 302, 303, 304, 1907, 305, 306, 307, 1908, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 1909, - 317, 1910, 318, 319, 320, 321, 1911, 322, 1912, 323, - 790, 1913, 791, 324, 325, 326, 1914, 327, 328, 1915, - 329, 330, 1916, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 1917, 340, 341, 342, 343, 344, 345, - 1918, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 1919, 354, 1920, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 1921, 1922, 362, 363, 797, 364, 798, - 1923, 365, 366, 367, 1924, 1925, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 1926, 389, - 390, 800, 391, 1927, 392, 393, 394, 395, 396, 397, - 1928, 398, 1929, 1930, 399, 400, 401, 1931, 1932, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 1933, 414, 415, 416, 417, 418, - 419, 420, 421, 1934, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 1935, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 1936, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 1937, 460, 461, 462, 463, - 464, 1938, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 1939, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 1940, 486, 487, 1941, 488, - 805, 489, 490, 491, 492, 493, 1942, 494, 495, 1943, - 1944, 496, 497, 498, 499, 500, 1945, 501, 502, 503, - 504, 505, 506, 507, 1946, 1947, 508, 509, 510, 511, - 512, 1948, 1949, 513, 514, 515, 516, 517, 518, 519, - 1950, 520, 806, 521, 522, 523, 524, 1951, 1952, 525, - 1953, 1954, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 1955, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 996, 0, 0, 0, 0, - 0, 0, 0, 0, 752, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 0, 997, - 785, 998, 999, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 1000, 1001, 256, 0, 257, 258, 259, - 260, 0, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 1002, 1003, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 1004, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 0, 313, 314, 315, 0, 0, - 317, 0, 318, 319, 1005, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 0, 0, - 0, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 2015, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 2016, 348, 349, 350, 351, 1007, 1008, - 0, 1009, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 0, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 1010, 799, 1011, 386, 387, 0, 0, 389, - 390, 800, 391, 0, 0, 393, 1012, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 2017, 402, - 2018, 801, 404, 802, 0, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 0, 417, 0, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 1013, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 0, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 2019, 468, 469, 804, 470, 471, - 1015, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 0, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 1016, 1017, 0, - 0, 496, 497, 0, 499, 0, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 0, 1018, - 2020, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 0, 0, - 0, 0, 0, 0, 0, 2288, 0, 541, 542, 543, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2021, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 0, 997, - 785, 998, 999, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 1000, 1001, 256, 0, 257, 258, 259, - 260, 0, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 1002, 1003, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 1004, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 0, 313, 314, 315, 0, 0, - 317, 0, 318, 319, 1005, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 0, 0, - 0, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 2015, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 2016, 348, 349, 350, 351, 1007, 1008, - 0, 1009, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 0, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 1010, 799, 1011, 386, 387, 0, 0, 389, - 390, 800, 391, 0, 0, 393, 1012, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 2017, 402, - 2018, 801, 404, 802, 0, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 0, 417, 0, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 1013, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 0, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 2019, 468, 469, 804, 470, 471, - 1015, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 0, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 1016, 1017, 0, - 0, 496, 497, 0, 499, 0, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 0, 1018, - 2020, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 0, 0, - 0, 0, 0, 0, 0, 223, 0, 541, 542, 543, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2021, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 827, 1421, 601, 0, 0, 0, 655, 0, 0, 4821, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 786, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 0, 0, 0, 789, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 1866, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 1690, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 797, 364, 798, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 1691, 0, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 1692, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 827, 1421, 601, 0, 0, - 0, 655, 667, 1422, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 1871, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 1690, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 1691, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 1692, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 827, 1421, 601, 0, 0, 0, 655, 667, 1422, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 786, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 0, 0, 0, 789, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 1690, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 797, 364, 798, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 1691, 0, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 1692, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 827, 0, 601, 0, 0, - 0, 655, 667, 1422, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 2736, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 1690, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 1691, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 1692, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 655, 667, 668, 0, - 0, 0, 0, 0, 0, 224, 656, 226, 227, 228, - 229, 230, 231, 657, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 658, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 659, 320, - 321, 0, 322, 0, 660, 0, 661, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 662, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 663, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 664, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 665, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 666, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 1877, 4943, 601, 0, 0, - 0, 655, 667, 668, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 1878, 233, - 234, 235, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 236, - 237, 1886, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 1887, 247, 248, 249, 250, 251, 1888, - 1889, 252, 253, 254, 255, 256, 1890, 257, 258, 259, - 260, 261, 1891, 786, 1892, 262, 263, 264, 265, 787, - 266, 267, 268, 1893, 269, 270, 271, 272, 273, 274, - 1894, 788, 275, 276, 277, 1895, 1896, 1897, 789, 1898, - 1899, 1900, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 1901, 287, 1902, 288, 289, 290, 291, 292, 293, - 1903, 294, 295, 296, 1904, 1905, 297, 298, 299, 300, - 301, 1906, 302, 303, 304, 1907, 305, 306, 307, 1908, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 1909, - 317, 1910, 318, 319, 320, 321, 1911, 322, 1912, 323, - 790, 1913, 791, 324, 325, 326, 1914, 327, 328, 1915, - 329, 330, 1916, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 1917, 340, 341, 342, 343, 344, 345, - 1918, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 1919, 354, 1920, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 1921, 1922, 362, 363, 797, 364, 798, - 1923, 365, 366, 367, 1924, 1925, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 1926, 389, - 390, 800, 391, 1927, 392, 393, 394, 395, 396, 397, - 1928, 398, 1929, 1930, 399, 400, 401, 1931, 1932, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 1933, 414, 415, 416, 417, 418, - 419, 420, 421, 1934, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 1935, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 1936, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 1937, 460, 461, 462, 463, - 464, 1938, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 1939, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 1940, 486, 487, 1941, 488, - 805, 489, 490, 491, 492, 493, 1942, 494, 495, 1943, - 1944, 496, 497, 498, 499, 500, 1945, 501, 502, 503, - 504, 505, 506, 507, 1946, 1947, 508, 509, 510, 511, - 512, 1948, 1949, 513, 514, 515, 516, 517, 518, 519, - 1950, 520, 806, 521, 522, 523, 524, 1951, 1952, 525, - 1953, 1954, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 1877, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 1878, 233, 234, 235, 1879, 1880, 1881, - 1882, 1883, 1884, 1885, 236, 237, 1886, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 1887, 247, - 248, 249, 250, 251, 1888, 1889, 252, 253, 254, 255, - 256, 1890, 257, 258, 259, 260, 261, 1891, 786, 1892, - 262, 263, 264, 265, 787, 266, 267, 268, 1893, 269, - 270, 271, 272, 273, 274, 1894, 788, 275, 276, 277, - 1895, 1896, 1897, 789, 1898, 1899, 1900, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 1901, 287, 1902, 288, - 289, 290, 291, 292, 293, 1903, 294, 295, 296, 1904, - 1905, 297, 298, 299, 300, 301, 1906, 302, 303, 304, - 1907, 305, 306, 307, 1908, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 1909, 317, 1910, 318, 319, 320, - 321, 1911, 322, 1912, 323, 790, 1913, 791, 324, 325, - 326, 1914, 327, 328, 1915, 329, 330, 1916, 331, 332, - 333, 334, 335, 792, 336, 337, 338, 339, 1917, 340, - 341, 342, 343, 344, 345, 1918, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 1919, 354, 1920, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 1921, 1922, - 362, 363, 797, 364, 798, 1923, 365, 366, 367, 1924, - 1925, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 1926, 389, 390, 800, 391, 1927, 392, - 393, 394, 395, 396, 397, 1928, 398, 1929, 1930, 399, - 400, 401, 1931, 1932, 402, 403, 801, 404, 802, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 1933, - 414, 415, 416, 417, 418, 419, 420, 421, 1934, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 1935, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 1936, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 1937, 460, 461, 462, 463, 464, 1938, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 1939, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 1940, 486, 487, 1941, 488, 805, 489, 490, 491, 492, - 493, 1942, 494, 495, 1943, 1944, 496, 497, 498, 499, - 500, 1945, 501, 502, 503, 504, 505, 506, 507, 1946, - 1947, 508, 509, 510, 511, 512, 1948, 1949, 513, 514, - 515, 516, 517, 518, 519, 1950, 520, 806, 521, 522, - 523, 524, 1951, 1952, 525, 1953, 1954, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 1877, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 2849, 229, 230, 231, 1878, 233, - 234, 235, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 236, - 237, 1886, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 1887, 247, 248, 249, 250, 251, 1888, - 1889, 252, 253, 254, 255, 256, 1890, 257, 258, 259, - 260, 261, 1891, 786, 1892, 262, 263, 264, 265, 787, - 266, 267, 268, 1893, 269, 270, 271, 272, 273, 274, - 1894, 788, 275, 276, 277, 1895, 1896, 1897, 789, 1898, - 1899, 1900, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 1901, 287, 1902, 288, 289, 290, 291, 292, 293, - 1903, 294, 295, 296, 1904, 1905, 297, 298, 299, 2850, - 301, 1906, 302, 303, 304, 1907, 305, 306, 307, 1908, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 1909, - 317, 1910, 318, 319, 320, 321, 1911, 322, 1912, 323, - 790, 1913, 791, 324, 325, 326, 1914, 327, 328, 1915, - 329, 330, 1916, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 1917, 340, 341, 342, 343, 344, 345, - 1918, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 1919, 354, 1920, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 1921, 1922, 362, 363, 797, 364, 798, - 1923, 365, 366, 367, 1924, 1925, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 1926, 389, - 390, 800, 391, 1927, 392, 393, 394, 395, 396, 397, - 1928, 398, 1929, 1930, 399, 400, 401, 1931, 1932, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 1933, 414, 415, 416, 417, 418, - 419, 420, 421, 1934, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 1935, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 1936, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 1937, 460, 461, 462, 463, - 464, 1938, 2851, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 1939, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 1940, 486, 487, 1941, 488, - 805, 489, 490, 491, 492, 493, 1942, 494, 495, 1943, - 1944, 496, 497, 498, 499, 500, 1945, 501, 502, 503, - 504, 505, 506, 507, 1946, 1947, 508, 509, 510, 511, - 512, 1948, 1949, 513, 514, 515, 516, 517, 518, 519, - 1950, 520, 806, 521, 522, 523, 524, 1951, 1952, 525, - 1953, 1954, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 783, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 1156, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 1159, 0, 1160, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 1161, 1162, 1163, 1164, 1165, 1166, 1167, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 1171, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 1174, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 0, 0, - 362, 1179, 797, 364, 798, 0, 365, 366, 367, 1180, - 1181, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 1186, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 1189, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 1190, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 1193, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 1195, - 0, 486, 487, 0, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 1198, 499, - 1199, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 1202, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 1204, 1205, 1206, 1207, 1208, 1209, - 1210, 1211, 541, 542, 543, 827, 0, 601, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 1690, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 1691, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 1692, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 827, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 862, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 786, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 0, 0, 0, 789, 0, 0, 828, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 797, 364, 798, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 829, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 827, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 828, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 829, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 2244, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 827, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 786, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 0, 0, 0, 789, 0, 0, 828, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 328, 3152, 329, 330, 0, 331, 332, - 333, 334, 335, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 797, 364, 798, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 829, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 827, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 828, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 829, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 827, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 786, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 0, 0, 0, 789, 0, 0, 828, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 797, 364, 798, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 879, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 829, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 827, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 828, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 967, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 829, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 827, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 786, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 0, 0, 0, 789, 0, 0, 828, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 1040, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 797, 364, 798, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 829, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 827, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 828, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 1052, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 829, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 827, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 786, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 0, 0, 0, 789, 0, 0, 828, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 1066, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 797, 364, 798, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 1067, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 829, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 827, 0, 601, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 1851, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 827, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 3, 4, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 786, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 0, 0, 0, 789, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 797, 364, 798, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 827, 0, 601, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 827, 0, 601, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 786, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 0, 0, 0, 789, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 1680, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 797, 364, 798, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 783, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 783, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 784, - 240, 241, 242, 243, 244, 785, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 786, 0, - 262, 263, 264, 265, 787, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 788, 275, 276, 277, - 0, 0, 0, 789, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 790, 0, 791, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 989, 792, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 793, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 794, - 795, 356, 796, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 797, 364, 798, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 799, 385, - 386, 387, 388, 0, 389, 390, 800, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 801, 404, 802, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 803, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 804, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 805, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 806, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 783, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 243, 244, - 785, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 1038, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 799, 385, 386, 387, 388, 0, 389, - 390, 800, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 801, 404, 802, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 804, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 2057, 257, 258, 259, 260, 261, 0, 0, 2133, - 262, 263, 264, 265, 0, 266, 267, 268, 2058, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 2134, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 2060, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 2135, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 2061, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 2062, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 2057, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 2058, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 2134, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 2060, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 3017, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 2061, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 2062, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 715, 230, 231, 674, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 675, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 716, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 676, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 677, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 674, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 675, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 2743, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 676, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 677, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 2057, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 2058, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 2134, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 2060, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 2061, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 2062, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 674, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 675, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 676, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 677, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 1717, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 1718, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 1719, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 1720, 323, 0, 0, 0, 1721, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 1722, 1723, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 1724, 456, 457, 458, 459, - 0, 1725, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 1726, 488, 0, 1727, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 1728, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 675, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 676, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 677, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 872, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 873, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 747, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 3, 4, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 2830, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 2831, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 2843, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 2844, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 592, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 593, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 707, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 708, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 709, 495, 0, 0, 710, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 741, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 742, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 743, 495, 0, - 0, 744, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 747, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 836, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 837, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 981, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 707, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 1120, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 1249, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 1260, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 727, 253, 254, 255, - 1261, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 730, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 731, 449, - 450, 451, 452, 453, 454, 732, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 1253, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 734, 495, 0, 0, 735, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 736, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 1370, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 747, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 1425, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 1426, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 2633, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 2634, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 2635, 488, - 0, 489, 2636, 491, 2637, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 2638, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 601, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 3835, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 3849, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 693, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 705, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 727, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 728, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 729, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 730, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 731, 449, - 450, 451, 452, 453, 454, 732, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 733, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 734, 495, 0, 0, 735, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 736, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 759, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 860, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 867, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 882, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 943, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 959, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 994, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 1050, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 1054, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 1056, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 1058, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 1062, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 1070, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 727, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 730, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 731, 449, - 450, 451, 452, 453, 454, 732, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 1253, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 734, 495, 0, 0, 735, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 736, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 1549, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 1579, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 1581, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 1651, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 1653, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 1655, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 1751, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 2012, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 0, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 727, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 730, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 731, 449, 450, 451, 452, 453, 454, - 732, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 1253, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 2044, 490, 491, 492, 493, 0, 734, 495, 0, - 0, 735, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 736, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 727, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 730, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 731, 449, - 450, 451, 452, 453, 454, 2118, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 2119, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 734, 495, 0, 0, 2120, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 736, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 2356, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 2360, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 2400, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 2435, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 2754, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 727, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 335, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 730, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 731, 449, - 450, 451, 452, 453, 454, 732, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 2119, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 734, 495, 0, 0, 2120, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 736, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 2820, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 2833, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 2835, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 2950, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 0, 240, 241, 242, 243, 244, - 0, 245, 246, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 254, 255, 256, 0, 257, 258, 259, - 260, 261, 0, 0, 0, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 0, 275, 276, 277, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 2972, 299, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 317, 0, 318, 319, 320, 321, 0, 322, 0, 323, - 0, 0, 0, 324, 325, 326, 0, 327, 328, 0, - 329, 330, 0, 331, 332, 333, 334, 335, 0, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 0, 347, 348, 349, 350, 351, 352, 353, - 0, 354, 0, 355, 0, 0, 356, 0, 357, 358, - 359, 360, 361, 0, 0, 362, 363, 0, 364, 0, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 0, 385, 386, 387, 388, 0, 389, - 390, 0, 391, 0, 392, 393, 394, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 403, 0, 404, 0, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 0, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 0, 486, 487, 0, 488, - 0, 489, 490, 491, 492, 493, 0, 494, 495, 0, - 0, 496, 497, 498, 499, 500, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 520, 0, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 0, 245, 246, 0, 247, - 248, 249, 250, 251, 0, 0, 252, 253, 254, 255, - 256, 0, 257, 258, 259, 260, 261, 0, 0, 0, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 0, 0, 275, 276, 277, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 289, 290, 291, 292, 293, 0, 294, 295, 296, 0, - 0, 297, 298, 299, 300, 301, 0, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 317, 0, 318, 319, 320, - 321, 0, 322, 0, 323, 0, 0, 0, 324, 325, - 326, 0, 327, 328, 0, 329, 330, 0, 331, 332, - 333, 334, 4084, 0, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 344, 345, 0, 346, 0, 347, 348, - 349, 350, 351, 352, 353, 0, 354, 0, 355, 0, - 0, 356, 0, 357, 358, 359, 360, 361, 0, 0, - 362, 363, 0, 364, 0, 0, 365, 366, 367, 0, - 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, - 386, 387, 388, 0, 389, 390, 0, 391, 0, 392, - 393, 394, 395, 396, 397, 0, 398, 0, 0, 399, - 400, 401, 0, 0, 402, 403, 0, 404, 0, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 0, 446, 447, 0, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 0, 460, 461, 462, 463, 464, 0, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 0, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 0, 486, 487, 0, 488, 0, 489, 490, 491, 492, - 493, 0, 494, 495, 0, 0, 496, 497, 498, 499, - 500, 0, 501, 502, 503, 504, 505, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 520, 0, 521, 522, - 523, 524, 0, 0, 525, 0, 0, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 996, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 0, 997, - 785, 998, 999, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 1000, 1001, 256, 0, 257, 258, 259, - 260, 0, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 1002, 1003, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 1004, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 0, 313, 314, 315, 0, 0, - 317, 0, 318, 319, 1005, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 0, 0, - 0, 330, 0, 331, 332, 333, 334, 335, 792, 336, - 337, 338, 339, 2015, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 2016, 348, 349, 350, 351, 1007, 1008, - 0, 1009, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 0, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 1010, 799, 1011, 386, 387, 0, 0, 389, - 390, 800, 391, 0, 0, 393, 1012, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 2018, 801, 404, 802, 0, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 0, 417, 0, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 1013, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 0, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 2019, 468, 469, 804, 470, 471, - 1015, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 0, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 1016, 1017, 0, - 0, 496, 497, 0, 499, 0, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 0, 1018, - 2020, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 996, 0, - 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 784, 240, 241, - 242, 0, 997, 785, 998, 999, 0, 247, 248, 249, - 250, 251, 0, 0, 252, 253, 1000, 1001, 256, 0, - 257, 258, 259, 260, 0, 0, 786, 0, 262, 263, - 264, 265, 787, 266, 267, 268, 0, 269, 270, 271, - 272, 273, 274, 0, 788, 275, 276, 277, 0, 0, - 0, 789, 0, 0, 0, 278, 279, 280, 281, 282, - 283, 1002, 1003, 286, 0, 287, 0, 288, 289, 290, - 291, 292, 293, 0, 294, 295, 296, 0, 0, 297, - 298, 1004, 300, 301, 0, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 311, 0, 313, 314, - 315, 0, 0, 317, 0, 318, 319, 1005, 321, 0, - 322, 0, 323, 790, 0, 791, 324, 325, 326, 0, - 327, 0, 0, 0, 330, 0, 331, 332, 333, 334, - 335, 792, 336, 337, 338, 339, 0, 340, 341, 342, - 343, 344, 345, 0, 346, 793, 0, 348, 349, 350, - 351, 1007, 1008, 0, 1009, 0, 355, 794, 795, 356, - 796, 357, 358, 359, 360, 361, 0, 0, 362, 0, - 797, 364, 798, 0, 365, 366, 367, 0, 0, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 1010, 799, 1011, 386, 387, - 0, 0, 389, 390, 800, 391, 2114, 0, 393, 1012, - 395, 396, 397, 0, 398, 0, 0, 399, 400, 401, - 0, 0, 402, 0, 801, 404, 802, 0, 406, 407, - 408, 409, 410, 411, 412, 413, 0, 0, 414, 415, - 0, 417, 0, 419, 420, 421, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 1013, 431, 432, 433, 434, - 0, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 0, 446, 447, 803, 448, 449, 450, 0, - 452, 453, 454, 455, 456, 457, 458, 459, 0, 460, - 461, 462, 463, 464, 0, 465, 466, 2019, 468, 469, - 804, 470, 471, 1015, 473, 0, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 0, 0, 486, - 487, 3668, 488, 805, 489, 490, 491, 492, 493, 0, - 1016, 1017, 0, 0, 496, 497, 0, 499, 0, 0, - 501, 502, 503, 504, 505, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 0, 513, 514, 515, 516, - 517, 0, 1018, 0, 520, 806, 521, 522, 523, 524, - 0, 0, 525, 0, 0, 526, 527, 528, 529, 530, - 531, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 541, 542, 543, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 0, 240, 241, 242, 243, 244, 0, 245, 246, 0, - 247, 248, 249, 250, 251, 0, 0, 252, 253, 254, - 255, 256, 0, 257, 258, 259, 260, 261, 0, 0, - 0, 262, 263, 264, 265, 0, 266, 267, 268, 0, - 269, 270, 271, 272, 273, 274, 0, 0, 275, 276, - 277, 0, 0, 0, 0, 0, 0, 0, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 289, 290, 291, 292, 293, 0, 294, 295, 296, - 0, 0, 297, 298, 299, 300, 301, 0, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 0, 317, 0, 318, 319, - 320, 321, 0, 322, 0, 323, 0, 0, 0, 324, - 325, 326, 0, 327, 328, 0, 329, 330, 0, 331, - 332, 333, 334, 335, 0, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 344, 345, 0, 346, 0, 347, - 348, 349, 350, 351, 352, 353, 0, 354, 0, 355, - 0, 0, 356, 0, 357, 358, 359, 360, 361, 0, - 0, 362, 363, 0, 364, 0, 0, 365, 366, 367, - 0, 0, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 0, - 385, 386, 387, 388, 0, 389, 390, 0, 391, 0, - 392, 393, 394, 395, 396, 397, 0, 398, 0, 0, - 399, 400, 401, 0, 0, 402, 403, 0, 404, 0, - 405, 406, 407, 408, 409, 410, 0, 412, 413, 0, - 0, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 422, 423, 424, 425, 426, 427, 0, 429, 430, 431, - 432, 433, 434, 0, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 0, 446, 447, 0, 448, - 449, 450, 451, 0, 453, 454, 455, 456, 457, 458, - 459, 0, 460, 461, 462, 463, 464, 0, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 0, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 0, 486, 487, 0, 488, 0, 489, 490, 491, - 492, 493, 0, 494, 495, 0, 0, 496, 497, 498, - 499, 500, 0, 501, 502, 503, 504, 505, 506, 507, - 0, 0, 508, 509, 510, 511, 512, 0, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 520, 0, 521, - 522, 523, 524, 0, 0, 525, 0, 0, 526, 527, - 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 542, 543, 996, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 784, 240, 241, 242, 0, - 997, 785, 998, 999, 0, 247, 248, 249, 250, 251, - 0, 0, 252, 253, 1000, 1001, 256, 0, 257, 258, - 259, 260, 0, 0, 786, 0, 262, 263, 264, 265, - 787, 266, 267, 268, 0, 269, 270, 271, 272, 273, - 274, 0, 788, 275, 276, 277, 0, 0, 0, 789, - 0, 0, 0, 278, 279, 280, 281, 282, 283, 1002, - 1003, 286, 0, 287, 0, 288, 289, 290, 291, 292, - 293, 0, 294, 295, 296, 0, 0, 297, 298, 1004, - 300, 301, 0, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 311, 0, 313, 314, 315, 0, - 0, 317, 0, 318, 319, 1005, 321, 0, 322, 0, - 323, 790, 0, 791, 324, 325, 326, 0, 327, 0, - 0, 0, 330, 0, 331, 332, 333, 334, 335, 792, - 336, 337, 338, 339, 0, 340, 341, 342, 343, 344, - 345, 0, 346, 793, 0, 348, 349, 350, 351, 1007, - 1008, 0, 1009, 0, 355, 794, 795, 356, 796, 357, - 358, 359, 360, 361, 0, 0, 362, 0, 797, 364, - 798, 0, 365, 366, 367, 0, 0, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 1010, 799, 1011, 386, 387, 2184, 0, - 389, 390, 800, 391, 0, 0, 393, 1012, 395, 396, - 397, 0, 398, 0, 0, 399, 400, 401, 0, 0, - 402, 0, 801, 404, 802, 0, 406, 407, 408, 409, - 410, 411, 412, 413, 0, 0, 414, 415, 0, 417, - 0, 419, 420, 421, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 1013, 431, 432, 433, 434, 0, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 0, 446, 447, 803, 448, 449, 450, 0, 452, 453, - 454, 455, 456, 457, 458, 459, 0, 460, 461, 462, - 463, 464, 0, 465, 466, 1014, 468, 469, 804, 470, - 471, 1015, 473, 0, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 0, 0, 486, 487, 0, - 488, 805, 489, 490, 491, 492, 493, 0, 1016, 1017, - 0, 0, 496, 497, 0, 499, 0, 0, 501, 502, - 503, 504, 505, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 0, 513, 514, 515, 516, 517, 0, - 1018, 0, 520, 806, 521, 522, 523, 524, 0, 0, - 525, 0, 0, 526, 527, 528, 529, 530, 531, 996, - 0, 0, 0, 0, 0, 0, 0, 0, 541, 542, - 543, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 784, 240, - 241, 242, 0, 997, 785, 998, 999, 0, 247, 248, - 249, 250, 251, 0, 0, 252, 253, 1000, 1001, 256, - 0, 257, 258, 259, 260, 0, 0, 786, 0, 262, - 263, 264, 265, 787, 266, 267, 268, 0, 269, 270, - 271, 272, 273, 274, 0, 788, 275, 276, 277, 0, - 0, 0, 789, 0, 0, 0, 278, 279, 280, 281, - 282, 283, 1002, 1003, 286, 0, 287, 0, 288, 289, - 290, 291, 292, 293, 0, 294, 295, 296, 0, 0, - 297, 298, 1004, 300, 301, 0, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 311, 0, 313, - 314, 315, 0, 0, 317, 0, 318, 319, 1005, 321, - 0, 322, 0, 323, 790, 0, 791, 324, 325, 326, - 0, 327, 0, 0, 0, 330, 0, 331, 332, 333, - 334, 335, 792, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 344, 345, 0, 346, 793, 0, 348, 349, - 350, 351, 1007, 1008, 0, 1009, 0, 355, 794, 795, - 356, 796, 357, 358, 359, 360, 361, 0, 0, 362, - 0, 797, 364, 798, 0, 365, 366, 367, 0, 0, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 1010, 799, 1011, 386, - 387, 3488, 0, 389, 390, 800, 391, 0, 0, 393, - 1012, 395, 396, 397, 0, 398, 0, 0, 399, 400, - 401, 0, 0, 402, 0, 801, 404, 802, 0, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 414, - 415, 0, 417, 0, 419, 420, 421, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 1013, 431, 432, 433, - 434, 0, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 0, 446, 447, 803, 448, 449, 450, - 0, 452, 453, 454, 455, 456, 457, 458, 459, 0, - 460, 461, 462, 463, 464, 0, 465, 466, 1014, 468, - 469, 804, 470, 471, 1015, 473, 0, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 0, 0, - 486, 487, 0, 488, 805, 489, 490, 491, 492, 493, - 0, 1016, 1017, 0, 0, 496, 497, 0, 499, 0, - 0, 501, 502, 503, 504, 505, 506, 507, 0, 0, - 508, 509, 510, 511, 512, 0, 0, 513, 514, 515, - 516, 517, 0, 1018, 0, 520, 806, 521, 522, 523, - 524, 0, 0, 525, 0, 0, 526, 527, 528, 529, - 530, 531, 996, 0, 0, 0, 0, 0, 0, 0, - 0, 541, 542, 543, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 784, 240, 241, 242, 0, 997, 785, 998, 999, - 0, 247, 248, 249, 250, 251, 0, 0, 252, 253, - 1000, 1001, 256, 0, 257, 258, 259, 260, 0, 0, - 786, 0, 262, 263, 264, 265, 787, 266, 267, 268, - 0, 269, 270, 271, 272, 273, 274, 0, 788, 275, - 276, 277, 0, 0, 0, 789, 0, 0, 0, 278, - 279, 280, 281, 282, 283, 1002, 1003, 286, 0, 287, - 0, 288, 289, 290, 291, 292, 293, 0, 294, 295, - 296, 0, 0, 297, 298, 1004, 300, 301, 0, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 311, 0, 313, 314, 315, 0, 0, 317, 0, 318, - 319, 1005, 321, 0, 322, 0, 323, 790, 0, 791, - 324, 325, 326, 0, 327, 0, 0, 0, 330, 0, - 331, 332, 333, 334, 1006, 792, 336, 337, 338, 339, - 0, 340, 341, 342, 343, 344, 345, 0, 346, 793, - 0, 348, 349, 350, 351, 1007, 1008, 0, 1009, 0, - 355, 794, 795, 356, 796, 357, 358, 359, 360, 361, - 0, 0, 362, 0, 797, 364, 798, 0, 365, 366, - 367, 0, 0, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 1010, - 799, 1011, 386, 387, 0, 0, 389, 390, 800, 391, - 0, 0, 393, 1012, 395, 396, 397, 0, 398, 0, - 0, 399, 400, 401, 0, 0, 402, 0, 801, 404, - 802, 0, 406, 407, 408, 409, 410, 411, 412, 413, - 0, 0, 414, 415, 0, 417, 0, 419, 420, 421, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 1013, - 431, 432, 433, 434, 0, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 0, 446, 447, 803, - 448, 449, 450, 0, 452, 453, 454, 455, 456, 457, - 458, 459, 0, 460, 461, 462, 463, 464, 0, 465, - 466, 1014, 468, 469, 804, 470, 471, 1015, 473, 0, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 0, 0, 486, 487, 0, 488, 805, 489, 490, - 491, 492, 493, 0, 1016, 1017, 0, 0, 496, 497, - 0, 499, 0, 0, 501, 502, 503, 504, 505, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 0, - 513, 514, 515, 516, 517, 0, 1018, 0, 520, 806, - 521, 522, 523, 524, 0, 0, 525, 0, 0, 526, - 527, 528, 529, 530, 531, 996, 0, 0, 0, 0, - 0, 0, 0, 0, 541, 542, 543, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 784, 240, 241, 242, 0, 997, - 785, 998, 999, 0, 247, 248, 249, 250, 251, 0, - 0, 252, 253, 1000, 1001, 256, 0, 257, 258, 259, - 260, 0, 0, 786, 0, 262, 263, 264, 265, 787, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 0, 788, 275, 276, 277, 0, 0, 0, 789, 0, - 0, 0, 278, 279, 280, 281, 282, 283, 1002, 1003, - 286, 0, 287, 0, 288, 289, 290, 291, 292, 293, - 0, 294, 295, 296, 0, 0, 297, 298, 1004, 300, - 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 311, 0, 313, 314, 315, 0, 0, - 317, 0, 318, 319, 1005, 321, 0, 322, 0, 323, - 790, 0, 791, 324, 325, 326, 0, 327, 0, 0, - 0, 330, 0, 331, 332, 333, 334, 1064, 792, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 344, 345, - 0, 346, 793, 0, 348, 349, 350, 351, 1007, 1008, - 0, 1009, 0, 355, 794, 795, 356, 796, 357, 358, - 359, 360, 361, 0, 0, 362, 0, 797, 364, 798, - 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 1010, 799, 1011, 386, 387, 0, 0, 389, - 390, 800, 391, 0, 0, 393, 1012, 395, 396, 397, - 0, 398, 0, 0, 399, 400, 401, 0, 0, 402, - 0, 801, 404, 802, 0, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 414, 415, 0, 417, 0, - 419, 420, 421, 0, 422, 423, 424, 425, 426, 427, - 428, 429, 1013, 431, 432, 433, 434, 0, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, - 446, 447, 803, 448, 449, 450, 0, 452, 453, 454, - 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, - 464, 0, 465, 466, 1014, 468, 469, 804, 470, 471, - 1015, 473, 0, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 0, 0, 486, 487, 0, 488, - 805, 489, 490, 491, 492, 493, 0, 1016, 1017, 0, - 0, 496, 497, 0, 499, 0, 0, 501, 502, 503, - 504, 505, 506, 507, 0, 0, 508, 509, 510, 511, - 512, 0, 0, 513, 514, 515, 516, 517, 0, 1018, - 0, 520, 806, 521, 522, 523, 524, 0, 0, 525, - 0, 0, 526, 527, 528, 529, 530, 531, 996, 0, - 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 784, 240, 241, - 242, 0, 997, 785, 998, 999, 0, 247, 248, 249, - 250, 251, 0, 0, 252, 253, 1000, 1001, 256, 0, - 257, 258, 259, 260, 0, 0, 786, 0, 262, 263, - 264, 265, 787, 266, 267, 268, 0, 269, 270, 271, - 272, 273, 274, 0, 788, 275, 276, 277, 0, 0, - 0, 789, 0, 0, 0, 278, 279, 280, 281, 282, - 283, 1002, 1003, 286, 0, 287, 0, 288, 289, 290, - 291, 292, 293, 0, 294, 295, 296, 0, 0, 297, - 298, 1004, 300, 301, 0, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 311, 0, 313, 314, - 315, 0, 0, 317, 0, 318, 319, 1005, 321, 0, - 322, 0, 323, 790, 0, 791, 324, 325, 326, 0, - 327, 0, 0, 0, 330, 0, 331, 332, 333, 334, - 335, 792, 336, 337, 338, 339, 0, 340, 341, 342, - 343, 344, 345, 0, 346, 793, 0, 348, 349, 350, - 351, 1007, 1008, 0, 1009, 0, 355, 794, 795, 356, - 796, 357, 358, 359, 360, 361, 0, 0, 362, 0, - 797, 364, 798, 0, 365, 366, 367, 0, 0, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 1010, 799, 1011, 386, 387, - 0, 0, 389, 390, 800, 391, 0, 0, 393, 1012, - 395, 396, 397, 0, 398, 0, 0, 399, 400, 401, - 0, 0, 402, 0, 801, 404, 802, 0, 406, 407, - 408, 409, 410, 411, 412, 413, 0, 0, 414, 415, - 0, 417, 0, 419, 420, 421, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 1013, 431, 432, 433, 434, - 0, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 0, 446, 447, 803, 448, 449, 450, 0, - 452, 453, 454, 455, 456, 457, 458, 459, 0, 460, - 461, 462, 463, 464, 0, 465, 466, 1014, 468, 469, - 804, 470, 471, 1015, 473, 0, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 0, 0, 486, - 487, 0, 488, 805, 489, 490, 491, 492, 493, 0, - 1016, 1017, 0, 0, 496, 497, 0, 499, 0, 0, - 501, 502, 503, 504, 505, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 0, 513, 514, 515, 516, - 517, 0, 1018, 0, 520, 806, 521, 522, 523, 524, - 0, 0, 525, 0, 0, 526, 527, 528, 529, 530, - 531, 996, 0, 0, 0, 0, 0, 0, 0, 0, - 541, 542, 543, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 784, 240, 241, 242, 0, 997, 785, 998, 999, 0, - 247, 248, 249, 250, 251, 0, 0, 252, 253, 1000, - 1001, 256, 0, 257, 258, 259, 260, 0, 0, 786, - 0, 262, 263, 264, 265, 787, 266, 267, 268, 0, - 269, 270, 271, 272, 273, 274, 0, 788, 275, 276, - 277, 0, 0, 0, 789, 0, 0, 0, 278, 279, - 280, 281, 282, 283, 1002, 1003, 286, 0, 287, 0, - 288, 289, 290, 291, 292, 293, 0, 294, 295, 296, - 0, 0, 297, 298, 1004, 300, 301, 0, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 311, - 0, 313, 314, 315, 0, 0, 317, 0, 318, 319, - 1005, 321, 0, 322, 0, 323, 790, 0, 791, 324, - 325, 326, 0, 327, 0, 0, 0, 330, 0, 331, - 332, 333, 334, 335, 792, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 344, 345, 0, 346, 793, 0, - 348, 349, 350, 351, 1007, 1008, 0, 1009, 0, 355, - 794, 795, 356, 796, 357, 358, 359, 360, 361, 0, - 0, 362, 0, 797, 364, 798, 0, 365, 366, 367, - 0, 0, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 1010, 799, - 1011, 386, 387, 0, 0, 389, 390, 800, 391, 0, - 0, 393, 1012, 395, 396, 397, 0, 398, 0, 0, - 399, 400, 401, 0, 0, 402, 0, 801, 404, 802, - 0, 406, 407, 408, 409, 410, 411, 412, 413, 0, - 0, 414, 415, 0, 417, 0, 419, 420, 421, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 1013, 431, - 432, 433, 434, 0, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 0, 446, 447, 803, 448, - 449, 450, 0, 452, 453, 454, 455, 456, 457, 458, - 459, 0, 460, 461, 462, 463, 464, 0, 465, 466, - 2019, 468, 469, 804, 470, 471, 1015, 473, 0, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 0, 0, 486, 487, 0, 488, 805, 489, 490, 491, - 492, 493, 0, 1016, 1017, 0, 0, 496, 497, 0, - 499, 0, 0, 501, 502, 503, 504, 505, 506, 507, - 0, 0, 508, 509, 510, 511, 512, 0, 0, 513, - 514, 515, 516, 517, 0, 1018, 0, 520, 806, 521, - 522, 523, 524, 0, 0, 525, 0, 0, 526, 527, - 528, 529, 530, 531, 996, 0, 0, 0, 0, 0, - 0, 0, 0, 541, 542, 543, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 784, 240, 241, 242, 0, 997, 785, - 998, 999, 0, 247, 248, 249, 250, 251, 0, 0, - 252, 253, 1000, 1001, 256, 0, 257, 258, 259, 260, - 0, 0, 786, 0, 262, 263, 264, 265, 787, 266, - 267, 268, 0, 269, 270, 271, 272, 273, 274, 0, - 788, 275, 276, 277, 0, 0, 0, 789, 0, 0, - 0, 278, 279, 280, 281, 282, 283, 1002, 1003, 286, - 0, 287, 0, 288, 289, 290, 291, 292, 293, 0, - 294, 295, 296, 0, 0, 297, 298, 1004, 300, 301, - 0, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 311, 0, 313, 314, 315, 0, 0, 317, - 0, 318, 319, 1005, 321, 0, 322, 0, 323, 790, - 0, 791, 324, 325, 326, 0, 327, 0, 0, 0, - 330, 0, 331, 332, 333, 334, 335, 792, 336, 337, - 338, 339, 0, 340, 341, 342, 343, 344, 345, 0, - 346, 793, 0, 348, 349, 350, 351, 1007, 1008, 0, - 1009, 0, 355, 794, 795, 356, 796, 357, 358, 359, - 360, 361, 0, 0, 362, 0, 797, 364, 798, 0, - 365, 366, 367, 0, 0, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 1010, 799, 1011, 386, 387, 0, 0, 389, 390, - 800, 391, 0, 0, 393, 1012, 395, 396, 397, 0, - 398, 0, 0, 399, 400, 401, 0, 0, 402, 0, - 801, 404, 802, 0, 406, 407, 408, 409, 410, 411, - 412, 413, 0, 0, 414, 415, 0, 417, 0, 419, - 420, 421, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 1013, 431, 432, 433, 434, 0, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, - 447, 803, 448, 449, 450, 0, 452, 453, 454, 455, - 456, 457, 458, 459, 0, 460, 461, 462, 463, 464, - 0, 465, 466, 0, 468, 469, 804, 470, 471, 1015, - 473, 0, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 0, 0, 486, 487, 0, 488, 805, - 489, 490, 491, 492, 493, 0, 1016, 1017, 0, 0, - 496, 497, 0, 499, 0, 0, 501, 502, 503, 504, - 505, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 0, 513, 514, 515, 516, 517, 0, 1018, 0, - 520, 806, 521, 522, 523, 524, 0, 0, 525, 0, - 0, 526, 527, 528, 529, 530, 531, 996, 0, 0, - 0, 0, 0, 0, 0, 0, 541, 542, 543, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 784, 240, 241, 242, - 0, 0, 785, 0, 0, 0, 247, 248, 249, 250, - 251, 0, 0, 252, 253, 0, 0, 256, 0, 257, - 258, 259, 260, 0, 0, 786, 0, 262, 263, 264, - 265, 787, 266, 267, 268, 0, 269, 270, 271, 272, - 273, 274, 0, 788, 275, 276, 277, 0, 0, 0, - 789, 0, 0, 0, 278, 279, 280, 281, 282, 283, - 0, 0, 286, 0, 287, 0, 288, 289, 290, 291, - 292, 293, 0, 294, 295, 296, 0, 0, 297, 298, - 299, 300, 301, 0, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 311, 0, 313, 314, 315, - 0, 0, 317, 0, 318, 319, 0, 321, 0, 322, - 0, 323, 790, 0, 791, 324, 325, 326, 0, 327, - 0, 0, 0, 330, 0, 331, 332, 333, 334, 335, - 792, 336, 337, 338, 339, 0, 340, 341, 342, 343, - 344, 345, 0, 346, 793, 0, 348, 349, 350, 351, - 0, 0, 0, 0, 0, 355, 794, 795, 356, 796, - 357, 358, 359, 360, 361, 0, 0, 362, 0, 797, - 364, 798, 0, 365, 366, 367, 0, 0, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 0, 799, 0, 386, 387, 0, - 0, 389, 390, 800, 391, 0, 0, 393, 0, 395, - 396, 397, 0, 398, 0, 0, 399, 400, 401, 0, - 0, 402, 0, 801, 404, 802, 0, 406, 407, 408, - 409, 410, 411, 412, 413, 0, 0, 414, 415, 0, - 417, 0, 419, 420, 421, 0, 422, 423, 424, 425, - 426, 427, 428, 429, 0, 431, 432, 433, 434, 0, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 0, 446, 447, 803, 448, 449, 450, 0, 452, - 453, 454, 455, 456, 457, 458, 459, 0, 460, 461, - 462, 463, 464, 0, 465, 466, 0, 468, 469, 804, - 470, 471, 0, 473, 0, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 0, 0, 486, 487, - 0, 488, 805, 489, 490, 491, 492, 493, 0, 0, - 0, 0, 0, 496, 497, 0, 499, 0, 0, 501, - 502, 503, 504, 505, 506, 507, 0, 0, 508, 509, - 510, 511, 512, 0, 0, 513, 514, 515, 516, 517, - 0, 0, 0, 520, 806, 521, 522, 523, 524, 0, - 0, 525, 0, 0, 526, 527, 528, 529, 530, 531, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, - 542, 543 + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 698, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 699, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 898, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 899, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 769, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 3, 4, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 2939, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 2940, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 2952, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 2953, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 609, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 610, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 729, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 730, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 731, 507, 0, 0, 732, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 763, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 764, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 765, 507, 0, 0, 766, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 769, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 858, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 859, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 1018, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 729, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 1159, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 1289, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 1300, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 749, 255, 256, 257, 1301, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 752, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 753, 459, 460, 461, 462, 463, 464, 754, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 1293, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 756, 507, 0, + 0, 757, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 758, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 1412, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 769, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 1469, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 1470, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 2742, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 2743, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 2744, 500, 0, 501, 2745, 503, 2746, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 2747, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 618, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 3970, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 3984, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 715, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 727, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 749, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 750, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 751, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 752, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 753, 459, 460, 461, 462, 463, 464, 754, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 755, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 756, 507, 0, + 0, 757, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 758, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 780, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 883, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 891, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 909, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 969, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 975, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 992, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 995, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 997, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 1032, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 1092, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 1094, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 1104, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 1107, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 1110, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 749, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 752, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 753, + 459, 460, 461, 462, 463, 464, 754, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 1293, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 756, 507, 0, 0, 757, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 758, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 1617, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 1655, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 1657, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 1727, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 1729, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 1731, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 1826, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 2086, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 0, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 749, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 752, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 753, 459, 460, 461, 462, 463, 464, 754, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 1293, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 2120, 502, 503, 504, 505, 0, 756, 507, 0, + 0, 757, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 758, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 749, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 752, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 753, + 459, 460, 461, 462, 463, 464, 2195, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 2196, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 756, 507, 0, 0, 2197, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 758, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 2469, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 2473, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 2542, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 2862, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 749, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 752, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 753, + 459, 460, 461, 462, 463, 464, 754, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 2196, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 756, 507, 0, 0, 2197, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 758, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 2929, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 2942, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 2944, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 3079, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 3104, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 4249, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 1034, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 1038, 1039, 258, + 0, 259, 260, 261, 262, 0, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 1040, 1041, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 1042, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 0, 317, 318, 319, 0, 0, 321, 0, 322, 323, + 1043, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 0, 0, 0, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 2093, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 2094, 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 0, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 1048, + 820, 1049, 391, 392, 393, 0, 0, 395, 396, 821, + 397, 0, 0, 399, 1050, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 2096, + 822, 411, 823, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 0, 425, 0, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 1051, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 0, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 2097, 479, 480, + 825, 481, 482, 1053, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 0, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 1054, 1055, 0, 0, 508, 509, 0, 511, 0, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 0, 1056, 2098, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 555, 556, 557, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 0, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 0, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 1034, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 0, 1035, 806, 1036, 1037, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 1038, + 1039, 258, 0, 259, 260, 261, 262, 0, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 1040, 1041, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 0, 317, 318, 319, 0, 0, 321, 0, + 322, 323, 1043, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 0, 0, 0, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 0, 353, 354, 355, 356, 1045, 1046, 0, + 1047, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 0, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1048, 820, 1049, 391, 392, 393, 0, 0, 395, + 396, 821, 397, 2191, 0, 399, 1050, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 0, 822, 411, 823, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 0, + 425, 0, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1051, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 0, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 2097, + 479, 480, 825, 481, 482, 1053, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 0, 0, 498, 499, 3810, 500, 826, 501, 502, 503, + 504, 505, 0, 1054, 1055, 0, 0, 508, 509, 0, + 511, 0, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 0, 1056, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 1034, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 555, 556, 557, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 0, 1035, + 806, 1036, 1037, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 1038, 1039, 258, 0, 259, 260, 261, + 262, 0, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 1040, + 1041, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 1042, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 0, 317, 318, 319, + 0, 0, 321, 0, 322, 323, 1043, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 0, 0, 0, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 0, 353, 354, 355, + 356, 1045, 1046, 0, 1047, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 0, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 1048, 820, 1049, 391, 392, + 393, 2262, 0, 395, 396, 821, 397, 0, 0, 399, + 1050, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 0, 822, 411, 823, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 0, 425, 0, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 1051, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 0, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 1052, 479, 480, 825, 481, 482, 1053, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 0, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 1054, 1055, 0, + 0, 508, 509, 0, 511, 0, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 0, 1056, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 1034, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 555, + 556, 557, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 1038, 1039, 258, + 0, 259, 260, 261, 262, 0, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 1040, 1041, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 1042, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 0, 317, 318, 319, 0, 0, 321, 0, 322, 323, + 1043, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 0, 0, 0, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 0, 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 0, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 1048, + 820, 1049, 391, 392, 393, 3625, 0, 395, 396, 821, + 397, 0, 0, 399, 1050, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 0, + 822, 411, 823, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 0, 425, 0, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 1051, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 0, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 1052, 479, 480, + 825, 481, 482, 1053, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 0, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 1054, 1055, 0, 0, 508, 509, 0, 511, 0, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 0, 1056, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 1034, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 555, 556, 557, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 0, 1035, 806, 1036, + 1037, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 1038, 1039, 258, 0, 259, 260, 261, 262, 0, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 1040, 1041, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 1042, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 0, 317, 318, 319, 0, 0, + 321, 0, 322, 323, 1043, 325, 5141, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 0, + 0, 0, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 0, 353, 354, 355, 356, 1045, + 1046, 0, 1047, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 0, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 1048, 820, 1049, 391, 392, 393, 0, + 0, 395, 396, 821, 397, 0, 0, 399, 1050, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 0, 822, 411, 823, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 0, 425, 0, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 1051, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 0, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 1052, 479, 480, 825, 481, 482, 1053, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 0, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 1054, 1055, 0, 0, 508, + 509, 0, 511, 0, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 0, 1056, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 1034, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 555, 556, 557, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 0, 1035, 806, 1036, 1037, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 1038, 1039, 258, 0, 259, + 260, 261, 262, 0, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 1040, 1041, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 0, 317, + 318, 319, 0, 0, 321, 0, 322, 323, 1043, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 0, 0, 0, 335, 0, 336, 337, + 338, 339, 1044, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 0, 353, + 354, 355, 356, 1045, 1046, 0, 1047, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 0, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1048, 820, 1049, + 391, 392, 393, 0, 0, 395, 396, 821, 397, 0, + 0, 399, 1050, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 0, 822, 411, + 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 0, 425, 0, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1051, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 1052, 479, 480, 825, 481, + 482, 1053, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 0, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1054, + 1055, 0, 0, 508, 509, 0, 511, 0, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 0, 1056, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 1034, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 555, 556, 557, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 0, 1035, 806, 1036, 1037, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 1038, + 1039, 258, 0, 259, 260, 261, 262, 0, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 1040, 1041, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 0, 317, 318, 319, 0, 0, 321, 0, + 322, 323, 1043, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 0, 0, 0, + 335, 0, 336, 337, 338, 339, 1098, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 0, 353, 354, 355, 356, 1045, 1046, 0, + 1047, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 0, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1048, 820, 1049, 391, 392, 393, 0, 0, 395, + 396, 821, 397, 0, 0, 399, 1050, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 0, 822, 411, 823, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 0, + 425, 0, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1051, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 0, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 1052, + 479, 480, 825, 481, 482, 1053, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 0, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 1054, 1055, 0, 0, 508, 509, 0, + 511, 0, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 0, 1056, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 1034, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 555, 556, 557, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 0, 1035, + 806, 1036, 1037, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 1038, 1039, 258, 0, 259, 260, 261, + 262, 0, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 1040, + 1041, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 1042, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 0, 317, 318, 319, + 0, 0, 321, 0, 322, 323, 1043, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 0, 0, 0, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 0, 353, 354, 355, + 356, 1045, 1046, 0, 1047, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 0, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 1048, 820, 1049, 391, 392, + 393, 0, 0, 395, 396, 821, 397, 0, 0, 399, + 1050, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 0, 822, 411, 823, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 0, 425, 0, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 1051, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 0, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 1052, 479, 480, 825, 481, 482, 1053, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 0, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 1054, 1055, 0, + 0, 508, 509, 0, 511, 0, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 0, 1056, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 1034, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 555, + 556, 557, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 1038, 1039, 258, + 0, 259, 260, 261, 262, 0, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 1040, 1041, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 1042, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 0, 317, 318, 319, 0, 0, 321, 0, 322, 323, + 1043, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 0, 0, 0, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 0, 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 0, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 1048, + 820, 1049, 391, 392, 393, 0, 0, 395, 396, 821, + 397, 0, 0, 399, 1050, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 0, + 822, 411, 823, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 0, 425, 0, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 1051, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 0, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 2097, 479, 480, + 825, 481, 482, 1053, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 0, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 1054, 1055, 0, 0, 508, 509, 0, 511, 0, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 0, 1056, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 1034, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 555, 556, 557, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 0, 1035, 806, 1036, + 1037, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 1038, 1039, 258, 0, 259, 260, 261, 262, 0, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 1040, 1041, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 1042, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 0, 317, 318, 319, 0, 0, + 321, 0, 322, 323, 1043, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 0, + 0, 0, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 0, 353, 354, 355, 356, 1045, + 1046, 0, 1047, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 0, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 1048, 820, 1049, 391, 392, 393, 0, + 0, 395, 396, 821, 397, 0, 0, 399, 1050, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 0, 822, 411, 823, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 0, 425, 0, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 1051, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 0, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 0, 479, 480, 825, 481, 482, 1053, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 0, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 1054, 1055, 0, 0, 508, + 509, 0, 511, 0, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 0, 1056, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 1034, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 555, 556, 557, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 0, 0, 806, 0, 0, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 0, 0, 258, 0, 259, + 260, 261, 262, 0, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 0, 0, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 0, 317, + 318, 319, 0, 0, 321, 0, 322, 323, 0, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 0, 0, 0, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 0, 353, + 354, 355, 356, 0, 0, 0, 0, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 0, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 0, 820, 0, + 391, 392, 393, 0, 0, 395, 396, 821, 397, 0, + 0, 399, 0, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 0, 822, 411, + 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 0, 425, 0, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 0, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 0, 479, 480, 825, 481, + 482, 0, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 0, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 0, + 0, 0, 0, 508, 509, 0, 511, 0, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 0, 0, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 4809, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 555, 556, 557, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 0, 0, 0, 0, 0, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 0, + 0, 258, 0, 259, 260, 261, 262, 0, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 0, 0, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 0, 317, 318, 319, 0, 0, 321, 0, + 322, 323, 0, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 0, 0, 0, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 0, 353, 354, 355, 356, 0, 0, 0, + 0, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 0, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 0, 0, 0, 391, 392, 393, 0, 0, 395, + 396, 0, 397, 0, 0, 399, 0, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 0, 0, 411, 0, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 0, + 425, 0, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 0, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 0, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 0, + 479, 480, 0, 481, 482, 0, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 0, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 0, 0, 0, 0, 508, 509, 0, + 511, 0, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 0, 0, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 555, 556, 557 }; +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-4583))) + +#define yytable_value_is_error(Yytable_value) \ + (!!((Yytable_value) == (-2568))) + static const yytype_int16 yycheck[] = { - 16, 0, 0, 0, 0, 0, 0, 36, 51, 25, - 1039, 205, 572, 602, 21, 1103, 1081, 728, 777, 782, - 27, 839, 20, 7, 20, 1048, 675, 676, 677, 21, - 14, 726, 681, 881, 1043, 27, 1721, 1356, 808, 183, - 1297, 201, 1399, 45, 1014, 1278, 955, 869, 208, 1280, - 890, 2654, 1033, 51, 643, 2306, 1842, 966, 1393, 219, - 12, 621, 1002, 1003, 935, 751, 1505, 2824, 1404, 1139, - 44, 602, 1012, 1017, 735, 208, 2491, 3015, 563, 3042, - 1399, 2315, 2797, 22, 3084, 2849, 219, 2851, 1576, 17, - 1458, 1757, 940, 2235, 3060, 3341, 944, 36, 1329, 1415, - 1333, 949, 3384, 20, 1302, 2023, 2024, 1970, 3071, 3384, - 958, 2467, 0, 868, 2646, 2703, 868, 3004, 3437, 990, - 968, 3277, 874, 642, 2183, 3657, 2273, 612, 2644, 2645, - 170, 883, 3380, 1469, 2281, 1845, 2283, 191, 3646, 3669, - 3660, 3593, 731, 2997, 185, 3647, 200, 3305, 1740, 1588, - 3004, 634, 1801, 185, 35, 2577, 0, 0, 1474, 1475, - 0, 42, 0, 3311, 0, 1385, 0, 50, 0, 0, - 1333, 624, 0, 0, 0, 0, 4104, 41, 2711, 3910, - 825, 881, 635, 4224, 3058, 4226, 3357, 185, 4281, 3310, - 1678, 774, 774, 9, 3240, 1073, 1000, 1001, 9, 4398, - 731, 11, 11, 4262, 84, 0, 5, 1011, 0, 48, - 0, 41, 62, 0, 13, 14, 70, 35, 55, 22, - 4323, 4324, 55, 20, 39, 26, 4319, 5, 1168, 1169, - 40, 29, 103, 55, 109, 2642, 55, 2023, 4587, 154, - 214, 41, 5, 5, 165, 5, 5, 1187, 0, 26, - 2309, 160, 0, 1197, 13, 14, 33, 9, 26, 141, - 70, 9, 200, 1081, 5, 33, 39, 46, 5, 26, - 181, 76, 2547, 2548, 26, 5, 33, 2552, 26, 5, - 55, 5, 5, 5, 933, 192, 193, 2709, 2695, 196, - 5, 198, 159, 5, 5, 169, 162, 5, 13, 14, - 62, 159, 159, 111, 159, 259, 1539, 4, 2642, 55, - 159, 218, 9, 184, 2589, 2590, 5, 5, 9, 160, - 81, 109, 72, 4347, 127, 78, 256, 260, 27, 5, - 293, 81, 4503, 4504, 2799, 247, 129, 159, 1216, 261, - 5, 68, 109, 140, 38, 5, 324, 81, 48, 109, - 2409, 911, 2411, 1157, 1158, 111, 3, 102, 134, 341, - 4857, 2695, 303, 11, 159, 340, 119, 159, 321, 159, - 244, 5, 159, 310, 62, 109, 111, 377, 572, 1183, - 266, 328, 151, 30, 31, 400, 181, 159, 379, 181, - 11, 181, 40, 109, 181, 419, 4745, 176, 410, 159, - 100, 3735, 181, 3737, 2089, 298, 21, 159, 11, 419, - 570, 159, 27, 88, 260, 575, 440, 72, 72, 40, - 26, 113, 70, 4464, 4517, 1265, 586, 621, 156, 181, - 440, 422, 325, 181, 458, 315, 277, 570, 217, 454, - 377, 210, 575, 443, 160, 1263, 399, 1217, 204, 70, - 1268, 1269, 72, 586, 1348, 72, 456, 328, 246, 72, - 4388, 1718, 4959, 3915, 81, 1722, 29, 1724, 4, 335, - 1727, 412, 454, 9, 3, 1245, 454, 11, 116, 316, - 1069, 456, 283, 316, 251, 179, 398, 1516, 102, 164, - 246, 454, 1081, 193, 365, 366, 195, 316, 1521, 244, - 454, 367, 424, 114, 558, 346, 328, 454, 114, 201, - 251, 158, 246, 160, 251, 313, 251, 102, 102, 377, - 458, 454, 298, 276, 454, 1756, 324, 324, 326, 251, - 404, 247, 259, 415, 335, 4559, 552, 458, 1069, 454, - 328, 316, 102, 299, 244, 454, 343, 458, 363, 3014, - 1312, 80, 4901, 607, 1143, 1373, 555, 555, 555, 555, - 555, 555, 251, 617, 1083, 1383, 345, 1798, 443, 370, - 316, 372, 458, 350, 208, 405, 1809, 377, 458, 357, - 358, 3468, 350, 454, 382, 390, 602, 603, 194, 411, - 363, 458, 4695, 350, 402, 398, 1049, 4105, 452, 454, - 643, 458, 456, 132, 454, 377, 1454, 647, 1456, 458, - 4669, 4063, 1143, 1844, 3468, 454, 377, 377, 371, 1371, - 4791, 458, 415, 551, 1712, 458, 1535, 377, 1446, 329, - 3387, 1449, 1450, 777, 445, 446, 454, 453, 1509, 458, - 450, 450, 1464, 454, 642, 643, 642, 3803, 1542, 656, - 4849, 658, 3615, 660, 561, 454, 1109, 186, 565, 666, - 667, 668, 457, 1503, 656, 457, 658, 457, 660, 4121, - 457, 1260, 1125, 1682, 666, 1427, 583, 693, 454, 1268, - 1269, 3839, 3830, 443, 400, 3843, 670, 1140, 2747, 641, - 3656, 454, 454, 445, 446, 454, 456, 445, 446, 1517, - 3638, 3747, 458, 719, 1644, 457, 4799, 1019, 3829, 457, - 1719, 727, 458, 687, 730, 731, 732, 911, 4811, 1728, - 3891, 409, 377, 377, 454, 766, 643, 333, 454, 1260, - 454, 454, 1610, 409, 766, 4776, 1436, 1320, 1320, 454, - 452, 1441, 454, 454, 456, 1057, 454, 1392, 445, 446, - 313, 280, 366, 1065, 445, 446, 421, 377, 102, 1071, - 377, 421, 400, 410, 377, 4496, 454, 2103, 766, 768, - 768, 768, 768, 768, 768, 440, 2133, 751, 454, 4265, - 440, 366, 366, 22, 3, 4, 5, 398, 4881, 454, - 9, 114, 398, 3325, 454, 102, 2714, 169, 2716, 447, - 448, 449, 450, 3037, 2037, 4257, 366, 781, 55, 690, - 691, 692, 4264, 1617, 1618, 4149, 266, 113, 4746, 4153, - 4154, 3578, 4156, 2970, 445, 446, 447, 448, 449, 450, - 2977, 2978, 839, 26, 2981, 3709, 3369, 140, 755, 140, - 159, 2988, 896, 2179, 447, 448, 449, 450, 72, 691, - 824, 3566, 117, 907, 5, 4387, 256, 81, 2644, 2645, - 2646, 3, 391, 5, 366, 729, 78, 4353, 256, 733, - 399, 194, 1432, 402, 2037, 154, 759, 1755, 78, 1757, - 768, 74, 167, 419, 109, 1763, 256, 32, 127, 82, - 109, 1769, 1770, 1771, 22, 340, 3303, 244, 3305, 64, - 28, 1779, 1780, 2123, 440, 201, 1784, 119, 690, 445, - 446, 445, 446, 447, 448, 449, 450, 110, 4846, 119, - 2979, 2980, 976, 114, 768, 768, 4208, 815, 768, 233, - 768, 2164, 768, 3355, 768, 1584, 768, 768, 845, 846, - 768, 768, 768, 768, 3219, 3220, 3221, 3222, 104, 260, - 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, 3233, 3234, - 109, 114, 104, 4245, 3, 102, 3, 3682, 274, 3303, - 64, 3305, 109, 138, 127, 266, 4258, 3384, 137, 419, - 199, 2349, 78, 4258, 244, 2050, 23, 81, 230, 870, - 871, 156, 185, 881, 2704, 153, 141, 244, 114, 127, - 22, 163, 221, 194, 310, 455, 3281, 3282, 458, 2658, - 333, 4497, 4168, 458, 1725, 1726, 1778, 173, 458, 926, - 4506, 246, 366, 119, 1786, 1795, 111, 331, 2363, 871, - 337, 173, 404, 312, 103, 274, 321, 22, 141, 198, - 343, 80, 343, 80, 138, 310, 953, 954, 2029, 2019, - 3384, 273, 980, 1069, 454, 4213, 34, 404, 377, 221, - 4218, 4209, 156, 4221, 276, 1081, 454, 974, 2301, 316, - 4602, 310, 4574, 64, 1081, 398, 276, 233, 194, 2997, - 236, 2673, 78, 4613, 454, 1083, 3004, 1083, 870, 4597, - 4610, 233, 131, 340, 236, 132, 4598, 1657, 161, 1115, - 1689, 340, 1086, 3990, 1088, 127, 1090, 266, 1092, 246, - 1094, 1095, 1096, 379, 161, 184, 4398, 1101, 109, 204, - 1605, 4121, 104, 119, 443, 161, 291, 1143, 286, 400, - 4093, 109, 4098, 1616, 273, 288, 3990, 456, 1045, 1046, - 88, 452, 127, 250, 181, 456, 274, 3904, 162, 186, - 658, 659, 660, 1151, 56, 663, 664, 665, 324, 371, - 108, 246, 64, 3081, 403, 673, 359, 458, 154, 1688, - 274, 371, 1170, 1216, 273, 331, 436, 264, 164, 151, - 276, 3945, 310, 454, 333, 224, 122, 274, 124, 331, - 419, 173, 1675, 141, 385, 181, 1649, 291, 2455, 262, - 207, 340, 1218, 1201, 83, 340, 127, 398, 370, 1662, - 372, 1227, 340, 36, 299, 262, 1776, 366, 1216, 356, - 30, 31, 359, 310, 1677, 1241, 445, 446, 393, 458, - 333, 169, 398, 392, 396, 274, 340, 613, 1432, 4747, - 347, 340, 340, 280, 1260, 124, 4494, 1263, 1264, 274, - 1290, 233, 1268, 1269, 236, 246, 1263, 406, 634, 328, - 251, 1268, 1269, 366, 1305, 1306, 111, 1308, 26, 149, - 419, 243, 4428, 1305, 1306, 371, 1308, 454, 88, 435, - 276, 4600, 398, 26, 321, 310, 22, 1599, 266, 274, - 326, 440, 28, 435, 2005, 118, 365, 366, 108, 393, - 291, 3889, 4460, 406, 4756, 454, 244, 1305, 1306, 290, - 1308, 3586, 359, 4845, 305, 340, 419, 454, 4850, 221, - 256, 335, 2231, 458, 411, 310, 264, 364, 3860, 1489, - 369, 141, 371, 319, 3866, 2568, 1648, 440, 218, 3855, - 1652, 2574, 149, 264, 380, 206, 1658, 1659, 1322, 331, - 386, 454, 0, 367, 391, 340, 4638, 416, 306, 204, - 458, 290, 399, 4519, 122, 402, 1373, 4523, 4524, 1681, - 137, 3727, 4904, 2402, 388, 371, 1383, 139, 258, 122, - 2132, 4663, 149, 244, 2202, 333, 181, 154, 4663, 2412, - 273, 127, 2210, 314, 2212, 112, 173, 2406, 379, 458, - 1560, 246, 393, 3550, 1564, 4292, 266, 377, 169, 3556, - 3557, 218, 3559, 312, 4380, 1422, 1576, 24, 366, 340, - 182, 2330, 2331, 2332, 2333, 457, 4672, 4673, 122, 454, - 124, 198, 3839, 2342, 4966, 4373, 3843, 44, 4292, 1446, - 1368, 422, 1449, 1450, 2199, 120, 1462, 2199, 274, 163, - 379, 218, 112, 435, 299, 130, 233, 340, 406, 137, - 177, 2050, 377, 1657, 3149, 443, 404, 400, 2666, 2221, - 330, 419, 454, 206, 452, 101, 454, 455, 456, 2814, - 458, 101, 343, 244, 310, 2742, 281, 111, 458, 443, - 1650, 258, 440, 422, 1468, 3637, 306, 2249, 2376, 266, - 3363, 2372, 456, 1410, 349, 3839, 454, 221, 112, 3843, - 1517, 244, 159, 274, 340, 310, 230, 177, 1678, 314, - 419, 454, 326, 333, 155, 8, 3192, 903, 11, 155, - 154, 2091, 274, 81, 181, 160, 227, 398, 274, 3325, - 218, 440, 2910, 458, 1598, 340, 1562, 923, 1436, 310, - 3468, 111, 246, 1441, 331, 186, 366, 40, 2043, 458, - 186, 937, 256, 46, 188, 190, 299, 4849, 310, 1476, - 1477, 1478, 1479, 177, 310, 324, 1084, 326, 382, 1087, - 205, 1089, 1776, 1091, 2920, 1093, 458, 70, 195, 1097, - 215, 274, 4349, 1647, 326, 22, 406, 2194, 340, 274, - 410, 28, 61, 62, 340, 231, 333, 1614, 234, 419, - 343, 231, 1519, 1520, 234, 163, 11, 1624, 202, 1626, - 244, 1528, 246, 4586, 419, 392, 1633, 310, 188, 4875, - 440, 1538, 53, 382, 1641, 310, 184, 328, 3697, 366, - 3699, 2459, 4608, 404, 454, 440, 4584, 293, 281, 3137, - 382, 2248, 135, 1965, 382, 2888, 370, 340, 372, 1566, - 1567, 1568, 1569, 274, 2752, 398, 122, 1721, 124, 4289, - 370, 2549, 372, 221, 274, 70, 260, 2130, 369, 406, - 101, 314, 396, 2561, 244, 452, 246, 4625, 455, 456, - 1688, 147, 1688, 176, 324, 320, 4411, 255, 181, 310, - 127, 299, 421, 314, 24, 396, 2191, 340, 303, 2358, - 310, 4331, 330, 311, 1698, 2593, 1700, 265, 1702, 1748, - 1704, 440, 1706, 163, 44, 355, 1710, 454, 419, 340, - 421, 2712, 274, 4148, 217, 454, 421, 2718, 336, 334, - 340, 1740, 1740, 1740, 1740, 1740, 1740, 1123, 3064, 4513, - 4507, 3067, 1768, 2631, 1661, 440, 4756, 1664, 1765, 1766, - 2783, 1735, 183, 454, 421, 1772, 1773, 1674, 310, 454, - 3003, 366, 1689, 11, 412, 72, 1683, 314, 2367, 262, - 3212, 221, 2722, 440, 81, 2547, 2548, 89, 64, 208, - 2552, 246, 4755, 1800, 70, 251, 251, 154, 454, 310, - 256, 4208, 40, 340, 4407, 81, 4213, 344, 1747, 3241, - 231, 4218, 232, 234, 4221, 227, 1814, 412, 175, 122, - 4071, 124, 370, 244, 372, 310, 1754, 2589, 2590, 340, - 314, 161, 70, 109, 382, 111, 2367, 4252, 4245, 4254, - 2429, 2659, 297, 1859, 147, 393, 4097, 281, 396, 4083, - 42, 4258, 273, 452, 154, 340, 340, 456, 160, 382, - 137, 191, 345, 303, 419, 149, 3925, 3926, 13, 14, - 154, 63, 149, 2033, 4208, 175, 310, 154, 2038, 4213, - 314, 149, 2042, 382, 4218, 440, 154, 4221, 190, 4164, - 3147, 1558, 2651, 4040, 315, 4042, 4043, 2091, 2429, 4046, - 2771, 324, 325, 205, 4, 1812, 340, 4622, 2068, 9, - 1577, 4245, 188, 215, 455, 449, 328, 458, 4675, 137, - 454, 198, 456, 303, 4258, 452, 312, 454, 384, 456, - 370, 149, 372, 354, 218, 449, 154, 230, 394, 241, - 454, 218, 456, 246, 2560, 89, 2562, 2563, 251, 3388, - 218, 2111, 227, 256, 334, 438, 396, 369, 260, 3047, - 330, 4899, 445, 446, 447, 448, 449, 450, 3056, 2129, - 246, 260, 412, 230, 258, 251, 265, 1984, 2800, 455, - 198, 258, 458, 453, 396, 419, 366, 4950, 458, 266, - 258, 4398, 1984, 453, 260, 2656, 2129, 85, 458, 265, - 218, 2161, 4547, 2825, 4549, 184, 440, 419, 4553, 421, - 4555, 2010, 2010, 232, 137, 291, 160, 455, 320, 455, - 458, 3254, 458, 2052, 455, 2054, 149, 458, 2082, 305, - 3261, 154, 412, 2193, 2050, 2089, 4793, 2197, 455, 175, - 258, 458, 454, 2050, 455, 2605, 190, 458, 266, 2801, - 1967, 382, 227, 4460, 1430, 2215, 227, 77, 2050, 4662, - 2193, 205, 455, 412, 4398, 458, 2226, 2379, 227, 3855, - 2659, 215, 3990, 455, 3860, 198, 458, 5, 3435, 2239, - 3866, 384, 10, 455, 52, 3421, 458, 2247, 330, 2401, - 18, 394, 208, 455, 369, 218, 458, 241, 400, 370, - 8, 372, 2118, 11, 2416, 3175, 454, 2419, 2420, 37, - 324, 325, 2424, 2425, 2247, 392, 454, 393, 456, 2431, - 454, 396, 227, 2875, 3440, 3441, 4460, 455, 2102, 452, - 458, 454, 40, 3364, 1510, 258, 3472, 9, 46, 455, - 333, 260, 458, 266, 419, 455, 421, 328, 458, 1525, - 227, 458, 4427, 328, 3183, 454, 52, 328, 3102, 3103, - 3008, 455, 70, 455, 458, 410, 458, 455, 1544, 328, - 458, 42, 412, 366, 392, 4932, 320, 2084, 2085, 454, - 2769, 2493, 8, 204, 437, 11, 2093, 4334, 2095, 15, - 16, 17, 2099, 227, 369, 2202, 455, 263, 369, 458, - 248, 455, 260, 2210, 458, 2212, 455, 263, 455, 458, - 369, 458, 456, 406, 455, 1591, 455, 458, 154, 458, - 3659, 396, 419, 328, 421, 396, 419, 135, 1604, 455, - 455, 4638, 458, 458, 3467, 377, 3469, 396, 2769, 455, - 1616, 454, 458, 456, 419, 260, 421, 440, 419, 2265, - 421, 328, 1628, 263, 42, 455, 4663, 2273, 458, 204, - 419, 454, 421, 1788, 369, 2281, 1791, 2283, 176, 392, - 4873, 455, 455, 181, 458, 458, 437, 455, 455, 454, - 458, 458, 419, 454, 421, 333, 2739, 2740, 437, 447, - 455, 396, 369, 458, 328, 454, 1672, 3385, 3386, 1675, - 370, 2208, 372, 4906, 4638, 2465, 158, 4366, 3179, 217, - 458, 52, 455, 2329, 419, 458, 421, 455, 366, 396, - 458, 455, 455, 2483, 458, 458, 3645, 3662, 454, 4663, - 455, 2491, 159, 458, 4120, 369, 3214, 455, 455, 200, - 458, 458, 419, 2359, 421, 455, 455, 455, 458, 454, - 458, 2367, 2351, 2351, 262, 181, 455, 2264, 406, 458, - 455, 455, 396, 458, 2316, 2272, 3184, 2274, 454, 456, - 3248, 419, 4975, 2280, 4292, 4790, 202, 454, 423, 2393, - 2394, 2395, 2389, 2390, 3033, 419, 340, 421, 455, 2396, - 455, 458, 440, 458, 455, 455, 455, 458, 458, 458, - 455, 455, 455, 458, 458, 458, 454, 455, 454, 457, - 370, 2605, 372, 2429, 455, 3293, 455, 458, 310, 458, - 454, 3010, 455, 3012, 455, 458, 3366, 458, 1804, 181, - 142, 455, 3413, 0, 458, 227, 262, 345, 2891, 247, - 248, 2495, 4849, 2755, 456, 2352, 455, 2501, 2901, 458, - 454, 142, 2459, 3710, 3711, 3712, 260, 3219, 3220, 3221, - 3222, 181, 310, 3225, 3226, 3227, 3228, 3229, 3230, 3231, - 3232, 3233, 3234, 3159, 455, 455, 260, 458, 458, 3010, - 142, 3012, 4400, 2677, 455, 455, 181, 458, 458, 3329, - 3252, 3080, 455, 455, 455, 458, 458, 458, 227, 455, - 142, 2408, 458, 2410, 8, 455, 2549, 11, 458, 260, - 154, 15, 16, 17, 455, 4849, 455, 458, 457, 3281, - 3282, 88, 2834, 455, 2836, 333, 458, 310, 32, 455, - 438, 455, 458, 419, 458, 421, 328, 445, 446, 447, - 448, 449, 450, 142, 455, 455, 3316, 458, 458, 3080, - 2593, 2549, 455, 455, 455, 458, 458, 458, 366, 216, - 3319, 3320, 3321, 2723, 455, 455, 455, 458, 458, 458, - 137, 3024, 455, 3026, 455, 458, 457, 369, 3844, 111, - 3846, 771, 149, 773, 400, 260, 3943, 154, 2642, 232, - 4841, 454, 159, 382, 255, 2593, 330, 164, 406, 328, - 167, 412, 154, 170, 396, 2512, 2766, 208, 455, 454, - 64, 419, 2610, 35, 246, 441, 442, 443, 423, 445, - 446, 447, 448, 449, 450, 3856, 454, 419, 2626, 421, - 260, 198, 440, 2945, 2636, 2637, 2638, 246, 42, 2951, - 369, 2695, 42, 2659, 2642, 387, 454, 274, 154, 412, - 2657, 218, 2659, 412, 3885, 2698, 77, 154, 294, 142, - 4345, 142, 454, 0, 454, 142, 409, 396, 454, 287, - 8, 142, 454, 11, 2673, 2673, 2673, 2673, 2673, 2673, - 34, 142, 142, 423, 458, 142, 142, 260, 260, 142, - 419, 258, 421, 260, 142, 142, 142, 2695, 202, 266, - 2698, 142, 40, 154, 260, 142, 142, 142, 46, 8, - 2086, 366, 11, 2873, 35, 3563, 15, 16, 17, 454, - 3542, 3174, 2098, 216, 154, 454, 2886, 154, 454, 260, - 5, 5, 70, 32, 154, 454, 454, 454, 454, 454, - 454, 40, 5, 454, 454, 5, 454, 46, 454, 454, - 317, 88, 454, 2769, 4011, 4012, 3989, 4014, 262, 5, - 454, 454, 2138, 5, 3673, 454, 454, 454, 454, 454, - 454, 70, 454, 454, 454, 454, 454, 454, 454, 420, - 271, 3093, 200, 35, 458, 458, 92, 216, 35, 154, - 258, 154, 256, 340, 377, 377, 456, 135, 328, 366, - 137, 377, 377, 2997, 328, 2965, 218, 377, 3120, 3121, - 3004, 3123, 149, 3125, 3126, 314, 377, 154, 443, 377, - 81, 328, 159, 3793, 3586, 392, 3138, 164, 4614, 142, - 167, 8, 260, 170, 11, 260, 332, 213, 176, 2855, - 377, 377, 251, 181, 377, 399, 369, 260, 324, 416, - 260, 418, 419, 256, 454, 377, 377, 174, 454, 81, - 458, 198, 181, 40, 3176, 142, 274, 103, 377, 46, - 52, 2778, 0, 2780, 2781, 2782, 377, 176, 52, 217, - 400, 218, 181, 2899, 400, 452, 264, 377, 455, 456, - 457, 377, 377, 70, 369, 377, 41, 3715, 8, 377, - 41, 11, 3780, 202, 203, 15, 16, 17, 377, 328, - 377, 377, 458, 260, 377, 202, 260, 2293, 217, 260, - 423, 258, 202, 260, 262, 377, 202, 419, 387, 266, - 35, 24, 2948, 260, 142, 454, 246, 441, 442, 443, - 454, 445, 446, 447, 448, 449, 450, 109, 142, 411, - 249, 400, 224, 256, 2970, 246, 246, 35, 135, 154, - 88, 2977, 2978, 262, 35, 2981, 265, 454, 208, 329, - 454, 34, 2988, 375, 375, 2991, 340, 3137, 452, 452, - 317, 2997, 377, 377, 377, 377, 142, 142, 3004, 454, - 2997, 4079, 3152, 400, 3010, 142, 3012, 3004, 142, 176, - 142, 400, 255, 377, 181, 8, 250, 345, 11, 137, - 159, 454, 15, 16, 17, 238, 11, 3177, 415, 238, - 3027, 149, 375, 454, 458, 377, 154, 167, 454, 366, - 150, 159, 159, 379, 3050, 458, 164, 40, 455, 167, - 217, 174, 170, 46, 3, 459, 345, 198, 174, 454, - 343, 261, 458, 206, 35, 392, 268, 400, 52, 455, - 458, 377, 377, 3079, 3080, 2972, 4385, 70, 454, 328, - 198, 3070, 3070, 328, 400, 206, 206, 377, 251, 416, - 8, 418, 419, 251, 454, 262, 382, 15, 16, 17, - 218, 377, 3099, 3092, 3092, 3149, 377, 330, 412, 154, - 438, 208, 144, 251, 42, 2481, 4339, 445, 446, 447, - 448, 449, 450, 144, 260, 452, 216, 349, 455, 456, - 457, 80, 2498, 246, 216, 216, 324, 259, 377, 458, - 258, 369, 260, 2509, 377, 260, 260, 175, 266, 438, - 3910, 310, 441, 442, 443, 3289, 445, 446, 447, 448, - 449, 450, 262, 337, 202, 35, 3609, 3610, 202, 458, - 377, 377, 299, 202, 259, 400, 400, 202, 345, 3622, - 4855, 4856, 131, 176, 208, 202, 184, 3184, 181, 296, - 142, 443, 154, 412, 154, 3159, 3881, 443, 156, 317, - 256, 142, 142, 419, 337, 246, 4453, 454, 35, 202, - 203, 246, 260, 454, 260, 172, 208, 4464, 172, 154, - 35, 452, 437, 437, 217, 331, 455, 236, 455, 142, - 3127, 208, 3129, 260, 455, 455, 3133, 455, 260, 337, - 260, 246, 154, 181, 181, 181, 423, 458, 366, 23, - 458, 165, 377, 458, 3287, 454, 249, 3263, 159, 3303, - 235, 3305, 419, 260, 458, 52, 3416, 366, 255, 262, - 382, 438, 3305, 455, 392, 224, 208, 455, 445, 446, - 447, 448, 449, 450, 3468, 455, 412, 159, 271, 455, - 3187, 279, 4539, 455, 455, 455, 159, 437, 416, 3287, - 418, 419, 455, 3295, 3296, 3297, 3298, 454, 458, 270, - 4985, 4986, 377, 455, 416, 3303, 226, 3305, 398, 406, - 52, 260, 416, 3873, 184, 274, 455, 455, 439, 260, - 454, 260, 281, 263, 452, 454, 142, 455, 456, 457, - 3384, 441, 442, 443, 262, 445, 446, 447, 448, 449, - 450, 454, 345, 454, 443, 192, 423, 251, 454, 377, - 246, 310, 455, 454, 377, 314, 454, 377, 264, 377, - 142, 3521, 142, 332, 3524, 8, 142, 332, 11, 332, - 216, 184, 15, 16, 17, 144, 377, 218, 400, 280, - 280, 340, 3694, 397, 228, 377, 377, 4644, 377, 32, - 3702, 3703, 3704, 3705, 377, 228, 2772, 40, 228, 377, - 377, 328, 4164, 46, 377, 260, 246, 328, 340, 328, - 369, 4173, 371, 2789, 328, 4064, 377, 377, 8, 377, - 377, 11, 142, 377, 41, 377, 169, 70, 202, 48, - 202, 202, 202, 3, 455, 438, 42, 312, 441, 442, - 443, 458, 445, 446, 447, 448, 449, 450, 377, 455, - 40, 387, 3468, 102, 458, 455, 46, 259, 454, 260, - 419, 3468, 35, 142, 3624, 455, 142, 377, 4701, 4228, - 154, 90, 169, 453, 453, 62, 4235, 142, 328, 4544, - 70, 455, 400, 400, 4247, 3501, 328, 3940, 3504, 328, - 3506, 4520, 458, 3500, 337, 4343, 115, 263, 4521, 3406, - 3407, 3408, 3409, 140, 140, 133, 202, 2883, 3500, 2885, - 202, 202, 131, 441, 442, 443, 135, 445, 446, 447, - 448, 449, 450, 11, 159, 458, 4535, 452, 4537, 154, - 271, 266, 411, 176, 3550, 159, 155, 159, 181, 158, - 3556, 3557, 455, 3559, 416, 135, 455, 455, 455, 3565, - 4003, 454, 171, 455, 4432, 440, 454, 167, 3718, 202, - 203, 3568, 3569, 458, 458, 455, 455, 453, 455, 317, - 2946, 454, 261, 79, 217, 387, 154, 35, 400, 400, - 192, 208, 377, 52, 369, 142, 176, 454, 387, 377, - 377, 181, 332, 4471, 377, 2971, 328, 328, 377, 377, - 310, 455, 455, 455, 419, 443, 249, 52, 369, 3921, - 154, 144, 142, 70, 387, 102, 202, 202, 454, 262, - 455, 202, 265, 4711, 4712, 202, 454, 217, 419, 295, - 206, 454, 251, 187, 454, 154, 35, 423, 4703, 458, - 259, 455, 3658, 3955, 3956, 75, 369, 458, 458, 454, - 387, 458, 377, 4364, 454, 3654, 3654, 455, 102, 453, - 337, 164, 159, 202, 202, 4427, 202, 202, 159, 4902, - 304, 52, 262, 417, 455, 271, 205, 3584, 297, 3873, - 455, 417, 205, 368, 267, 269, 454, 3063, 4447, 52, - 455, 458, 455, 455, 454, 454, 454, 170, 455, 4259, - 455, 455, 345, 256, 443, 387, 8, 377, 3715, 11, - 159, 419, 70, 443, 186, 52, 3732, 251, 3094, 3735, - 251, 3737, 4034, 4035, 369, 458, 4544, 377, 64, 458, - 377, 4819, 4965, 377, 22, 142, 24, 202, 40, 454, - 28, 161, 159, 4303, 46, 400, 34, 35, 36, 181, - 38, 4984, 454, 41, 42, 345, 44, 4635, 46, 400, - 35, 246, 337, 128, 415, 419, 419, 35, 70, 4647, - 159, 260, 154, 454, 4652, 189, 4654, 263, 200, 159, - 454, 454, 304, 455, 405, 3839, 353, 455, 278, 3843, - 454, 454, 205, 455, 81, 438, 3990, 123, 441, 442, - 443, 260, 445, 446, 447, 448, 449, 450, 454, 418, - 3970, 305, 377, 455, 377, 458, 4128, 116, 35, 4131, - 4132, 3197, 3982, 4888, 454, 454, 154, 251, 454, 229, - 184, 454, 295, 135, 454, 4147, 142, 455, 454, 35, - 4293, 3839, 3218, 141, 455, 3843, 264, 325, 438, 325, - 387, 351, 3868, 4882, 3870, 445, 446, 447, 448, 449, - 450, 455, 52, 52, 35, 454, 454, 3243, 0, 351, - 369, 369, 454, 3902, 176, 455, 455, 244, 5, 181, - 454, 260, 454, 400, 3883, 3883, 18, 458, 369, 455, - 148, 295, 64, 263, 64, 123, 28, 404, 30, 31, - 405, 3277, 25, 191, 192, 193, 194, 419, 196, 419, - 198, 304, 200, 45, 202, 217, 458, 205, 35, 340, - 159, 416, 454, 211, 302, 154, 214, 454, 369, 251, - 218, 128, 220, 65, 186, 67, 68, 260, 454, 260, - 337, 73, 35, 75, 3951, 35, 263, 263, 161, 72, - 454, 161, 52, 455, 86, 4544, 88, 114, 454, 3951, - 262, 454, 324, 455, 398, 5, 3973, 3974, 324, 311, - 454, 3978, 3979, 105, 3990, 455, 108, 21, 32, 458, - 103, 458, 141, 3990, 454, 377, 159, 295, 4148, 121, - 351, 123, 351, 419, 419, 127, 161, 161, 454, 864, - 831, 133, 125, 1492, 768, 2314, 2659, 2173, 2825, 141, - 3467, 143, 4066, 136, 2243, 4031, 4032, 149, 2995, 1269, - 3565, 4557, 4701, 4888, 4040, 4674, 4042, 4043, 4381, 3607, - 4046, 4385, 164, 156, 4057, 4363, 2746, 2447, 161, 4797, - 4258, 4879, 4729, 345, 4728, 4828, 2750, 3655, 180, 3640, - 3599, 3462, 2304, 2304, 2850, 1563, 3623, 4082, 4890, 3049, - 4984, 2298, 4965, 4358, 3003, 4259, 4839, 2999, 4305, 4689, - 4807, 27, 1552, 4308, 4090, 3718, 4493, 1110, 2024, 1126, - 3662, 2721, 4614, 603, 632, 1743, 209, 219, 220, 1743, - 2949, 1744, 4252, 225, 4254, 3989, 4095, 4095, 4292, 4968, - 4854, 1967, 1689, 4119, 1352, 237, 4013, 230, 4420, 4303, - 1968, 4671, 3643, 746, 4703, 4789, 248, 3361, 3884, 1315, - 2674, 4028, 2685, 2008, 1314, 3328, 4782, 1246, 2680, 4656, - 1296, 3869, 2007, 4149, 1317, 3305, 438, 4153, 4154, 2695, - 4156, 3845, 4461, 445, 446, 447, 448, 449, 450, 281, - 3830, 3303, 4638, 4637, 4208, 3362, 3108, 289, 1322, 4213, - 4430, 3256, 4237, 1621, 4218, 4786, 4785, 4221, 4222, 301, - 4772, 294, 1837, 2677, 306, 307, 2520, 309, 2610, 2608, - 2662, 1840, 314, 4495, -1, -1, -1, 319, -1, 4096, - 322, 4245, -1, -1, -1, 327, -1, -1, 321, -1, - 332, 333, -1, -1, 4258, 328, -1, -1, 340, -1, - -1, 334, 344, -1, -1, 4213, -1, -1, -1, -1, - 4218, -1, 354, 4221, -1, -1, -1, -1, 4540, -1, - -1, -1, -1, -1, 366, -1, -1, 3613, -1, -1, - -1, -1, -1, 366, -1, -1, 369, -1, 4302, 4247, - -1, -1, -1, 385, -1, -1, 4240, -1, -1, -1, - -1, -1, 550, 395, 387, -1, -1, -1, 556, 401, - 558, -1, -1, 561, 406, 563, 4292, 565, -1, -1, - -1, -1, -1, -1, 572, 4292, -1, 419, 576, 412, - -1, 4345, -1, -1, -1, 583, -1, -1, -1, 4888, - -1, -1, 8, -1, -1, 11, -1, -1, 440, 15, - 16, 17, -1, -1, -1, -1, -1, -1, 4334, 607, - -1, -1, 454, -1, 612, 457, 32, -1, -1, 617, - -1, -1, -1, 621, 40, -1, -1, -1, -1, 8, - 46, -1, 11, -1, 4398, -1, 15, 16, 17, -1, - 638, -1, -1, 4260, 4261, 4262, -1, -1, -1, -1, - -1, -1, -1, 32, 70, -1, -1, -1, -1, 4368, - 4368, 40, 8, -1, -1, 11, -1, 46, -1, 15, - 16, 17, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4395, 4395, -1, 687, - -1, 70, 690, 691, 692, -1, 4460, -1, -1, -1, - -1, -1, -1, -1, -1, 703, -1, 705, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3803, 4471, -1, - -1, -1, -1, -1, -1, -1, -1, 725, 726, -1, - 728, 729, -1, -1, -1, 733, -1, 4490, -1, -1, - -1, -1, 8, -1, -1, 11, -1, -1, -1, 747, - -1, -1, 4460, 751, -1, -1, -1, -1, -1, 757, - 176, -1, -1, 4471, -1, 181, -1, 4671, -1, -1, - -1, 769, -1, -1, 40, -1, -1, -1, -1, 4396, - 46, -1, 4490, 781, -1, -1, 202, 203, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 176, -1, -1, - -1, 217, 181, -1, 70, -1, -1, -1, 4572, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4544, -1, - -1, -1, 4548, 202, 203, -1, 824, 4544, -1, -1, - -1, -1, 4558, 249, -1, -1, -1, 3923, 217, -1, - -1, -1, 840, -1, -1, -1, 262, 845, 846, 265, - -1, -1, 4874, -1, -1, 8, 202, -1, 11, -1, - -1, -1, 15, 16, 17, -1, -1, -1, 3954, -1, - 249, -1, 870, 871, 4638, -1, -1, -1, -1, 32, - -1, -1, -1, 262, -1, -1, 4595, 4595, -1, 3975, - -1, -1, -1, -1, -1, -1, -1, -1, 896, 4663, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 907, - 176, -1, -1, 911, -1, 181, 262, -1, -1, 4536, - 4790, 4538, -1, 8, -1, -1, 11, -1, 926, 345, - 15, 16, 17, 8, -1, -1, 11, -1, -1, -1, - 15, 16, 17, -1, -1, -1, -1, 4033, 946, -1, - -1, 217, -1, -1, -1, 953, 954, 32, -1, -1, - -1, -1, -1, -1, -1, -1, 345, -1, -1, -1, - -1, -1, 970, 971, 972, -1, 974, 4703, 976, -1, - 4744, 4707, -1, 4709, -1, -1, -1, 4713, 4714, -1, - -1, -1, -1, -1, -1, -1, 262, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 438, -1, -1, 441, 442, 443, -1, 445, - 446, 447, 448, 449, 450, -1, 4122, -1, 4802, 455, - -1, -1, -1, -1, -1, 1043, -1, 1045, 1046, 202, - -1, -1, 4669, -1, -1, -1, -1, -1, -1, 438, - -1, -1, 441, 442, 443, -1, 445, 446, 447, 448, - 449, 450, -1, -1, -1, 1073, -1, -1, -1, 345, - -1, -1, 4168, -1, -1, 4849, -1, -1, -1, -1, - -1, 4855, 4856, -1, -1, 441, 442, 443, -1, 445, - 446, 447, 448, 449, 450, 1103, 1104, -1, -1, 262, - 1108, -1, 1110, -1, -1, -1, -1, 202, -1, -1, - -1, 4738, -1, -1, -1, -1, -1, 202, -1, -1, - -1, 4840, 4840, -1, -1, -1, -1, -1, 1136, -1, - -1, 1139, -1, -1, 1142, 4854, 4854, 4854, 4854, 4854, - 4854, -1, -1, -1, -1, 4908, -1, 1155, -1, -1, - -1, -1, 4888, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 438, -1, -1, -1, 4902, 262, -1, 445, - 446, 447, 448, 449, 450, 4902, 1184, 262, -1, -1, - -1, -1, -1, -1, -1, 4812, -1, -1, -1, 4908, - 4908, 4908, 4908, 4908, 4908, -1, -1, -1, -1, 4973, - -1, -1, -1, -1, 1212, 1213, 1214, -1, 1216, -1, - -1, 4985, 4986, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1236, 4965, - -1, -1, -1, -1, -1, -1, -1, -1, 4965, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4984, 4968, - 4968, 4968, 4968, 4968, 4968, -1, 4883, 4984, -1, -1, - -1, -1, -1, 3, -1, -1, 1274, -1, 8, 1277, - -1, 11, -1, -1, -1, 15, 16, 17, 441, 442, - 443, -1, 445, 446, 447, 448, 449, 450, -1, -1, - -1, -1, 32, -1, -1, 35, -1, -1, -1, 1307, - 40, -1, -1, 1311, 1312, -1, 46, -1, -1, -1, - -1, -1, -1, -1, 1322, 1323, 1324, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, -1, 4428, -1, -1, -1, -1, 1345, -1, -1, - -1, -1, -1, -1, -1, -1, 441, 442, 443, -1, - 445, 446, 447, 448, 449, 450, 441, 442, 443, -1, - 445, 446, 447, 448, 449, 450, -1, -1, -1, -1, - 4466, -1, 1380, -1, -1, -1, -1, 1385, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1398, 1399, -1, -1, -1, -1, -1, -1, -1, 1407, - -1, -1, 1410, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4519, 1432, -1, 1434, 4523, 4524, -1, - -1, -1, -1, -1, 1442, -1, 176, 1445, -1, -1, - -1, 181, -1, 8, -1, -1, 11, -1, -1, -1, - 15, 16, 17, -1, -1, -1, -1, -1, -1, -1, - 1468, -1, 202, 203, -1, -1, -1, 32, 1476, 1477, - 1478, 1479, 1480, -1, -1, 40, -1, 217, -1, -1, - -1, 46, -1, 1491, -1, -1, 1494, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1505, -1, 1507, - -1, -1, -1, -1, -1, 70, -1, -1, -1, 249, - -1, 1519, 1520, -1, -1, -1, -1, -1, -1, 4615, - 1528, -1, 262, -1, -1, 265, -1, -1, -1, -1, - 1538, 8, -1, -1, 11, -1, -1, -1, 15, 16, - 17, -1, -1, -1, -1, -1, -1, -1, -1, 1557, - -1, -1, -1, -1, -1, 32, -1, -1, 1566, 1567, - 1568, 1569, -1, -1, -1, -1, -1, -1, -1, -1, - 1578, -1, -1, -1, -1, -1, -1, 1585, -1, -1, - 1588, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1598, -1, 8, -1, -1, 11, -1, 1605, -1, 15, - 16, 17, 1610, -1, -1, 345, -1, -1, -1, -1, - -1, 176, -1, -1, -1, -1, 181, -1, -1, -1, - -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, - 46, -1, -1, -1, -1, -1, -1, 202, 203, 1647, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1657, - -1, -1, 217, 1661, 70, -1, 1664, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1674, -1, -1, -1, - -1, -1, -1, -1, 1682, 1683, -1, -1, -1, 1687, - -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 262, 438, -1, - 265, 441, 442, 443, 1712, 445, 446, 447, 448, 449, - 450, 1719, -1, 1721, -1, -1, -1, 1725, 1726, -1, - 1728, 8, -1, -1, 11, 202, -1, 1735, 15, 16, - 17, -1, -1, -1, 1742, -1, -1, -1, -1, 1747, - 1748, -1, -1, 1751, -1, -1, -1, 1755, -1, 1757, - -1, -1, -1, 40, 1762, 1763, -1, -1, -1, 46, - 176, 1769, 1770, 1771, -1, 181, -1, 1775, 1776, 1777, - 1778, 1779, 1780, 1781, 1782, -1, 1784, -1, 1786, 1787, - 345, -1, 1790, 70, -1, 262, 202, 203, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1805, 1806, 1807, - 1808, 217, -1, -1, 1812, 1813, -1, -1, -1, 1817, - -1, -1, 1820, -1, -1, 1823, 1824, 1825, 1826, 1827, - 1828, 1829, 1830, 1831, 54, 1833, -1, -1, -1, -1, - -1, 1839, 1840, 249, 1842, -1, -1, -1, -1, -1, - -1, 1849, -1, -1, -1, -1, 262, -1, -1, -1, - -1, -1, -1, -1, -1, 8, -1, 87, 11, -1, - -1, -1, 15, 16, 17, -1, -1, -1, -1, -1, - -1, -1, -1, 438, -1, -1, 441, 442, 443, 32, - 445, 446, 447, 448, 449, 450, -1, 40, -1, 176, - 455, -1, -1, 46, 181, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, - -1, 28, -1, -1, -1, 145, -1, 70, -1, -1, - -1, -1, -1, -1, -1, 8, -1, -1, 11, 345, - 217, -1, 15, 16, 17, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 178, 32, - -1, 68, -1, -1, -1, -1, -1, 40, 1966, -1, - 1968, -1, 1970, 46, 441, 442, 443, -1, 445, 446, - 447, 448, 449, 450, -1, 262, -1, 8, -1, -1, - 11, -1, -1, 213, 15, 16, 17, 70, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2005, -1, -1, - 117, 32, -1, 120, 2012, -1, 2014, -1, -1, 40, - 127, -1, -1, 130, -1, 46, 246, -1, -1, -1, - -1, -1, 438, 176, -1, 441, 442, 443, 181, 445, - 446, 447, 448, 449, 450, 2043, -1, -1, 155, 70, - -1, -1, -1, -1, 2052, 275, 2054, -1, -1, 202, - 203, 281, -1, -1, -1, -1, -1, -1, 345, -1, - -1, -1, -1, 2071, 217, -1, -1, -1, -1, 186, - -1, -1, -1, -1, 2082, -1, 2084, 2085, -1, -1, - -1, 2089, -1, 2091, 314, 2093, 316, 2095, 318, -1, - -1, 2099, -1, 176, 2102, 325, 249, -1, 181, -1, - -1, -1, 332, -1, -1, -1, -1, -1, -1, 262, - 340, -1, 265, -1, -1, 2123, -1, -1, -1, 202, - 203, -1, 352, -1, -1, 2133, -1, 244, -1, 246, - 360, -1, -1, 2141, 217, -1, -1, -1, -1, 256, - 2148, -1, -1, -1, -1, 176, -1, 264, -1, 2157, - 181, 438, -1, -1, 441, 442, 443, 274, 445, 446, - 447, 448, 449, 450, -1, -1, 249, -1, -1, 2177, - -1, 202, 203, -1, 2182, 2183, -1, -1, -1, 262, - -1, -1, 265, 2191, 414, -1, 217, -1, -1, -1, - -1, -1, 345, 310, -1, -1, 313, 314, -1, -1, - 2208, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 22, -1, -1, -1, 249, -1, - 28, -1, -1, 340, -1, -1, -1, 2235, -1, 2237, - 2238, 262, -1, -1, 265, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2264, -1, -1, -1, - 68, -1, 345, -1, 2272, -1, 2274, 8, -1, -1, - 11, -1, 2280, -1, 15, 16, 17, 25, -1, -1, - -1, -1, -1, -1, 2292, 438, 403, -1, 441, 442, - 443, 32, 445, 446, 447, 448, 449, 450, 2306, 40, - -1, 2309, 455, 2311, -1, 46, 2314, -1, -1, 2317, - 58, -1, 120, -1, 345, -1, -1, -1, 8, 127, - -1, 11, 130, 71, -1, 15, 16, 17, -1, 70, - -1, -1, -1, -1, -1, 2343, -1, 85, -1, -1, - -1, -1, 32, -1, 2352, 2353, -1, 155, -1, -1, - 40, -1, -1, -1, -1, 438, 46, -1, 441, 442, - 443, -1, 445, 446, 447, 448, 449, 450, 2376, -1, - -1, -1, 455, -1, -1, -1, -1, 125, 186, -1, - 70, -1, -1, 2391, -1, -1, -1, -1, 136, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2406, -1, - 2408, 2409, 2410, 2411, -1, -1, -1, 438, 156, -1, - 441, 442, 443, 161, 445, 446, 447, 448, 449, 450, - -1, -1, -1, -1, 455, -1, 2434, -1, -1, -1, - -1, -1, -1, -1, -1, 176, 244, -1, 246, 2447, - 181, -1, -1, -1, -1, -1, -1, -1, 256, -1, - -1, -1, -1, -1, -1, -1, 264, -1, -1, -1, - -1, 202, 203, -1, -1, -1, 274, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 217, 2485, -1, -1, - -1, -1, 230, -1, -1, -1, 176, 2495, -1, -1, - -1, 181, -1, 2501, -1, -1, -1, -1, -1, -1, - -1, -1, 310, -1, 2512, 313, 314, -1, 249, -1, - -1, 2519, 202, 203, 262, -1, 2524, -1, -1, -1, - -1, 262, -1, -1, 265, -1, -1, 217, -1, -1, - -1, -1, 340, -1, -1, -1, -1, -1, -1, 2547, - 2548, 2549, -1, -1, 2552, -1, 294, -1, -1, -1, - -1, -1, 2560, 2561, 2562, 2563, -1, -1, -1, 249, - -1, -1, -1, -1, -1, 2573, -1, -1, 2576, -1, - 2578, -1, 262, -1, -1, 265, -1, -1, -1, -1, - 328, 2589, 2590, -1, -1, 2593, 334, -1, -1, 337, - -1, -1, -1, -1, -1, 403, -1, 2605, -1, 2607, - -1, 2609, -1, 2611, 345, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 366, -1, - -1, 8, -1, 2631, 11, 373, -1, 2635, 15, 16, - 17, -1, 380, -1, 2642, -1, 2644, 2645, 2646, 387, - -1, 8, -1, -1, 11, 32, -1, 54, 15, 16, - 17, -1, -1, 40, 2662, 345, -1, -1, -1, 46, - -1, -1, -1, -1, 412, 32, 2674, -1, -1, -1, - -1, 2679, -1, 40, -1, -1, -1, 2685, -1, 46, - 87, -1, -1, 70, -1, -1, -1, 2695, 22, -1, - 2698, -1, -1, 2701, 28, 2703, -1, 438, -1, -1, - 441, 442, 443, 70, 445, 446, 447, 448, 449, 450, - 117, -1, -1, -1, 455, -1, -1, -1, -1, 53, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 68, -1, -1, 2745, 145, 2747, - -1, -1, -1, -1, 2752, -1, -1, -1, 438, -1, - -1, 441, 442, 443, -1, 445, 446, 447, 448, 449, - 450, -1, -1, -1, -1, 455, -1, 101, -1, -1, - 2778, 178, 2780, 2781, 2782, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 120, -1, -1, 176, - -1, -1, -1, 127, 181, -1, 130, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 213, -1, -1, 176, - -1, -1, -1, -1, 181, 202, 203, -1, -1, -1, - -1, 155, -1, -1, -1, -1, -1, -1, -1, -1, - 217, -1, -1, -1, -1, 202, 203, -1, -1, 246, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 183, - 217, -1, 186, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 249, -1, -1, -1, -1, 274, 275, -1, - -1, -1, -1, -1, 281, 262, -1, -1, 265, -1, - -1, 2889, 249, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 262, -1, 231, 265, -1, - 234, -1, -1, 310, -1, -1, -1, 314, -1, -1, - 244, 318, 246, -1, 202, -1, -1, -1, 325, -1, - -1, -1, 256, 211, -1, 332, -1, -1, -1, -1, - 264, -1, 220, 340, -1, -1, -1, -1, -1, 273, - 274, -1, -1, -1, -1, 352, -1, -1, -1, -1, - -1, -1, -1, 360, -1, -1, -1, -1, 345, -1, - -1, -1, -1, -1, 2972, -1, -1, -1, -1, -1, - -1, 2979, 2980, -1, -1, -1, 310, -1, 345, 313, - 314, 315, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8, -1, -1, 11, -1, - -1, -1, 15, 16, 17, -1, 340, 414, 3016, 3017, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, - 354, -1, -1, -1, 3032, -1, -1, 40, -1, -1, - -1, -1, -1, 46, -1, -1, -1, -1, -1, 3047, - 3048, -1, -1, -1, -1, -1, -1, -1, 3056, 3057, - 3058, 438, -1, -1, 441, 442, 443, 70, 445, 446, - 447, 448, 449, 450, -1, -1, 3074, -1, 455, 403, - -1, 438, -1, -1, 441, 442, 443, -1, 445, 446, - 447, 448, 449, 450, -1, -1, -1, -1, 455, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3127, - -1, 3129, -1, -1, -1, 3133, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3149, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3159, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 176, -1, -1, -1, 3175, 181, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3187, - -1, -1, -1, -1, -1, -1, 3194, -1, -1, 202, - 203, -1, -1, -1, -1, 3203, -1, -1, -1, -1, - -1, 3209, -1, 3211, 217, -1, 3214, -1, -1, -1, - -1, 3219, 3220, 3221, 3222, -1, -1, 3225, 3226, 3227, - 3228, 3229, 3230, 3231, 3232, 3233, 3234, -1, -1, -1, - 3238, 3239, -1, -1, -1, -1, 249, -1, -1, -1, - 3248, -1, -1, -1, 3252, -1, -1, -1, 3256, 262, - -1, -1, 265, -1, -1, -1, 3264, -1, -1, 3267, - -1, 3269, 550, -1, -1, -1, -1, -1, 556, -1, - 3278, -1, -1, 3281, 3282, -1, -1, -1, 3286, 3287, - -1, 8, -1, 3291, 11, 3293, -1, -1, 15, 16, - 17, -1, 3300, 3301, 3302, 3303, -1, 3305, 3306, -1, - -1, -1, 3310, 3311, -1, 32, 22, -1, -1, 3317, - -1, -1, 28, 40, -1, 3323, 3324, 3325, -1, 46, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 345, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3350, 70, -1, -1, -1, -1, -1, -1, - -1, -1, 68, 3361, -1, 3363, -1, -1, 13, -1, - -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 30, 3384, 3385, 3386, -1, - 3388, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 49, 50, -1, -1, 3406, 3407, - 3408, 3409, -1, -1, 120, -1, -1, -1, -1, -1, - -1, 127, -1, -1, 130, 703, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 438, -1, 3435, 441, 442, - 443, -1, 445, 446, 447, 448, 449, 450, -1, 155, - 728, 3449, 455, -1, -1, -1, -1, -1, -1, 176, - -1, -1, -1, -1, 181, -1, -1, -1, -1, 747, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 186, -1, -1, -1, -1, 202, 203, -1, -1, -1, - -1, 769, -1, -1, -1, -1, -1, -1, -1, -1, - 217, 8, -1, -1, 11, -1, -1, -1, 15, 16, - 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, - -1, -1, 249, 40, -1, -1, -1, -1, 244, 46, - 246, 3539, -1, -1, -1, 262, -1, -1, 265, -1, - 256, -1, -1, 198, -1, -1, -1, -1, 264, -1, - -1, 206, 840, 70, 209, 210, -1, 212, 274, -1, - 215, -1, 217, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3582, -1, 3584, -1, 3586, -1, - -1, -1, -1, -1, 3592, -1, -1, -1, -1, -1, - 3598, -1, -1, -1, 310, -1, -1, 313, 314, 3607, - -1, -1, -1, 8, -1, -1, 11, -1, -1, -1, - 15, 16, 17, -1, -1, -1, -1, -1, 345, 3627, - -1, -1, -1, -1, 340, -1, -1, 32, -1, 3637, - -1, -1, -1, -1, -1, 40, -1, 3645, -1, -1, - -1, 46, -1, -1, -1, -1, -1, 3655, -1, -1, - -1, 3659, -1, -1, -1, 3663, 3664, -1, 946, 176, - -1, -1, -1, -1, 181, 70, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 970, 971, 972, 202, 203, 403, -1, 3697, - -1, 3699, -1, -1, -1, -1, -1, -1, -1, -1, - 217, 3709, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 438, -1, -1, 441, 442, 443, -1, 445, 446, - 447, 448, 449, 450, -1, -1, -1, -1, 455, -1, - -1, 3739, 249, -1, -1, 22, -1, -1, -1, -1, - -1, 28, 3750, -1, -1, 262, -1, -1, 265, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 176, 3780, -1, -1, -1, 181, -1, -1, -1, - -1, 68, 3790, 3791, -1, -1, -1, -1, -1, 3797, - 3798, -1, -1, -1, 3802, -1, -1, 202, 203, 3807, - -1, -1, 3810, 3811, -1, -1, -1, 3815, 3816, -1, - -1, -1, 217, 3821, 3822, 3823, 3824, 3825, -1, -1, - 1108, 3829, 3830, -1, 3832, -1, -1, 3835, 345, -1, - 117, 3839, -1, 120, -1, 3843, -1, -1, -1, -1, - 127, 3849, -1, 130, 249, -1, -1, 3855, -1, -1, - -1, 1139, 3860, -1, -1, -1, -1, 262, 3866, -1, - 265, -1, -1, -1, -1, 3873, -1, -1, 155, -1, - -1, -1, -1, 3881, -1, -1, 3884, -1, -1, -1, - -1, 3889, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3902, -1, -1, 3905, -1, 186, - -1, -1, -1, -1, 559, -1, -1, -1, -1, -1, - -1, -1, 567, -1, -1, -1, -1, 3925, 3926, 574, - -1, 438, 577, 578, 441, 442, 443, 582, 445, 446, - 447, 448, 449, 450, -1, 3943, 453, -1, 593, -1, - 345, -1, -1, -1, 3952, -1, -1, -1, -1, -1, - -1, -1, -1, 608, -1, -1, -1, 244, -1, 246, - -1, -1, -1, -1, -1, -1, -1, -1, 623, 256, - 625, -1, -1, 628, -1, 630, -1, 264, 633, -1, - -1, -1, -1, -1, -1, 3993, 1274, 274, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4013, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4028, -1, -1, 310, -1, -1, 313, 314, -1, -1, - -1, -1, -1, 438, -1, 1323, 441, 442, 443, -1, - 445, 446, 447, 448, 449, 450, -1, 4055, -1, 704, - 455, -1, -1, 340, -1, -1, -1, -1, 4066, 613, - -1, -1, -1, 4071, -1, -1, -1, -1, -1, -1, - -1, 4079, -1, -1, -1, -1, 8, -1, -1, 11, - 634, -1, -1, 15, 16, 17, -1, -1, 4096, 4097, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 32, -1, -1, -1, 759, -1, -1, -1, 40, -1, - 1398, -1, -1, -1, 46, -1, 403, 4125, -1, 1407, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 70, -1, - -1, -1, -1, -1, -1, -1, 1434, -1, -1, -1, - -1, -1, -1, -1, 1442, -1, 4164, 1445, -1, -1, - -1, -1, -1, -1, 819, 4173, 8, -1, -1, 11, - -1, -1, -1, 15, 16, 17, -1, -1, -1, -1, - -1, -1, 4190, 4191, -1, -1, 4194, -1, -1, -1, - 32, -1, 1480, -1, -1, -1, -1, -1, 40, -1, - 4208, 4209, -1, -1, 46, 4213, 1494, -1, -1, -1, - 4218, -1, -1, 4221, 4222, -1, 4224, -1, 4226, 1507, - -1, 4229, 4230, -1, -1, -1, -1, -1, 70, 884, - -1, -1, -1, -1, -1, -1, -1, 4245, -1, -1, - -1, -1, -1, -1, 176, 900, -1, -1, -1, 181, - 4258, 4259, 4260, 4261, 4262, -1, -1, 912, -1, 914, - -1, -1, -1, -1, -1, -1, -1, 922, -1, 1557, - 202, 203, -1, -1, -1, -1, -1, -1, -1, 934, - -1, -1, -1, -1, 939, 217, -1, 942, -1, -1, - 1578, -1, -1, -1, 4302, 4303, -1, 1585, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, - -1, -1, 977, -1, -1, -1, -1, -1, -1, -1, - 262, -1, -1, 265, 176, -1, -1, 4345, -1, 181, - 4348, 22, -1, -1, -1, -1, -1, 28, -1, 903, - 4358, -1, -1, -1, -1, -1, 4364, -1, 4366, -1, - 202, 203, -1, -1, 4372, -1, -1, -1, -1, 923, - -1, -1, -1, -1, -1, 217, -1, 4385, -1, -1, - -1, -1, -1, 937, -1, -1, -1, 68, 4396, 4397, - 4398, -1, -1, -1, -1, -1, -1, -1, -1, 1687, - -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, - -1, -1, -1, 345, -1, -1, -1, -1, -1, 4427, - 262, -1, 4430, 265, 4432, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1725, 1726, 120, - -1, -1, -1, -1, -1, -1, 127, -1, 4456, 130, - -1, -1, 4460, -1, 1742, -1, 4464, 1112, -1, -1, - 1014, -1, -1, 4471, -1, -1, -1, -1, -1, -1, - 8, -1, 4480, 11, 155, -1, -1, 15, 16, 17, - -1, -1, 4490, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 32, -1, -1, 4505, -1, -1, - -1, -1, 40, 345, -1, 186, 438, -1, 46, 441, - 442, 443, -1, 445, 446, 447, 448, 449, 450, -1, - 4528, -1, -1, 455, -1, -1, -1, 4535, 4536, 4537, - 4538, -1, 70, -1, -1, -1, -1, -1, -1, -1, - 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1839, -1, -1, -1, -1, -1, -1, -1, 54, - -1, 1849, -1, 244, 4572, 246, -1, -1, -1, 1123, - -1, -1, -1, -1, -1, 256, -1, -1, -1, -1, - 4588, -1, -1, 264, -1, 4593, -1, -1, -1, -1, - -1, -1, 87, 274, -1, -1, 438, -1, -1, 441, - 442, 443, -1, 445, 446, 447, 448, 449, 450, -1, - -1, -1, -1, 455, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4635, -1, 310, - 4638, -1, 313, 314, -1, -1, -1, -1, 176, 4647, - -1, 1296, 1297, 181, 4652, -1, 4654, -1, 4656, -1, - 145, -1, -1, -1, -1, 4663, -1, -1, -1, 340, - -1, 4669, -1, 4671, 202, 203, -1, -1, -1, -1, - -1, -1, 4680, -1, -1, -1, -1, -1, 1966, 217, - 1968, -1, -1, 178, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4711, 4712, -1, -1, -1, -1, 1263, - -1, 249, -1, 208, 1369, -1, -1, 2005, 213, -1, - -1, -1, 403, -1, 262, -1, -1, 265, -1, -1, - 4738, -1, -1, -1, -1, -1, 4744, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 35, -1, - -1, 246, 8, -1, -1, 11, -1, -1, -1, 15, - 16, 17, -1, 4771, 4772, -1, -1, 54, 4776, -1, - -1, -1, -1, 1327, 4782, -1, 32, 4785, 1433, -1, - 275, 4789, -1, -1, 40, -1, 281, -1, -1, 8, - 46, -1, 11, -1, 4802, -1, 15, 16, 17, -1, - 87, -1, -1, -1, 4812, -1, -1, 345, -1, -1, - -1, 4819, -1, 32, 70, -1, -1, -1, -1, 314, - -1, 40, -1, 318, -1, -1, -1, 46, -1, -1, - 325, -1, -1, 4841, -1, -1, -1, 332, -1, 1393, - -1, 4849, -1, -1, -1, 340, -1, 4855, 4856, 4857, - -1, 70, -1, -1, -1, -1, -1, 352, 145, -1, - -1, -1, -1, -1, -1, 360, -1, -1, 4876, 2157, - -1, -1, -1, -1, -1, 4883, 1430, -1, -1, -1, - -1, -1, -1, -1, -1, 380, -1, -1, -1, 2177, - -1, 178, -1, 1548, -1, -1, -1, -1, -1, -1, - 438, -1, -1, 441, 442, 443, -1, 445, 446, 447, - 448, 449, 450, -1, -1, -1, -1, 455, -1, 414, - 176, 208, -1, 418, 419, 181, 213, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 202, 203, -1, -1, - -1, 4959, 4960, -1, -1, -1, 1510, 176, -1, 246, - -1, 217, 181, -1, -1, 4973, -1, -1, -1, -1, - -1, 1525, -1, -1, -1, -1, -1, 4985, 4986, 1533, - -1, -1, -1, 202, 203, -1, -1, -1, 275, -1, - 1544, 1646, -1, 249, 281, -1, -1, -1, 217, -1, - -1, -1, -1, -1, -1, 1660, 262, -1, 1663, 265, - 1665, -1, 1667, -1, -1, -1, -1, -1, 1673, -1, - -1, -1, -1, 2311, -1, -1, -1, 314, -1, -1, - 249, 318, -1, -1, -1, -1, -1, 1591, 325, -1, - -1, -1, -1, 262, -1, 332, 265, -1, -1, -1, - 1604, -1, -1, 340, -1, -1, -1, -1, -1, -1, - -1, 35, 1616, 1718, -1, 352, -1, 1722, -1, 1724, - -1, -1, 1727, 360, 1628, -1, -1, -1, -1, -1, - 54, -1, -1, -1, -1, -1, -1, -1, -1, 345, - -1, -1, -1, 380, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 87, -1, -1, -1, -1, 1672, -1, - -1, 1675, -1, -1, -1, -1, 345, 414, -1, -1, - -1, 418, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8, -1, -1, 11, -1, -1, -1, 15, 16, - 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, - 22, 145, -1, 40, -1, -1, 28, -1, -1, 46, - -1, -1, 438, -1, -1, 441, 442, 443, -1, 445, - 446, 447, 448, 449, 450, -1, -1, 2485, -1, 455, - -1, -1, -1, 70, 178, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 68, -1, -1, 438, - -1, -1, 441, 442, 443, -1, 445, 446, 447, 448, - 449, 450, -1, -1, 208, -1, 455, -1, -1, 213, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1804, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 8, -1, -1, 11, -1, -1, 120, 15, - 16, 17, 246, -1, -1, 127, -1, -1, 130, -1, - 8, -1, -1, 11, -1, -1, 32, 15, 16, 17, - -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, - 46, 275, -1, 155, 32, -1, -1, 281, 36, 176, - -1, -1, 40, -1, 181, -1, -1, -1, 46, -1, - -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 186, 202, 203, -1, -1, -1, - 314, -1, 70, -1, 318, -1, -1, 2635, -1, -1, - 217, 325, -1, -1, -1, -1, -1, -1, 332, -1, - -1, -1, -1, -1, -1, -1, 340, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 352, 2034, - 2035, -1, 249, -1, 2039, 2040, 360, -1, -1, 2044, - 118, -1, 244, -1, 246, 262, -1, -1, 265, -1, - -1, -1, -1, 2058, 256, -1, 380, -1, -1, -1, - 2065, -1, 264, -1, 2069, 2070, -1, -1, 2073, 2074, - -1, -1, 274, -1, -1, 2080, -1, -1, -1, -1, - 176, -1, -1, -1, -1, 181, -1, 2092, -1, 2094, - 414, -1, -1, -1, 418, -1, -1, -1, 176, -1, - -1, -1, -1, 181, -1, -1, 202, 203, 2113, -1, - -1, 313, 314, 2118, -1, 2019, -1, -1, -1, 2023, - 2024, 217, -1, -1, 202, 203, 2131, -1, 345, -1, - -1, -1, -1, -1, -1, 2140, -1, 2142, 340, 217, - 2145, 2146, 2147, -1, -1, -1, -1, 2152, 2153, -1, - -1, -1, -1, 249, -1, -1, -1, 2162, -1, -1, - -1, -1, 2167, -1, -1, -1, 262, 2172, -1, 265, - -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2086, -1, 262, -1, -1, 265, -1, -1, - -1, -1, -1, 2198, 2098, -1, -1, -1, -1, -1, - -1, 403, -1, -1, 2209, -1, 2211, -1, -1, -1, - -1, 2216, -1, -1, -1, 2220, -1, 2222, 2223, 2224, - 2225, 438, 2227, -1, 441, 442, 443, -1, 445, 446, - 447, 448, 449, 450, 2138, 2240, 2241, 2242, 455, -1, - -1, -1, -1, -1, -1, 2250, 2251, -1, -1, 345, - -1, 2889, -1, 8, -1, -1, 11, -1, -1, -1, - 15, 16, 17, -1, -1, -1, -1, 345, -1, -1, - -1, 8, -1, -1, 11, -1, -1, 32, 15, 16, - 17, -1, -1, -1, -1, 40, -1, -1, -1, -1, - -1, 46, 22, -1, -1, 32, -1, 2302, 28, -1, - -1, -1, -1, 40, -1, -1, -1, -1, -1, 46, - -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, - -1, -1, 400, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 70, -1, -1, -1, 22, 68, -1, - -1, -1, 438, 28, -1, 441, 442, 443, -1, 445, - 446, 447, 448, 449, 450, -1, -1, -1, -1, 455, - 438, -1, -1, 441, 442, 443, -1, 445, 446, 447, - 448, 449, 450, -1, -1, -1, -1, -1, 3016, 3017, - -1, -1, -1, 68, -1, -1, -1, -1, -1, 2293, - 120, -1, -1, -1, 3032, -1, -1, 127, -1, 154, - 130, -1, -1, -1, 159, -1, -1, -1, -1, -1, - 3048, -1, -1, -1, -1, -1, -1, -1, -1, 3057, - 3058, 176, -1, -1, -1, 155, 181, -1, -1, -1, - -1, -1, -1, -1, -1, 120, 3074, -1, -1, 176, - -1, -1, 127, -1, 181, 130, -1, 202, 203, -1, - 2455, -1, -1, -1, -1, -1, 186, -1, -1, 2363, - -1, -1, 217, -1, -1, 202, 203, -1, -1, -1, - 155, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 217, 2486, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, - -1, 186, -1, -1, -1, -1, -1, 262, -1, -1, - 265, -1, 249, -1, 244, -1, 246, -1, -1, -1, - -1, -1, -1, -1, -1, 262, 256, -1, 265, -1, - -1, -1, -1, -1, 264, -1, -1, 3175, -1, -1, - -1, -1, -1, -1, 274, -1, -1, -1, -1, -1, - -1, 288, 22, -1, -1, -1, -1, -1, 28, 244, - -1, 246, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 256, -1, -1, -1, -1, -1, 2481, -1, 264, - 310, -1, -1, 313, 314, -1, -1, -1, -1, 274, - 345, -1, -1, -1, 2498, -1, -1, -1, 68, -1, - -1, -1, -1, -1, -1, 2509, -1, -1, 345, -1, - 340, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 361, 310, -1, -1, 313, 314, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 120, -1, -1, -1, -1, 340, -1, 127, -1, -1, - 130, -1, 3300, 3301, 3302, -1, -1, 2672, -1, -1, - -1, -1, -1, 403, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 438, -1, 155, 441, 442, 443, -1, - 445, 446, 447, 448, 449, 450, -1, -1, -1, -1, - -1, 438, -1, -1, 441, 442, 443, -1, 445, 446, - 447, 448, 449, 450, -1, -1, 186, -1, 403, 2724, - 2725, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8, -1, -1, 11, -1, -1, 2742, 15, 16, - 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, - -1, -1, 2767, 40, -1, -1, -1, -1, -1, 46, - -1, 2776, -1, -1, 244, -1, 246, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 256, 2792, 2793, -1, - -1, -1, 2797, 70, 264, -1, -1, 2802, 2803, 2804, - -1, 2806, -1, -1, 274, -1, -1, 2711, -1, -1, - 2714, -1, 2716, -1, -1, -1, -1, 2721, 8, -1, - -1, 11, 2827, -1, -1, 15, 16, 17, -1, -1, - -1, -1, 2837, 2838, 2839, 2840, -1, -1, -1, -1, - 310, -1, 32, 313, 314, 35, -1, -1, -1, -1, - 40, -1, -1, -1, -1, -1, 46, 22, -1, -1, - -1, -1, -1, 28, -1, -1, -1, -1, 2772, 2874, - 340, -1, 2877, 2878, 2879, -1, 153, -1, -1, -1, - 70, -1, 2887, 8, -1, 2789, 11, -1, 53, -1, - 15, 16, 17, -1, -1, -1, -1, -1, -1, 176, - -1, -1, -1, 68, 181, -1, -1, 32, -1, -1, - 2814, -1, -1, -1, -1, 40, -1, -1, -1, -1, - -1, 46, -1, -1, -1, 202, 203, -1, -1, -1, - -1, -1, -1, 403, -1, -1, 101, -1, -1, -1, - 217, -1, -1, -1, 3582, 70, -1, -1, -1, -1, - -1, -1, -1, 2958, 3592, 120, -1, -1, -1, -1, - -1, 2966, 127, -1, -1, 130, -1, -1, -1, -1, - -1, -1, 249, -1, -1, -1, -1, -1, -1, 2883, - 2985, 2885, -1, -1, -1, 262, 176, -1, 265, 3627, - 155, 181, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3011, -1, -1, 286, - -1, -1, 202, 203, -1, -1, -1, 3655, 183, -1, - -1, 186, -1, -1, -1, -1, -1, 217, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2946, -1, -1, -1, -1, -1, -1, -1, - 3055, 176, -1, -1, 3059, -1, 181, -1, -1, 249, - -1, -1, -1, -1, -1, -1, 231, 2971, 345, 234, - -1, 3709, 262, -1, -1, 265, -1, 202, 203, 244, - -1, 246, -1, 3088, -1, -1, -1, -1, -1, -1, - -1, 256, 217, 2997, -1, -1, -1, -1, -1, 264, - 3004, -1, -1, -1, -1, -1, -1, -1, 273, 274, - -1, -1, -1, 3118, -1, -1, 22, -1, -1, -1, - -1, -1, 28, -1, 249, -1, -1, 3132, -1, -1, - -1, 3136, -1, -1, -1, -1, -1, 262, -1, -1, - 265, -1, 3147, -1, -1, 310, -1, -1, 313, 314, - 315, -1, -1, -1, -1, 345, -1, 282, -1, 3063, - -1, 438, 68, -1, 441, 442, 443, -1, 445, 446, - 447, 448, 449, 450, -1, 340, -1, 3081, -1, -1, - -1, -1, -1, -1, 3822, 3823, 3824, 3825, 191, 354, - 3094, -1, -1, -1, -1, -1, -1, 200, 201, -1, - -1, -1, -1, -1, 8, 208, -1, 11, -1, -1, - -1, 15, 16, 17, 120, -1, 219, -1, -1, -1, - 345, 127, -1, -1, 130, -1, -1, -1, 32, -1, - -1, 35, -1, -1, -1, -1, 40, -1, 403, -1, - -1, -1, 46, -1, -1, -1, -1, -1, 438, 155, - -1, 441, 442, 443, -1, 445, 446, 447, 448, 449, - 450, -1, -1, -1, -1, -1, 70, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 186, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3197, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 438, 3218, -1, 441, 442, 443, -1, - 445, 446, 447, 448, 449, 450, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 244, 3243, - 246, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 256, -1, -1, -1, -1, -1, -1, -1, 264, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 274, -1, - -1, -1, 176, 3277, -1, -1, -1, 181, -1, -1, - -1, -1, -1, -1, -1, -1, 3391, -1, 3393, -1, - -1, -1, -1, -1, -1, 3400, -1, -1, 202, 203, - -1, -1, -1, -1, 310, -1, -1, 313, 314, -1, - -1, 8, 3417, 217, 11, -1, -1, -1, 15, 16, - 17, -1, -1, -1, -1, -1, -1, -1, 3433, -1, - -1, -1, -1, -1, 340, 32, -1, -1, -1, -1, - -1, -1, 3447, 40, -1, 249, -1, -1, 22, 46, - -1, -1, -1, -1, 28, -1, -1, -1, 262, -1, - 3465, 265, -1, -1, -1, 3369, -1, -1, -1, -1, - 3475, -1, -1, 70, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4125, -1, -1, - -1, 3496, -1, -1, 68, -1, -1, 403, -1, -1, - -1, -1, 3507, 3508, 3509, -1, -1, 3512, 3513, 3514, - 3515, 3516, 3517, -1, -1, -1, -1, 3522, 3523, -1, - 3525, 3526, 3527, 3528, 3529, 3530, -1, 3532, -1, -1, - -1, -1, -1, -1, -1, -1, 3541, -1, 3543, 3544, - -1, 345, -1, -1, -1, -1, 120, -1, -1, -1, - -1, -1, -1, 127, -1, 558, 130, -1, -1, -1, - -1, 3566, 159, -1, 3468, -1, -1, 570, -1, -1, - -1, -1, 575, -1, -1, -1, -1, -1, -1, 176, - 3585, 155, -1, 586, 181, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 602, - -1, -1, -1, -1, 607, 202, 203, -1, -1, -1, - 613, -1, 186, -1, 617, 618, -1, -1, -1, -1, - 217, 624, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 634, 635, -1, 438, -1, -1, 441, 442, 443, - 643, 445, 446, 447, 448, 449, 450, -1, -1, -1, - -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 262, -1, -1, 265, -1, - 244, -1, 246, -1, -1, -1, -1, 3682, -1, -1, - -1, -1, 256, -1, -1, -1, -1, -1, -1, -1, - 264, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 274, -1, -1, -1, -1, 3710, 3711, 3712, -1, 3613, - 4348, -1, -1, -1, -1, -1, -1, 3722, -1, -1, - -1, -1, 725, 726, -1, -1, 4364, -1, 731, -1, - -1, -1, -1, -1, -1, -1, 310, -1, -1, 313, - 314, -1, -1, -1, -1, -1, -1, -1, 345, -1, - -1, -1, -1, -1, 757, -1, -1, -1, 3662, 4397, - -1, -1, -1, -1, -1, -1, 340, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8, -1, -1, 11, -1, -1, -1, 15, 16, - 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 32, -1, -1, 35, 403, - -1, -1, -1, 40, -1, -1, -1, -1, -1, 46, - -1, 438, -1, -1, 441, 442, 443, -1, 445, 446, - 447, 448, 449, 450, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 70, -1, -1, -1, 4505, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3793, - -1, -1, -1, 896, -1, -1, -1, -1, -1, 3803, - 903, -1, -1, -1, 907, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8, -1, -1, 11, -1, -1, - 923, 15, 16, 17, -1, -1, 3931, -1, -1, -1, - 3935, 3936, 3937, 3938, 937, -1, 3941, -1, 32, -1, + 16, 0, 892, 0, 203, 798, 0, 0, 586, 25, + 1120, 750, 198, 21, 36, 51, 1142, 748, 181, 27, + 1318, 20, 7, 1511, 659, 697, 698, 699, 1052, 14, + 835, 703, 619, 893, 21, 1082, 1442, 1398, 772, 203, + 27, 2597, 2409, 2763, 773, 619, 908, 12, 1435, 779, + 1917, 1447, 2933, 917, 1178, 1040, 1041, 1571, 1055, 0, + 189, 998, 207, 1651, 757, 1050, 2803, 2906, 2422, 22, + 17, 20, 45, 1832, 1320, 220, 3224, 1375, 665, 3475, + 3518, 1442, 2958, 36, 2960, 3134, 3518, 3199, 2261, 2573, + 0, 3410, 2755, 44, 3126, 3180, 3570, 2101, 2102, 642, + 2313, 2334, 3134, 2753, 2754, 577, 1458, 4048, 3514, 2812, + 972, 3145, 655, 847, 976, 3799, 3439, 654, 168, 981, + 664, 3802, 1815, 3811, 1370, 3745, 3211, 3445, 1920, 991, + 1853, 892, 4276, 190, 191, 3789, 2785, 194, 1534, 900, + 861, 183, 1876, 1005, 4381, 2686, 4437, 35, 1427, 910, + 1664, 0, 4279, 0, 42, 212, 0, 629, 0, 0, + 0, 1749, 219, 0, 183, 1375, 753, 0, 3788, 0, + 0, 0, 0, 3197, 50, 41, 4230, 845, 795, 753, + 2822, 4456, 1038, 1039, 4397, 1350, 4399, 921, 1540, 1541, + 4579, 1437, 795, 1049, 3494, 4591, 2751, 5, 5, 3444, + 9, 3446, 3373, 42, 5, 4787, 0, 9, 0, 0, + 35, 56, 71, 0, 49, 0, 86, 987, 9, 5, + 4495, 113, 1207, 1208, 4278, 5, 29, 13, 14, 22, + 5, 157, 11, 1003, 2101, 26, 5, 42, 56, 2412, + 1237, 56, 1227, 56, 4694, 4695, 5, 73, 2803, 5, + 5, 73, 4728, 73, 13, 14, 22, 13, 14, 137, + 162, 83, 162, 5, 215, 169, 1071, 5, 11, 5, + 5, 162, 26, 5, 185, 2816, 162, 111, 162, 39, + 143, 2751, 144, 4440, 5, 56, 165, 5, 2367, 2908, + 2369, 204, 964, 0, 2373, 3865, 3866, 40, 3868, 3869, + 3870, 162, 9, 2382, 2383, 2384, 162, 26, 78, 1607, + 4, 9, 231, 132, 5, 9, 208, 1390, 266, 26, + 4501, 4502, 0, 5, 123, 56, 285, 29, 71, 4525, + 713, 264, 116, 2803, 133, 3, 300, 130, 83, 199, + 1196, 1197, 20, 5, 56, 162, 2519, 207, 2521, 162, + 156, 104, 3, 4, 5, 261, 272, 285, 9, 251, + 220, 712, 30, 31, 130, 388, 333, 1223, 162, 111, + 162, 162, 56, 51, 73, 162, 4533, 162, 249, 285, + 350, 350, 1112, 171, 83, 32, 22, 237, 164, 154, + 114, 185, 28, 185, 185, 11, 351, 116, 185, 1120, + 185, 36, 4984, 1340, 4, 11, 152, 319, 333, 9, + 324, 4, 5, 335, 39, 307, 9, 307, 337, 43, + 162, 11, 586, 73, 104, 4814, 11, 465, 306, 467, + 320, 469, 104, 83, 40, 4710, 350, 4581, 350, 584, + 64, 1305, 26, 4656, 26, 590, 11, 73, 471, 33, + 40, 33, 26, 4580, 324, 162, 346, 181, 603, 33, + 111, 380, 680, 681, 682, 71, 345, 685, 686, 687, + 20, 393, 113, 1497, 638, 40, 222, 695, 185, 198, + 325, 71, 281, 248, 409, 120, 73, 293, 407, 163, + 353, 341, 268, 161, 130, 163, 249, 144, 56, 378, + 467, 471, 471, 467, 56, 183, 71, 325, 467, 118, + 325, 430, 467, 432, 897, 281, 1103, 465, 575, 322, + 319, 469, 579, 1257, 337, 3144, 1256, 388, 5, 1103, + 333, 4688, 335, 1120, 467, 256, 593, 1610, 256, 467, + 4697, 467, 330, 600, 415, 896, 1089, 104, 467, 388, + 566, 1285, 203, 319, 325, 471, 3605, 350, 471, 4755, + 471, 467, 388, 104, 426, 256, 388, 471, 388, 471, + 569, 471, 569, 3605, 225, 569, 569, 416, 1122, 471, + 471, 467, 1303, 467, 350, 1831, 1884, 1308, 1309, 467, + 393, 5067, 5042, 143, 325, 1182, 4887, 3629, 367, 368, + 5182, 471, 4991, 619, 620, 1148, 465, 426, 1182, 422, + 469, 416, 420, 325, 374, 471, 409, 3936, 565, 669, + 322, 1164, 456, 377, 343, 409, 471, 1873, 569, 665, + 8, 401, 467, 11, 1364, 798, 1179, 15, 16, 17, + 3521, 325, 467, 388, 1506, 3963, 388, 1509, 414, 458, + 459, 3974, 1413, 471, 471, 3978, 471, 1517, 465, 467, + 467, 1787, 469, 256, 466, 664, 467, 458, 459, 4813, + 678, 3756, 680, 1919, 682, 347, 470, 4804, 470, 470, + 688, 467, 2855, 470, 463, 470, 3798, 467, 1853, 388, + 409, 678, 467, 680, 1415, 682, 1861, 377, 663, 715, + 1335, 688, 689, 690, 1425, 1569, 1753, 692, 467, 3880, + 1471, 467, 467, 1300, 456, 1485, 665, 3962, 5107, 3964, + 463, 1308, 1309, 5119, 584, 741, 1300, 469, 4028, 467, + 590, 467, 467, 749, 1719, 467, 752, 753, 754, 938, + 471, 1358, 4923, 603, 3778, 787, 4687, 1794, 934, 374, + 432, 458, 459, 421, 4324, 1358, 1803, 1527, 709, 471, + 458, 459, 388, 470, 458, 459, 1434, 325, 787, 467, + 432, 453, 413, 325, 938, 5050, 360, 1498, 360, 256, + 1501, 1502, 104, 333, 2180, 467, 360, 471, 5063, 80, + 789, 453, 789, 467, 923, 789, 789, 3460, 22, 5188, + 4274, 388, 411, 353, 2210, 467, 5019, 458, 459, 173, + 867, 868, 162, 4, 5, 2113, 173, 3171, 9, 3843, + 377, 2825, 773, 2827, 712, 713, 714, 116, 777, 3042, + 430, 122, 1602, 5, 3715, 143, 377, 119, 1694, 1695, + 69, 4985, 458, 459, 460, 461, 462, 463, 789, 266, + 157, 802, 47, 453, 104, 421, 5245, 272, 458, 459, + 4987, 2257, 1583, 3702, 3506, 458, 459, 3, 458, 459, + 460, 461, 462, 463, 861, 460, 461, 462, 463, 789, + 272, 3436, 350, 5158, 3439, 751, 2753, 2754, 2755, 755, + 268, 569, 249, 844, 152, 460, 461, 462, 463, 956, + 1478, 5192, 5193, 2113, 780, 1123, 130, 114, 1126, 198, + 1128, 4965, 1130, 471, 1132, 8, 337, 115, 1136, 471, + 266, 2200, 15, 16, 17, 111, 26, 837, 985, 986, + 65, 22, 4986, 2656, 2657, 304, 3109, 3110, 2661, 1722, + 789, 4379, 789, 2241, 267, 789, 82, 789, 789, 789, + 4570, 3492, 789, 5127, 1011, 34, 789, 1687, 789, 789, + 789, 789, 162, 3518, 222, 5109, 3436, 22, 2266, 3439, + 3, 82, 56, 2461, 181, 2698, 2699, 163, 5215, 377, + 3629, 5108, 4420, 80, 3823, 180, 664, 665, 1660, 5280, + 185, 105, 283, 430, 80, 4433, 261, 252, 134, 27, + 3, 4433, 5, 471, 159, 263, 141, 205, 896, 897, + 80, 3224, 123, 1796, 321, 249, 2126, 2315, 165, 4338, + 285, 2813, 133, 3, 159, 122, 221, 1084, 1085, 3108, + 3767, 272, 111, 2767, 471, 264, 122, 319, 388, 130, + 212, 65, 38, 5187, 235, 353, 467, 238, 3518, 82, + 467, 415, 122, 468, 80, 377, 471, 281, 415, 83, + 3, 1800, 1801, 4386, 4382, 256, 252, 65, 4391, 467, + 1017, 4394, 106, 2097, 188, 130, 454, 455, 456, 471, + 458, 459, 460, 461, 462, 463, 5260, 1103, 2781, 2476, + 3, 382, 228, 22, 116, 319, 122, 140, 467, 340, + 1830, 134, 1832, 106, 1120, 2403, 456, 396, 1838, 787, + 23, 789, 435, 111, 1844, 1845, 1846, 141, 4772, 469, + 409, 1756, 3126, 1122, 1854, 1855, 350, 377, 4812, 1859, + 3134, 111, 116, 1120, 5, 159, 1870, 4825, 1154, 82, + 1125, 4822, 1127, 177, 1129, 281, 1131, 4295, 1133, 1134, + 1135, 4771, 4806, 4591, 409, 1140, 1693, 4269, 1793, 202, + 355, 4042, 1797, 298, 1799, 249, 1182, 1802, 166, 82, + 281, 199, 5113, 5114, 177, 268, 198, 1764, 4263, 270, + 330, 111, 1725, 49, 111, 4805, 283, 183, 388, 163, + 290, 338, 135, 272, 1737, 228, 154, 283, 345, 164, + 390, 130, 467, 237, 315, 1748, 240, 4083, 319, 1746, + 1682, 106, 3767, 283, 198, 449, 185, 3221, 255, 1763, + 1256, 35, 135, 337, 22, 411, 281, 376, 24, 272, + 28, 378, 323, 324, 237, 377, 102, 240, 111, 350, + 54, 325, 1258, 433, 380, 345, 382, 190, 281, 45, + 465, 1267, 399, 251, 469, 288, 214, 283, 256, 350, + 410, 410, 376, 377, 319, 1281, 350, 458, 459, 404, + 261, 251, 185, 1851, 298, 173, 256, 190, 26, 4685, + 1330, 381, 177, 383, 1300, 382, 319, 1303, 1304, 103, + 323, 113, 1308, 1309, 285, 350, 382, 3767, 311, 4618, + 298, 1343, 1344, 268, 1346, 22, 5247, 341, 4992, 140, + 284, 28, 382, 113, 1478, 313, 1303, 350, 297, 288, + 357, 1308, 1309, 4026, 1343, 1344, 256, 1346, 76, 4652, + 115, 197, 130, 3996, 4808, 105, 84, 113, 341, 4002, + 2079, 3991, 237, 116, 287, 240, 125, 380, 127, 382, + 319, 249, 279, 467, 323, 210, 382, 130, 281, 343, + 403, 454, 455, 456, 112, 458, 459, 460, 461, 462, + 463, 150, 270, 187, 287, 26, 3860, 456, 251, 2677, + 404, 350, 356, 249, 319, 2683, 465, 409, 467, 468, + 469, 222, 471, 4712, 249, 2285, 1453, 430, 4717, 4718, + 4, 280, 261, 199, 369, 9, 404, 57, 208, 1360, + 423, 390, 4850, 130, 448, 65, 343, 330, 188, 3974, + 205, 235, 4471, 3978, 238, 409, 285, 350, 1415, 144, + 178, 5115, 208, 467, 256, 249, 5120, 83, 1425, 4471, + 430, 189, 164, 4881, 1122, 448, 341, 26, 2209, 4881, + 377, 251, 307, 388, 433, 91, 177, 4569, 211, 402, + 270, 430, 375, 1410, 337, 111, 280, 410, 103, 2516, + 413, 281, 251, 339, 125, 251, 467, 256, 1465, 1466, + 210, 471, 261, 281, 453, 1542, 1543, 1544, 1545, 402, + 417, 2656, 2657, 90, 4890, 4891, 2661, 410, 353, 1515, + 413, 85, 5186, 430, 3974, 1521, 234, 307, 3978, 319, + 324, 1498, 1190, 110, 1501, 1502, 237, 415, 231, 249, + 3733, 319, 295, 4557, 2285, 280, 453, 163, 1585, 1586, + 344, 307, 1210, 2698, 2699, 1734, 2923, 1723, 3026, 2126, + 467, 2270, 2271, 127, 3777, 2274, 125, 144, 1677, 1606, + 364, 4989, 350, 448, 409, 3768, 90, 2318, 194, 359, + 2330, 157, 5246, 1241, 281, 4085, 3325, 337, 2289, 1733, + 1734, 4091, 168, 209, 390, 225, 2297, 1487, 1256, 2300, + 1531, 173, 1492, 219, 1641, 1642, 1643, 1644, 319, 185, + 2351, 2280, 114, 3460, 5278, 350, 1583, 5281, 30, 31, + 235, 3605, 319, 238, 467, 251, 376, 377, 467, 245, + 3689, 471, 422, 335, 3693, 3694, 395, 3696, 1634, 350, + 341, 369, 1638, 353, 337, 3629, 405, 388, 343, 3352, + 3353, 3354, 3355, 350, 168, 3358, 3359, 3360, 3361, 3362, + 3363, 3364, 3365, 3366, 3367, 1555, 4527, 2119, 2418, 1559, + 3046, 113, 630, 11, 468, 280, 280, 249, 90, 181, + 2349, 3834, 377, 3836, 2207, 1343, 1344, 380, 1346, 391, + 167, 2441, 2442, 2443, 2444, 397, 654, 388, 110, 409, + 3268, 5119, 167, 2453, 323, 288, 281, 1851, 2417, 281, + 430, 3414, 3415, 329, 407, 157, 1556, 1754, 125, 0, + 127, 4786, 417, 1760, 1691, 111, 281, 2437, 4820, 158, + 471, 350, 144, 71, 1701, 430, 1703, 430, 315, 432, + 323, 411, 1709, 150, 319, 350, 350, 319, 225, 1716, + 192, 471, 328, 4468, 2860, 164, 29, 1487, 453, 297, + 225, 190, 1492, 231, 319, 456, 343, 350, 323, 234, + 4784, 35, 467, 5191, 467, 350, 5152, 281, 469, 2489, + 53, 125, 4318, 127, 1763, 4604, 195, 4801, 281, 189, + 54, 1631, 178, 281, 4509, 350, 343, 467, 198, 1639, + 377, 142, 470, 167, 125, 140, 127, 249, 1773, 251, + 1775, 1651, 1777, 321, 1779, 319, 1781, 152, 113, 2471, + 1785, 1823, 157, 4837, 2276, 1555, 319, 315, 4, 1559, + 377, 319, 393, 9, 311, 1764, 1815, 4698, 1815, 103, + 417, 1815, 1815, 415, 4379, 186, 350, 1843, 4704, 256, + 1887, 4386, 390, 430, 261, 3133, 4391, 350, 2775, 4394, + 4053, 225, 350, 231, 2565, 251, 311, 202, 2833, 337, + 417, 4999, 3204, 1840, 1841, 3207, 453, 335, 411, 1810, + 1847, 1848, 4229, 333, 300, 4420, 1726, 222, 103, 1822, + 467, 4427, 467, 4429, 1815, 433, 3345, 192, 4433, 344, + 4600, 3179, 1829, 315, 381, 411, 383, 251, 1875, 1749, + 4063, 4064, 380, 2480, 4248, 427, 381, 261, 383, 281, + 467, 4268, 430, 187, 423, 3374, 2480, 377, 263, 4379, + 407, 343, 377, 4998, 467, 393, 4386, 272, 1934, 407, + 261, 4391, 407, 158, 4394, 453, 423, 2562, 2658, 306, + 251, 260, 281, 4967, 249, 256, 251, 319, 247, 471, + 2670, 467, 430, 471, 432, 377, 2533, 340, 91, 337, + 4420, 235, 930, 83, 238, 190, 265, 334, 423, 2533, + 163, 311, 1629, 4433, 140, 249, 212, 2760, 395, 2168, + 319, 140, 2702, 281, 236, 953, 152, 333, 405, 467, + 2166, 157, 162, 152, 305, 417, 1653, 281, 157, 421, + 968, 194, 380, 432, 344, 4834, 280, 381, 430, 383, + 235, 350, 3725, 238, 2168, 185, 209, 4220, 3522, 365, + 2740, 319, 4893, 467, 453, 333, 219, 335, 2823, 407, + 163, 453, 430, 407, 393, 319, 202, 377, 467, 152, + 2159, 162, 21, 202, 157, 467, 4591, 167, 27, 456, + 324, 393, 430, 432, 432, 453, 222, 2768, 403, 2909, + 2058, 194, 469, 222, 185, 4792, 350, 152, 188, 3185, + 344, 2206, 157, 231, 453, 266, 209, 5101, 321, 3195, + 271, 2058, 2765, 423, 2934, 393, 219, 430, 467, 467, + 364, 340, 4295, 8, 430, 1763, 11, 263, 3576, 3387, + 15, 16, 17, 2042, 263, 225, 272, 4652, 236, 222, + 453, 323, 245, 272, 2161, 2162, 2128, 453, 2130, 157, + 2126, 157, 234, 2170, 4193, 2172, 4195, 4196, 2126, 2176, + 4199, 4591, 157, 266, 3991, 471, 329, 222, 350, 3996, + 432, 179, 354, 179, 2279, 4002, 2714, 1815, 234, 2126, + 263, 271, 35, 2084, 179, 266, 5180, 140, 3394, 2910, + 271, 453, 572, 24, 2669, 888, 2671, 2672, 3554, 152, + 4880, 54, 3568, 5044, 157, 4743, 5251, 4745, 263, 337, + 73, 4749, 905, 4751, 45, 908, 2505, 2506, 2507, 2195, + 83, 2768, 4652, 3307, 1162, 87, 329, 3352, 3353, 3354, + 3355, 3779, 188, 3358, 3359, 3360, 3361, 3362, 3363, 3364, + 3365, 3366, 3367, 2348, 624, 468, 5240, 179, 471, 202, + 103, 1889, 380, 3609, 634, 2850, 62, 63, 4796, 4432, + 3385, 231, 3574, 2984, 3576, 79, 4439, 403, 2179, 222, + 2090, 393, 468, 1863, 403, 471, 1866, 4792, 2295, 407, + 3177, 2298, 466, 333, 334, 3242, 3243, 471, 2108, 3414, + 3415, 381, 462, 383, 2114, 3501, 423, 467, 2118, 469, + 185, 466, 430, 393, 432, 279, 471, 340, 411, 231, + 263, 333, 334, 166, 404, 5, 3138, 407, 462, 272, + 10, 206, 53, 467, 2144, 469, 467, 3801, 18, 465, + 2877, 212, 468, 469, 187, 4850, 9, 468, 468, 467, + 471, 471, 2289, 2877, 2847, 2848, 3604, 37, 3606, 2366, + 2297, 468, 468, 2300, 471, 471, 467, 2374, 2375, 2270, + 2271, 337, 4792, 2274, 2381, 2341, 4881, 337, 2188, 343, + 3628, 468, 468, 468, 471, 471, 471, 381, 2395, 383, + 423, 468, 235, 268, 471, 238, 2206, 3645, 2364, 468, + 5231, 2367, 471, 2369, 65, 468, 249, 2373, 471, 468, + 71, 3131, 471, 377, 13, 14, 2382, 2383, 2384, 266, + 380, 231, 83, 471, 468, 4548, 467, 471, 2238, 2436, + 4850, 468, 468, 231, 471, 471, 468, 280, 468, 471, + 381, 471, 383, 3519, 3520, 231, 468, 407, 421, 471, + 111, 49, 113, 417, 2264, 3126, 2084, 2464, 43, 53, + 403, 4881, 2272, 3134, 208, 469, 430, 3804, 380, 2279, + 430, 2607, 432, 2283, 2440, 3786, 468, 4294, 269, 471, + 5150, 324, 468, 4512, 4989, 471, 269, 468, 468, 453, + 471, 471, 450, 2303, 92, 407, 468, 468, 2308, 471, + 471, 344, 2312, 467, 388, 166, 2472, 467, 2423, 3002, + 467, 2518, 469, 2520, 2480, 2325, 2417, 4471, 430, 117, + 432, 364, 2601, 465, 3017, 467, 5196, 337, 2338, 266, + 468, 192, 157, 471, 468, 5041, 134, 471, 2348, 337, + 138, 468, 3164, 430, 471, 432, 1474, 468, 231, 468, + 471, 337, 471, 923, 468, 467, 266, 471, 468, 468, + 158, 471, 471, 161, 934, 2502, 2503, 2533, 3503, 4989, + 380, 2508, 2463, 468, 269, 468, 471, 175, 471, 454, + 455, 456, 380, 458, 459, 460, 461, 462, 463, 468, + 251, 467, 471, 469, 380, 256, 468, 407, 0, 471, + 2714, 468, 450, 3140, 471, 3142, 43, 208, 468, 407, + 3725, 471, 3291, 2620, 5119, 450, 3140, 430, 3142, 432, + 430, 407, 432, 468, 468, 5295, 471, 471, 2565, 381, + 460, 383, 430, 253, 432, 468, 161, 298, 471, 4593, + 430, 467, 432, 1013, 430, 3316, 432, 471, 1576, 381, + 3464, 383, 313, 468, 337, 53, 471, 467, 256, 4097, + 468, 4334, 3155, 1591, 3157, 468, 264, 3347, 471, 467, + 162, 2785, 2658, 468, 468, 468, 471, 471, 471, 468, + 204, 467, 8, 3220, 1612, 11, 5191, 467, 90, 15, + 16, 17, 468, 467, 470, 3280, 3220, 380, 469, 5119, + 468, 3381, 468, 471, 434, 471, 468, 305, 468, 471, + 470, 3454, 3455, 3456, 40, 468, 2702, 468, 471, 468, + 471, 47, 471, 343, 407, 4081, 468, 468, 468, 471, + 471, 471, 468, 468, 468, 471, 471, 471, 140, 1667, + 792, 468, 794, 404, 471, 71, 3426, 430, 468, 432, + 152, 471, 3979, 1681, 3981, 157, 468, 377, 467, 471, + 162, 2571, 467, 3575, 319, 1693, 168, 3451, 185, 171, + 468, 5191, 174, 471, 145, 0, 467, 1705, 145, 2589, + 469, 343, 468, 5100, 467, 471, 468, 2597, 266, 471, + 468, 3546, 22, 471, 24, 185, 3992, 417, 28, 319, + 202, 266, 2768, 145, 34, 35, 36, 145, 38, 185, + 430, 41, 42, 3306, 44, 377, 46, 1745, 1746, 266, + 222, 2807, 2745, 2746, 2747, 468, 4022, 468, 471, 2766, + 471, 2768, 2781, 453, 2781, 2463, 4999, 2781, 2781, 468, + 157, 468, 471, 0, 471, 319, 468, 467, 468, 471, + 470, 3966, 145, 468, 180, 417, 471, 468, 220, 185, + 471, 263, 113, 468, 266, 90, 471, 411, 430, 266, + 272, 236, 3682, 468, 252, 253, 471, 393, 468, 467, + 2887, 471, 2889, 2890, 2891, 468, 468, 3699, 471, 471, + 2781, 453, 260, 468, 468, 221, 471, 471, 468, 468, + 468, 471, 471, 471, 468, 467, 423, 471, 340, 468, + 468, 2877, 471, 471, 468, 140, 157, 471, 212, 468, + 467, 65, 251, 35, 326, 434, 251, 152, 467, 266, + 157, 251, 157, 90, 3605, 43, 43, 162, 251, 398, + 251, 82, 268, 168, 4617, 281, 171, 423, 423, 174, + 79, 1879, 3926, 157, 301, 145, 145, 467, 3629, 189, + 190, 191, 192, 145, 194, 343, 420, 467, 198, 467, + 200, 294, 145, 203, 34, 377, 467, 202, 434, 145, + 210, 145, 212, 140, 471, 215, 145, 145, 157, 219, + 145, 221, 145, 145, 145, 152, 145, 222, 2964, 377, + 157, 403, 145, 145, 266, 162, 467, 377, 35, 4826, + 220, 168, 3126, 266, 171, 467, 5, 174, 8, 157, + 3134, 11, 157, 5, 467, 427, 467, 429, 430, 355, + 2658, 157, 467, 467, 467, 5, 467, 467, 263, 417, + 467, 266, 5, 467, 467, 202, 467, 272, 467, 3015, + 40, 467, 430, 467, 467, 5, 467, 47, 5, 467, + 467, 467, 467, 465, 2874, 222, 468, 469, 470, 277, + 431, 467, 467, 467, 2702, 453, 467, 204, 467, 467, + 467, 71, 35, 94, 220, 471, 471, 35, 157, 467, + 157, 2719, 263, 261, 350, 337, 388, 3104, 388, 388, + 422, 326, 388, 337, 388, 469, 263, 2735, 388, 266, + 388, 3077, 222, 337, 323, 272, 388, 456, 388, 83, + 337, 145, 342, 2751, 217, 451, 266, 266, 454, 455, + 456, 388, 458, 459, 460, 461, 462, 463, 388, 256, + 388, 410, 3108, 380, 266, 266, 333, 261, 138, 467, + 388, 467, 377, 2781, 3120, 388, 178, 83, 281, 471, + 3126, 145, 4238, 377, 185, 411, 411, 8, 3134, 326, + 11, 377, 2982, 388, 3140, 2803, 3142, 3848, 403, 2807, + 4853, 388, 105, 388, 53, 388, 388, 388, 53, 3126, + 180, 388, 242, 388, 388, 185, 270, 3134, 304, 40, + 8, 380, 427, 11, 429, 430, 47, 388, 388, 337, + 388, 388, 285, 285, 388, 42, 388, 42, 388, 4334, + 377, 3158, 3188, 388, 337, 388, 206, 471, 4343, 266, + 71, 221, 40, 3913, 206, 2163, 434, 206, 206, 47, + 465, 266, 388, 468, 469, 470, 403, 2175, 266, 266, + 206, 206, 206, 3219, 3220, 430, 467, 3750, 3751, 3844, + 3845, 3846, 35, 71, 4575, 3272, 398, 145, 24, 4517, + 427, 266, 429, 430, 145, 251, 111, 411, 268, 145, + 430, 145, 145, 266, 228, 3095, 261, 2215, 35, 422, + 251, 251, 251, 35, 212, 157, 339, 138, 34, 386, + 467, 386, 3239, 145, 1674, 467, 388, 1677, 465, 3422, + 388, 468, 469, 470, 145, 411, 145, 465, 465, 3210, + 388, 411, 467, 388, 145, 145, 260, 388, 255, 162, + 138, 426, 242, 242, 564, 11, 4017, 467, 386, 180, + 570, 3232, 572, 467, 185, 575, 471, 577, 467, 579, + 388, 153, 1722, 1723, 171, 162, 586, 390, 202, 468, + 471, 591, 178, 593, 178, 355, 8, 472, 467, 11, + 600, 471, 180, 15, 16, 17, 353, 185, 210, 3316, + 221, 267, 471, 411, 35, 274, 53, 468, 337, 256, + 3291, 467, 411, 35, 624, 210, 256, 210, 236, 629, + 388, 388, 388, 467, 634, 340, 157, 423, 638, 212, + 256, 266, 393, 221, 147, 43, 359, 251, 4089, 147, + 220, 220, 220, 388, 264, 333, 1796, 268, 658, 380, + 3396, 471, 319, 179, 3420, 347, 266, 307, 266, 35, + 206, 212, 388, 388, 411, 411, 303, 188, 456, 456, + 145, 261, 264, 3439, 157, 35, 378, 159, 3268, 304, + 268, 451, 467, 347, 261, 423, 2394, 145, 458, 459, + 460, 461, 462, 463, 3284, 467, 145, 145, 261, 709, + 35, 4009, 712, 713, 714, 8, 251, 251, 11, 430, + 266, 3605, 15, 16, 17, 725, 266, 727, 212, 3309, + 157, 176, 4617, 176, 35, 3428, 3429, 3430, 3431, 32, + 450, 468, 450, 465, 355, 3629, 240, 747, 748, 341, + 750, 751, 212, 347, 157, 755, 468, 4642, 266, 468, + 251, 468, 3539, 3540, 3541, 3542, 468, 185, 185, 769, + 185, 471, 471, 773, 434, 5218, 5219, 355, 23, 779, + 471, 169, 388, 467, 162, 239, 430, 266, 471, 53, + 790, 260, 8, 212, 206, 11, 377, 393, 468, 15, + 16, 17, 802, 4253, 423, 468, 468, 8, 4163, 4164, + 11, 4166, 3210, 162, 467, 4078, 32, 468, 468, 468, + 277, 468, 468, 286, 450, 468, 471, 162, 388, 4221, + 468, 452, 276, 409, 3232, 230, 266, 468, 467, 40, + 451, 53, 417, 467, 844, 467, 47, 458, 459, 460, + 461, 462, 463, 427, 467, 266, 268, 8, 467, 269, + 11, 468, 862, 427, 15, 16, 17, 867, 868, 3605, + 71, 188, 266, 451, 467, 5083, 145, 456, 467, 388, + 458, 459, 460, 461, 462, 463, 434, 388, 4401, 2587, + 196, 4154, 388, 3629, 256, 4408, 896, 897, 3605, 388, + 3636, 145, 270, 3639, 251, 3641, 2604, 3635, 342, 145, + 4740, 4929, 145, 206, 342, 220, 342, 188, 147, 2617, + 388, 411, 3629, 923, 456, 222, 471, 287, 3635, 287, + 408, 157, 388, 388, 934, 388, 388, 138, 938, 4521, + 3717, 232, 232, 232, 337, 3681, 3723, 388, 388, 251, + 337, 337, 388, 3689, 337, 388, 956, 3693, 3694, 388, + 3696, 350, 266, 388, 4731, 3701, 4733, 145, 4853, 3549, + 42, 206, 388, 173, 388, 268, 206, 3, 978, 180, + 388, 388, 206, 4246, 185, 985, 986, 206, 468, 471, + 206, 468, 398, 3, 157, 43, 104, 321, 3705, 3706, + 471, 468, 157, 467, 264, 5023, 468, 1007, 1008, 1009, + 266, 1011, 35, 1013, 145, 388, 145, 157, 468, 2159, + 221, 173, 3420, 145, 466, 337, 2166, 411, 337, 411, + 4471, 466, 269, 347, 337, 206, 143, 143, 3436, 471, + 206, 3439, 454, 455, 456, 206, 458, 459, 460, 461, + 462, 463, 268, 206, 136, 206, 206, 206, 162, 8, + 465, 11, 11, 277, 3800, 157, 422, 268, 468, 471, + 272, 468, 468, 162, 427, 162, 468, 467, 453, 267, + 3660, 171, 1082, 3663, 1084, 1085, 471, 4546, 468, 416, + 467, 40, 471, 4939, 4940, 467, 466, 468, 47, 468, + 467, 4931, 81, 468, 326, 157, 398, 35, 388, 212, + 196, 411, 1112, 411, 53, 380, 145, 268, 388, 467, + 166, 398, 71, 468, 4637, 4009, 388, 342, 3864, 3865, + 3866, 388, 3868, 3869, 3870, 3796, 4434, 5022, 337, 388, + 388, 3848, 1142, 1143, 337, 468, 468, 1147, 467, 1149, + 319, 430, 53, 380, 355, 157, 417, 147, 71, 145, + 104, 454, 455, 456, 398, 458, 459, 460, 461, 462, + 463, 206, 4622, 468, 206, 1175, 206, 210, 1178, 206, + 3760, 1181, 467, 2881, 4482, 302, 191, 434, 266, 138, + 388, 467, 35, 471, 1194, 314, 468, 471, 77, 3779, + 2898, 285, 398, 380, 471, 471, 388, 168, 467, 4472, + 468, 347, 467, 4663, 466, 104, 162, 206, 468, 162, + 53, 467, 428, 428, 1224, 5243, 468, 312, 468, 5075, + 471, 180, 277, 209, 275, 467, 185, 468, 454, 455, + 456, 209, 458, 459, 460, 461, 462, 463, 468, 467, + 451, 5136, 1252, 1253, 1254, 379, 1256, 458, 459, 460, + 461, 462, 463, 467, 273, 53, 174, 261, 4004, 456, + 4006, 3851, 221, 468, 5292, 398, 1276, 468, 468, 388, + 162, 71, 430, 190, 179, 256, 256, 53, 456, 5307, + 4645, 471, 380, 388, 2992, 471, 2994, 65, 4040, 4740, + 145, 4656, 206, 454, 455, 456, 164, 458, 459, 460, + 461, 462, 463, 388, 1314, 388, 162, 1317, 111, 268, + 467, 35, 185, 261, 467, 347, 35, 251, 411, 159, + 411, 157, 347, 5218, 5219, 261, 430, 5167, 53, 430, + 35, 4951, 162, 266, 157, 1345, 467, 269, 204, 1349, + 1350, 193, 162, 467, 467, 312, 416, 363, 4019, 4020, + 1360, 1361, 1362, 468, 1364, 4093, 468, 285, 467, 3767, + 467, 209, 429, 83, 467, 126, 266, 3075, 313, 35, + 4735, 388, 4089, 145, 388, 157, 4093, 1387, 4165, 468, + 118, 468, 35, 467, 256, 178, 467, 4847, 3796, 467, + 467, 467, 233, 4180, 188, 3103, 355, 468, 467, 302, + 347, 4118, 4119, 467, 4864, 145, 4123, 4124, 104, 4869, + 131, 4871, 1422, 426, 35, 468, 270, 1427, 334, 334, + 361, 398, 361, 4740, 468, 53, 53, 35, 74, 467, + 471, 1441, 1442, 467, 416, 178, 467, 4183, 4184, 468, + 1450, 467, 411, 1453, 468, 467, 157, 4193, 249, 4195, + 4196, 2601, 266, 4199, 380, 380, 467, 2607, 380, 468, + 5, 151, 434, 144, 467, 467, 65, 269, 1478, 65, + 1480, 126, 430, 430, 312, 415, 467, 467, 471, 4266, + 35, 416, 162, 1493, 427, 350, 1496, 380, 310, 256, + 4892, 131, 451, 190, 467, 3203, 4861, 266, 266, 458, + 459, 460, 461, 462, 463, 347, 35, 35, 164, 8, + 302, 269, 11, 4259, 269, 467, 15, 16, 17, 164, + 471, 1531, 468, 467, 388, 4115, 3234, 53, 333, 116, + 467, 409, 1542, 1543, 1544, 1545, 1546, 4127, 468, 468, + 4434, 40, 5, 347, 333, 273, 320, 4293, 47, 21, + 1560, 471, 471, 4482, 467, 467, 32, 256, 467, 144, + 388, 1571, 162, 1573, 74, 4481, 3974, 302, 430, 430, + 3978, 361, 71, 361, 164, 1585, 1586, 4471, 4324, 467, + 164, 4889, 789, 2421, 2318, 1558, 2768, 2250, 4482, 853, + 2934, 3604, 3578, 1309, 4265, 5234, 1606, 5065, 2343, 3124, + 3701, 2751, 4753, 4929, 5167, 3748, 4575, 4523, 4211, 4545, + 2854, 4019, 4020, 2554, 4931, 1625, 5048, 4433, 5156, 4959, + 8, 4958, 3330, 11, 5191, 2858, 3797, 15, 16, 17, + 5085, 1641, 1642, 1643, 1644, 3781, 4898, 3739, 2406, 2406, + 2959, 3599, 3175, 3351, 1654, 893, 3764, 4552, 4435, 4436, + 4437, 1661, 40, 2803, 1664, 3187, 5307, 2400, 4561, 47, + 4247, 5169, 5292, 3128, 1674, 4538, 3133, 1677, 3376, 5098, + 4484, 4715, 1682, 4907, 4487, 27, 3851, 1687, 1149, 1620, + 4684, 180, 2102, 71, 3804, 1165, 185, 2832, 966, 4826, + 1733, 652, 1818, 620, 1674, 1818, 3078, 3628, 4413, 1819, + 3179, 3645, 3410, 5124, 5283, 768, 2042, 206, 207, 1394, + 2043, 1764, 1722, 1723, 3784, 4416, 4021, 5040, 3498, 1286, + 2782, 2082, 221, 1733, 1734, 4471, 1353, 2793, 4318, 3463, + 2788, 5032, 4873, 4005, 2081, 3963, 1334, 3439, 3980, 4653, + 3436, 4850, 4849, 1753, 1754, 3436, 3499, 5287, 5140, 5222, + 1760, 5022, 1762, 4620, 4471, 254, 3389, 4410, 1698, 5035, + 5015, 5036, 2719, 1912, 2771, 2629, 4512, 2717, -1, 268, + -1, 1352, 1915, -1, -1, -1, -1, 1787, -1, 1355, + -1, -1, -1, -1, 1794, 1360, 1796, -1, -1, -1, + 1800, 1801, 180, 1803, -1, -1, -1, 185, -1, -1, + 1810, -1, 4589, -1, -1, -1, -1, 1817, -1, -1, + -1, -1, 1822, 1823, -1, -1, 1826, -1, 206, 207, + 1830, -1, 1832, -1, -1, -1, -1, 1837, 1838, -1, + -1, -1, -1, 221, 1844, 1845, 1846, 4427, -1, 4429, + 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, -1, 1859, + 5167, 1861, 1862, -1, -1, 1865, 355, 4265, -1, -1, + -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, + 1880, 1881, 1882, 1883, -1, -1, -1, 1887, 1888, 4550, + 268, -1, 1892, -1, -1, 1895, -1, -1, 1898, 1899, + 1900, 1901, 1902, 1903, 1904, 1905, 1906, 4663, 1908, -1, + -1, -1, -1, -1, 1914, 1915, -1, 1917, 35, -1, + -1, -1, -1, -1, 1924, -1, -1, 4588, -1, -1, + -1, -1, -1, -1, -1, -1, 8, 54, -1, 11, + -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4732, -1, 4734, -1, -1, + -1, -1, 451, -1, -1, 454, 455, 456, 40, 458, + 459, 460, 461, 462, 463, 47, -1, 355, 89, -1, + -1, -1, -1, -1, -1, -1, 103, 104, 4386, -1, + -1, 4727, 4728, 4391, 111, -1, 4394, -1, -1, 71, + -1, -1, -1, -1, 4740, 4889, -1, -1, 4744, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4754, -1, + 4727, 4728, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4740, -1, -1, -1, 148, -1, -1, + -1, 2041, -1, 2043, -1, 2045, -1, -1, -1, 166, + -1, -1, -1, -1, -1, -1, 3754, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, + 187, 182, -1, 451, -1, -1, 454, 455, 456, 2079, + 458, 459, 460, 461, 462, 463, 2086, -1, 2088, -1, + -1, -1, -1, -1, 25, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 217, -1, 180, -1, + 4887, -1, -1, 185, -1, -1, -1, -1, 235, 2119, + -1, 238, -1, -1, -1, -1, -1, -1, 2128, -1, + 2130, -1, 249, -1, 251, -1, -1, -1, -1, -1, + 251, 4802, 73, -1, -1, -1, -1, 2147, 5054, 221, + -1, -1, 4550, -1, -1, -1, -1, -1, -1, 2159, + -1, 2161, 2162, 280, -1, -1, 2166, -1, 2168, -1, + 2170, 282, 2172, -1, 105, -1, 2176, 288, -1, 2179, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4588, -1, -1, 4970, -1, 4931, 268, 128, -1, 4935, + 2200, 4937, -1, -1, -1, 4941, 4942, 324, 139, -1, + 2210, -1, 323, -1, 325, -1, 327, 4878, 2218, 5125, + 5126, -1, -1, 334, -1, 2225, -1, 344, 159, -1, + -1, 342, -1, 164, 2234, -1, -1, -1, 3936, 350, + -1, -1, -1, -1, -1, -1, -1, 364, -1, 366, + -1, 362, 369, -1, 4652, 2255, -1, -1, -1, 370, + 2260, 2261, -1, -1, -1, 4663, -1, -1, -1, -1, + 2270, 2271, -1, -1, 2274, -1, 2276, 2277, -1, -1, + -1, -1, 213, 355, -1, -1, -1, -1, -1, -1, + -1, 5068, -1, -1, -1, 2295, 3436, -1, 2298, 3439, + -1, -1, -1, 234, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 425, -1, -1, -1, -1, 2319, + 2320, -1, -1, -1, -1, -1, -1, -1, -1, 5065, + -1, 5067, -1, -1, 2334, -1, 2336, 2337, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 467, -1, -1, -1, -1, -1, -1, -1, 5065, -1, + 5067, -1, -1, 4061, -1, -1, 2366, -1, -1, -1, + 301, -1, -1, 304, 2374, 2375, -1, -1, 3518, 451, + -1, 2381, -1, 5160, -1, -1, 458, 459, 460, 461, + 462, 463, -1, 2393, 4792, 2395, -1, -1, -1, 330, + -1, 4099, 5308, 5309, 4802, 5124, 337, 5124, -1, 2409, + 5124, 5124, 2412, 344, 2414, 5192, 5193, 2417, -1, -1, + -1, 2421, 4120, -1, 2424, -1, -1, -1, -1, -1, + -1, 5167, -1, -1, -1, -1, 2436, 2437, 5099, -1, + -1, 372, 5198, -1, -1, -1, 377, -1, -1, 380, + -1, -1, -1, -1, 2454, -1, -1, -1, -1, -1, + -1, 5041, -1, 5124, 2464, -1, 2466, 398, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5198, + 4878, 5198, -1, -1, 5198, 5198, -1, 4185, -1, 2489, + 8, -1, 423, 11, -1, -1, -1, -1, 5234, -1, + -1, -1, -1, 5280, -1, -1, -1, 5243, -1, -1, + -1, -1, -1, -1, -1, -1, 2516, -1, 2518, 2519, + 2520, 2521, 40, 8, -1, -1, 11, 5234, -1, 47, + 15, 16, 17, -1, -1, -1, 5243, 5198, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, + -1, -1, -1, 71, 2554, 40, 5292, -1, -1, -1, + -1, -1, 47, -1, 5283, -1, 5283, -1, -1, 5283, + 5283, 5307, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 5292, 71, -1, -1, -1, + -1, 2591, -1, -1, -1, -1, -1, -1, 4296, -1, + 5307, 2601, -1, -1, -1, -1, -1, 2607, 8, -1, + -1, 11, -1, -1, -1, 15, 16, 17, -1, -1, + 2620, -1, 5283, -1, -1, -1, -1, 3767, 2628, -1, + -1, -1, 32, 2633, -1, -1, -1, -1, -1, -1, + 4338, -1, 8, -1, -1, 11, -1, -1, -1, 15, + 16, 17, -1, -1, -1, -1, 2656, 2657, 2658, -1, + -1, 2661, 180, -1, -1, -1, 32, 185, -1, 2669, + 2670, 2671, 2672, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2682, -1, -1, 2685, -1, 2687, -1, -1, + -1, -1, -1, -1, -1, 180, -1, -1, 2698, 2699, + 185, 5099, 2702, 221, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2714, -1, 2716, -1, 2718, -1, + 2720, 206, 207, -1, 8, -1, 5124, 11, -1, -1, + -1, 15, 16, 17, -1, -1, 221, -1, -1, -1, + 2740, -1, -1, -1, 2744, -1, -1, -1, -1, -1, + 268, 2751, -1, 2753, 2754, 2755, -1, -1, -1, -1, + -1, -1, -1, 1029, -1, -1, -1, -1, -1, 254, + -1, 2771, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 8, 2782, 268, 11, -1, 271, 2787, 15, 16, + 17, 1057, -1, 2793, -1, -1, -1, -1, -1, -1, + 5198, -1, -1, 2803, -1, 32, 206, 2807, -1, -1, + 2810, 1077, 2812, 40, -1, -1, -1, -1, -1, -1, + 47, 1087, -1, -1, -1, -1, -1, 1093, -1, -1, + -1, -1, -1, 1099, 3974, -1, -1, 355, 3978, 1105, + 206, -1, 1108, -1, 71, -1, -1, -1, -1, -1, + -1, -1, -1, 2853, -1, 2855, -1, -1, -1, -1, + 2860, -1, -1, -1, -1, -1, 3, -1, 268, -1, + 355, 8, -1, -1, 11, -1, -1, -1, 15, 16, + 17, -1, -1, -1, -1, 5283, -1, 2887, -1, 2889, + 2890, 2891, -1, -1, -1, 32, -1, -1, 35, -1, + -1, -1, 268, 40, -1, -1, -1, -1, -1, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4618, -1, 206, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 451, 71, -1, -1, -1, -1, -1, + 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, + -1, -1, -1, 180, -1, -1, -1, -1, 185, -1, + 4658, -1, -1, -1, -1, -1, 451, -1, -1, 454, + 455, 456, -1, 458, 459, 460, 461, 462, 463, 206, + 207, -1, -1, -1, 268, -1, 471, -1, -1, -1, + -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, + 3000, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4712, -1, -1, -1, -1, 4717, + 4718, -1, -1, -1, -1, -1, -1, 254, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 268, -1, 180, 271, -1, -1, -1, 185, -1, + -1, -1, -1, -1, 454, 455, 456, -1, 458, 459, + 460, 461, 462, 463, -1, -1, -1, -1, -1, 206, + 207, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4223, 221, -1, -1, -1, 454, 455, + 456, -1, 458, 459, 460, 461, 462, 463, -1, -1, + -1, -1, -1, -1, 3104, -1, -1, -1, -1, 3109, + 3110, -1, -1, -1, -1, -1, -1, 254, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 355, 4827, + -1, 268, -1, -1, 271, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3146, 3147, 3148, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3163, -1, -1, -1, -1, -1, -1, + 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, + -1, -1, -1, -1, -1, 3185, 3186, -1, -1, -1, + -1, -1, -1, -1, -1, 3195, 3196, 3197, -1, -1, + -1, 3201, 35, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3214, -1, -1, -1, 355, -1, + -1, -1, 55, -1, 451, -1, -1, 454, 455, 456, + -1, 458, 459, 460, 461, 462, 463, -1, -1, 4379, + -1, -1, -1, -1, 471, -1, 4386, -1, -1, -1, + -1, 4391, -1, -1, 4394, 4395, 89, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3272, -1, -1, -1, -1, -1, -1, -1, + 4420, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3291, -1, 4433, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3307, -1, -1, + -1, -1, -1, -1, 451, 148, -1, 454, 455, 456, + -1, 458, 459, 460, 461, 462, 463, 3327, 5026, -1, + -1, -1, -1, -1, 20, -1, 3336, -1, -1, 25, + -1, 4481, 3342, -1, 3344, -1, -1, 3347, -1, 182, + -1, -1, 3352, 3353, 3354, 3355, -1, -1, 3358, 3359, + 3360, 3361, 3362, 3363, 3364, 3365, 3366, 3367, -1, -1, + -1, 3371, 3372, 59, -1, -1, -1, -1, -1, 212, + -1, 3381, -1, 4523, 217, 3385, 72, -1, -1, 3389, + -1, -1, -1, -1, -1, -1, -1, 3397, -1, -1, + 3400, 87, 3402, -1, -1, -1, -1, -1, -1, -1, + -1, 3411, -1, -1, 3414, 3415, -1, -1, 251, 3419, + 3420, -1, -1, -1, 3424, -1, 3426, -1, -1, -1, + -1, -1, -1, 3433, 3434, 3435, 3436, -1, -1, 3439, + 3440, -1, 128, -1, 3444, 3445, 3446, -1, -1, 282, + -1, 4591, 3452, 139, -1, 288, -1, -1, 3458, 3459, + 3460, -1, 1728, -1, -1, -1, -1, -1, -1, -1, + 1736, -1, -1, 159, -1, -1, -1, -1, 164, -1, + -1, -1, -1, -1, 3484, -1, 1752, 22, -1, -1, + 323, -1, -1, 28, 327, -1, -1, -1, 3498, -1, + 3500, 334, -1, -1, -1, -1, -1, -1, -1, 342, + -1, -1, 4652, -1, -1, -1, -1, 350, 3518, 3519, + 3520, -1, 3522, -1, -1, -1, -1, -1, -1, 362, + -1, -1, -1, -1, 69, -1, -1, 370, -1, 3539, + 3540, 3541, 3542, -1, -1, -1, -1, -1, 234, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 391, -1, + -1, -1, -1, -1, -1, -1, -1, 7, 3568, -1, + -1, -1, -1, 13, 14, -1, -1, -1, -1, 19, + -1, 21, 268, -1, 119, -1, 3586, 27, 123, -1, + 30, -1, 425, -1, -1, 130, 429, 430, 133, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, + 50, -1, -1, 55, -1, 301, -1, -1, -1, -1, + -1, -1, -1, 158, -1, -1, -1, -1, -1, 4769, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, + -1, 337, 4792, -1, -1, 190, 8, -1, 344, 11, + -1, 347, -1, 15, 16, 17, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 8, 119, 3678, 11, + 32, -1, -1, 15, 16, 17, -1, -1, 40, -1, + -1, 377, -1, -1, -1, 47, -1, -1, 384, -1, + 32, -1, -1, -1, -1, 391, 148, -1, 40, -1, + 4850, -1, 398, -1, 249, 47, 251, 3717, -1, 71, + -1, 3721, -1, 3723, -1, 3725, 261, -1, -1, -1, + -1, -1, 3732, -1, -1, 270, -1, 423, 3738, 71, + 182, 4881, -1, -1, -1, -1, 281, -1, 3748, -1, + -1, -1, -1, -1, -1, -1, 196, -1, -1, -1, + -1, -1, -1, 3763, 204, -1, 206, 3767, 208, 209, + -1, 211, -1, 213, 2040, 217, 216, 3777, 218, -1, + -1, -1, -1, -1, 319, -1, 3786, 322, 323, -1, + -1, -1, -1, -1, -1, -1, -1, 3797, -1, -1, + -1, 3801, -1, -1, -1, 3805, 3806, -1, -1, 251, + -1, -1, -1, -1, -1, 350, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 180, -1, + -1, -1, -1, 185, 3834, -1, 3836, -1, -1, 281, + 282, -1, -1, 3843, -1, -1, 288, -1, 180, 4989, + -1, -1, -1, 185, 206, 207, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, + -1, -1, 3872, -1, 206, 207, -1, 319, -1, 414, + -1, 323, -1, 3883, -1, 327, -1, -1, -1, 221, + -1, -1, 334, -1, -1, -1, -1, -1, 35, -1, + 342, -1, 254, -1, -1, -1, -1, -1, 350, -1, + -1, -1, -1, 3913, 5054, -1, 268, -1, 55, 271, + 362, -1, 254, 3923, 3924, -1, -1, -1, 370, -1, + 3930, 3931, -1, -1, -1, 3935, 268, -1, -1, 271, + 3940, -1, -1, 3943, 3944, -1, -1, -1, 3948, 3949, + -1, -1, 89, -1, 3954, 3955, 3956, 3957, 3958, -1, + -1, -1, 3962, 3963, 3964, 5105, 3966, 3967, -1, -1, + 3970, -1, -1, -1, 3974, -1, -1, -1, 3978, 5119, + -1, -1, -1, 425, 3984, 5125, 5126, -1, -1, -1, + -1, 3991, -1, -1, -1, -1, 3996, -1, -1, -1, + -1, -1, 4002, 355, -1, 8, -1, -1, 11, 4009, + -1, 148, 15, 16, 17, -1, -1, 4017, -1, -1, + -1, 4021, -1, 355, -1, -1, 4026, -1, -1, 32, + -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, + 4040, -1, -1, 4043, 47, 182, -1, -1, -1, -1, + -1, 5191, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4063, 4064, -1, -1, -1, 71, -1, + -1, -1, -1, -1, -1, 212, -1, -1, -1, -1, + 217, 4081, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4094, -1, -1, -1, -1, 451, + -1, -1, 454, 455, 456, -1, 458, 459, 460, 461, + 462, 463, -1, -1, 251, -1, 468, -1, -1, 451, + -1, -1, 454, 455, 456, -1, 458, 459, 460, 461, + 462, 463, -1, 573, -1, -1, 468, -1, -1, -1, + -1, 581, -1, 4143, -1, 282, -1, -1, 588, 589, + 5290, 288, 592, -1, 594, 595, -1, -1, -1, 599, + -1, -1, -1, -1, -1, 4165, -1, -1, 5308, 5309, + 610, -1, -1, -1, -1, -1, -1, 180, -1, -1, + 4180, -1, 185, -1, -1, 625, 323, -1, -1, -1, + 327, -1, -1, -1, -1, -1, -1, 334, -1, -1, + -1, -1, -1, 206, 207, 342, -1, -1, 648, 4209, + 650, -1, -1, 350, -1, -1, -1, -1, 221, 2485, + 660, -1, -1, 4223, -1, 362, 2492, -1, -1, 4229, + -1, -1, -1, 370, -1, -1, -1, -1, 4238, -1, + -1, -1, -1, -1, -1, -1, 2512, -1, -1, -1, + -1, 254, 692, 4253, 391, -1, 2522, -1, -1, -1, + 2526, -1, -1, 2529, -1, 268, 4266, -1, 4268, 2535, + -1, 2537, -1, -1, 2540, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 726, -1, 425, -1, + -1, -1, 429, 8, -1, -1, 11, -1, 4298, -1, + 15, 16, 17, 630, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 32, 22, -1, + -1, -1, -1, -1, 28, 40, -1, 654, -1, -1, + -1, -1, 47, 2599, 4334, -1, -1, 41, -1, -1, + 780, -1, -1, 4343, -1, -1, -1, -1, -1, -1, + -1, -1, 355, -1, -1, -1, 71, -1, -1, -1, + 4360, 4361, -1, -1, 4364, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4379, + -1, -1, 4382, -1, -1, -1, 4386, -1, -1, -1, + -1, 4391, -1, -1, 4394, 4395, -1, 4397, -1, 4399, + -1, 841, 4402, 4403, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 121, -1, 123, + 4420, -1, 4422, -1, -1, -1, 130, -1, -1, 133, + -1, -1, -1, 4433, 4434, 4435, 4436, 4437, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 451, -1, + -1, 454, 455, 456, 158, 458, 459, 460, 461, 462, + 463, -1, -1, -1, -1, 180, -1, -1, -1, -1, + 185, 911, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4481, 4482, -1, -1, -1, 190, 927, -1, -1, + -1, 206, 207, -1, -1, -1, -1, -1, -1, 939, + -1, -1, 942, -1, -1, -1, 221, -1, -1, -1, + -1, -1, 952, -1, -1, -1, -1, 957, -1, -1, + -1, -1, -1, 4523, -1, 965, 4526, -1, -1, -1, + -1, 971, -1, -1, 974, -1, -1, -1, 4538, 254, + -1, 4541, -1, -1, -1, 249, 4546, 251, 4548, -1, + -1, -1, -1, 268, -1, 4555, 271, 261, -1, -1, + -1, -1, -1, -1, -1, -1, 270, -1, -1, -1, + -1, 4571, -1, -1, 1014, 4575, -1, 281, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4589, + 4590, 4591, -1, -1, -1, -1, -1, 2863, -1, -1, + -1, -1, -1, 930, -1, 8, -1, -1, 11, -1, + -1, -1, 15, 16, 17, 319, -1, 4617, 322, 323, + 4620, -1, 4622, -1, -1, -1, 953, -1, -1, 32, + -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, + 355, 968, 4642, -1, 47, -1, 350, -1, 4648, -1, + -1, -1, 4652, -1, -1, -1, 4656, -1, -1, -1, + -1, -1, -1, 4663, -1, -1, -1, -1, 71, -1, + -1, -1, 4672, -1, -1, -1, -1, 2943, -1, 2945, + -1, -1, -1, -1, -1, 1125, -1, 1127, -1, 1129, + -1, 1131, -1, 1133, 1134, 1135, 4696, -1, -1, -1, + 1140, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 414, 1151, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4722, -1, -1, 1052, -1, -1, -1, -1, + -1, 4731, 4732, 4733, 4734, -1, 451, -1, -1, 454, + 455, 456, -1, 458, 459, 460, 461, 462, 463, -1, + -1, -1, -1, 468, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4769, + -1, -1, -1, -1, -1, -1, -1, 180, -1, -1, + -1, -1, 185, -1, -1, -1, -1, -1, -1, 4789, + -1, -1, 4792, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 200, 206, 207, -1, -1, -1, 3074, -1, + -1, -1, 210, -1, 3080, -1, -1, -1, 221, -1, + -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1162, -1, 22, -1, -1, + -1, -1, -1, 28, -1, -1, -1, 4847, -1, -1, + 4850, 254, -1, 4853, -1, -1, 41, 4857, -1, -1, + -1, -1, -1, -1, 4864, 268, -1, -1, 271, 4869, + -1, 4871, -1, 4873, -1, -1, -1, -1, -1, -1, + -1, 4881, -1, -1, 69, -1, -1, 4887, -1, 4889, + -1, -1, -1, -1, 1334, -1, -1, -1, -1, 4899, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 8, -1, -1, 11, -1, -1, -1, 15, + 16, 17, -1, -1, -1, -1, 121, -1, 123, 4939, + 4940, -1, -1, -1, -1, 130, 32, -1, 133, -1, + -1, -1, 355, -1, 40, -1, -1, -1, -1, -1, + -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, + 4970, 1411, -1, 158, -1, -1, 1303, 4977, -1, -1, + -1, 4981, -1, -1, -1, 71, -1, -1, -1, 4989, + -1, -1, 3258, -1, 3260, -1, 3262, -1, -1, -1, + -1, -1, -1, 3269, -1, 190, -1, -1, -1, -1, + -1, -1, -1, -1, 5014, 5015, -1, -1, -1, 5019, + -1, -1, 5022, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5032, -1, -1, 5035, -1, -1, -1, 1479, + 5040, 1368, 3308, -1, -1, -1, -1, -1, 451, -1, + -1, 454, 455, 456, 5054, 458, 459, 460, 461, 462, + 463, -1, -1, -1, 249, 468, 251, -1, 5068, -1, + -1, -1, -1, -1, -1, 5075, 261, -1, -1, -1, + -1, -1, -1, -1, -1, 270, -1, -1, -1, -1, + -1, -1, -1, -1, 180, -1, 281, -1, -1, 185, + 5100, -1, -1, 22, -1, 5105, -1, -1, 1435, 28, + 5110, -1, -1, -1, -1, -1, -1, -1, -1, 5119, + 206, 207, -1, -1, -1, 5125, 5126, 5127, -1, -1, + -1, -1, -1, -1, 319, 221, 5136, 322, 323, -1, + 5140, -1, -1, -1, -1, -1, -1, 1474, -1, -1, + 69, -1, -1, 5153, -1, -1, -1, -1, -1, -1, + 5160, -1, -1, -1, -1, 350, 564, -1, 254, -1, + 1497, -1, 570, -1, -1, -1, 1616, -1, -1, -1, + -1, 8, 268, -1, 11, 271, -1, -1, 15, 16, + 17, 5191, 5192, 5193, -1, -1, -1, -1, -1, -1, + 119, -1, -1, -1, 123, 32, -1, -1, -1, -1, + -1, 130, -1, 40, 133, -1, -1, -1, 5218, 5219, + 47, -1, -1, -1, -1, -1, -1, -1, -1, 414, + -1, -1, -1, -1, -1, -1, -1, -1, 8, 158, + -1, 11, -1, -1, 71, 15, 16, 17, -1, 1576, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 5260, -1, 32, -1, 1591, -1, 5266, -1, -1, 355, + 40, 190, -1, 1600, -1, -1, -1, 47, -1, -1, + 5280, -1, -1, -1, -1, 1612, -1, 5287, -1, -1, + 5290, -1, -1, -1, -1, -1, -1, -1, 1738, -1, + 1740, 71, -1, -1, -1, -1, -1, -1, 5308, 5309, + -1, -1, -1, -1, -1, -1, -1, 1757, -1, 1759, + -1, -1, -1, -1, -1, -1, -1, 725, -1, -1, + 249, -1, 251, 1773, -1, 1775, -1, 1777, -1, 1779, + 1667, 1781, 261, -1, -1, 1785, -1, -1, -1, -1, + -1, 270, 750, 180, 1681, -1, -1, -1, 185, -1, + -1, -1, 281, -1, -1, 451, 1693, -1, 454, 455, + 456, 769, 458, 459, 460, 461, 462, 463, 1705, 206, + 207, -1, 468, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 790, -1, 221, -1, -1, -1, -1, -1, + 319, -1, -1, 322, 323, -1, -1, -1, -1, -1, + 180, -1, -1, -1, -1, 185, -1, -1, 1745, 1746, + -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, + -1, 350, -1, -1, -1, -1, 206, 207, -1, -1, + -1, 268, -1, -1, 271, -1, -1, -1, -1, -1, + -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 862, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 254, -1, 22, -1, -1, -1, + -1, -1, 28, -1, -1, 414, -1, -1, 268, -1, + -1, 271, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 355, -1, + -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1879, -1, -1, -1, -1, -1, -1, -1, + 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, + -1, -1, 3838, -1, -1, -1, 3842, -1, -1, -1, + 978, -1, -1, -1, 32, 355, -1, 123, -1, -1, + -1, -1, 40, -1, 130, -1, -1, 133, -1, 47, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1007, + 1008, 1009, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 158, 71, 451, -1, -1, 454, 455, 456, + -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, + -1, 468, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2091, 2092, -1, 190, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2110, 2111, -1, -1, -1, 2115, 2116, -1, -1, -1, + 2120, 451, -1, -1, 454, 455, 456, -1, 458, 459, + 460, 461, 462, 463, 2134, -1, -1, -1, 468, -1, + -1, 2141, -1, -1, -1, 2145, 2146, -1, -1, 2149, + 2150, -1, -1, 249, -1, 251, 2156, -1, -1, -1, + -1, -1, -1, -1, -1, 261, -1, -1, -1, 2169, + -1, 2171, 180, -1, 270, -1, -1, 185, -1, -1, + -1, -1, -1, -1, -1, 281, -1, -1, -1, 1147, + 2190, -1, -1, -1, -1, 2195, -1, -1, 206, 207, + -1, -1, -1, -1, -1, -1, -1, -1, 2208, -1, + 2097, -1, -1, 221, 2101, 2102, -1, 2217, -1, 2219, + 1178, -1, 2222, 2223, 2224, -1, 322, 323, -1, 2229, + 2230, -1, -1, 4059, -1, -1, -1, -1, -1, 2239, + -1, -1, -1, -1, 2244, -1, 254, -1, -1, 2249, + -1, -1, 35, -1, 350, -1, -1, -1, -1, -1, + 268, -1, -1, 271, -1, 2265, -1, -1, -1, -1, + -1, -1, 55, 2273, 4100, 4101, 2163, -1, -1, -1, + -1, -1, -1, -1, 2284, -1, -1, -1, 2175, -1, + -1, -1, -1, -1, -1, -1, 2296, -1, -1, 2299, + -1, -1, -1, -1, 2304, -1, 89, -1, -1, 2309, + 2310, -1, -1, -1, 2314, -1, -1, 2317, 414, -1, + -1, 2321, 2322, 2323, 2324, -1, 2326, -1, 2215, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2339, + 2340, -1, 2342, -1, -1, -1, -1, 355, -1, -1, + -1, -1, 2352, 2353, -1, -1, 1314, -1, -1, 8, + 4186, 4187, 11, -1, -1, 148, 15, 16, 17, -1, + -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, + 11, -1, -1, 32, 15, 16, 17, -1, -1, -1, + -1, 40, -1, -1, -1, -1, -1, -1, 47, 182, + -1, 32, -1, 1361, 2404, -1, -1, -1, -1, 40, + -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, + -1, -1, 71, -1, -1, -1, -1, -1, -1, 212, + -1, -1, 2432, -1, 217, -1, -1, -1, -1, -1, + 71, -1, -1, 451, -1, -1, 454, 455, 456, -1, + 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, + 468, -1, -1, -1, -1, -1, -1, -1, 251, -1, + -1, -1, -1, -1, -1, 4301, -1, 4303, 4304, 8, + -1, -1, 11, 1441, -1, -1, 15, 16, 17, -1, + -1, 4317, 1450, -1, -1, -1, -1, -1, -1, 282, + -1, -1, -1, 32, -1, 288, -1, 2394, -1, -1, + -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, + -1, 8, 1480, -1, 11, -1, -1, -1, 15, 16, + 17, 180, -1, -1, -1, 1493, 185, -1, 1496, -1, + 323, -1, 71, -1, 327, 32, -1, -1, -1, 180, + -1, 334, -1, 40, 185, -1, -1, 206, 207, 342, + 47, -1, -1, -1, -1, -1, -1, 350, -1, -1, + -1, -1, 221, -1, -1, 206, 207, -1, -1, 362, + -1, -1, -1, -1, 71, -1, -1, 370, 1546, 2476, + 221, -1, 2592, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1560, -1, -1, 254, -1, -1, 391, -1, + -1, -1, -1, -1, -1, 1573, -1, -1, -1, 268, + -1, 2621, 271, 254, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, + 271, -1, 425, -1, -1, -1, 429, -1, -1, -1, + -1, 180, -1, -1, -1, -1, 185, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1625, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 206, 207, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 221, 180, -1, -1, 1654, -1, 185, -1, + 2587, -1, -1, 1661, -1, -1, 355, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2604, -1, 206, + 207, -1, -1, -1, 355, 254, -1, -1, -1, -1, + 2617, -1, -1, -1, 221, -1, -1, -1, -1, 268, + -1, -1, 271, -1, -1, -1, -1, -1, -1, -1, + 22, -1, -1, -1, -1, -1, 28, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 268, -1, -1, 271, -1, -1, 4613, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 69, -1, -1, + -1, -1, 451, -1, 1762, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, -1, -1, -1, -1, 468, + 451, -1, -1, 454, 455, 456, 355, 458, 459, 460, + 461, 462, 463, -1, -1, -1, -1, 468, -1, -1, + -1, -1, 1800, 1801, -1, -1, -1, -1, -1, -1, + -1, 123, -1, -1, -1, -1, -1, -1, 130, 1817, + 4686, 133, -1, -1, -1, -1, -1, -1, 355, -1, + -1, -1, -1, -1, -1, 2875, -1, -1, -1, 2879, + -1, -1, -1, -1, -1, 2885, 158, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2901, 2902, -1, -1, -1, 2906, -1, -1, -1, + 4736, 2911, 2912, 2913, -1, 2915, -1, -1, 190, -1, + -1, -1, 451, -1, -1, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, 2822, 2936, -1, 2825, 468, + 2827, -1, -1, -1, -1, 2832, 2946, 2947, 2948, 2949, + -1, -1, -1, -1, -1, -1, 1914, -1, -1, -1, + -1, -1, -1, -1, 451, -1, 1924, 454, 455, 456, + -1, 458, 459, 460, 461, 462, 463, 249, -1, 251, + -1, 468, -1, 2983, -1, -1, 2986, 2987, 2988, 261, + -1, -1, -1, -1, 2881, -1, -1, -1, 270, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, + -1, 2898, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + -1, -1, -1, -1, -1, 28, 2923, -1, -1, -1, + -1, -1, 35, -1, -1, -1, -1, 319, -1, -1, + 322, 323, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 69, -1, 350, -1, + -1, -1, -1, 2041, -1, 2043, -1, -1, 3088, -1, + -1, -1, 8, -1, -1, 11, 3096, -1, -1, 15, + 16, 17, -1, -1, -1, 2992, -1, 2994, -1, -1, + 103, -1, -1, -1, 3114, -1, 32, -1, -1, -1, + 36, 2079, -1, -1, 40, -1, -1, -1, -1, -1, + 123, 47, -1, -1, -1, -1, -1, 130, -1, -1, + 133, 3141, 414, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 71, 0, -1, -1, -1, + -1, -1, -1, -1, -1, 158, -1, -1, -1, -1, + -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 28, -1, 30, 31, 3075, -1, + -1, -1, -1, 3193, 187, -1, -1, 190, 3198, -1, + -1, -1, 46, -1, 120, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3103, -1, -1, -1, + -1, -1, 66, -1, 68, 69, -1, -1, 3228, -1, + -1, 75, -1, 77, -1, -1, -1, -1, -1, 3126, + -1, -1, 235, -1, 88, 238, 90, 3134, -1, -1, + -1, -1, -1, -1, -1, -1, 249, -1, 251, -1, + -1, -1, -1, 107, 180, 3265, 110, 3267, 261, 185, + -1, -1, -1, -1, -1, -1, 2234, 270, -1, -1, + 124, -1, 126, -1, -1, -1, 130, 280, 281, -1, + 206, 207, 136, -1, -1, -1, -1, 2255, -1, -1, + 144, -1, 146, -1, -1, 221, -1, -1, 152, -1, + -1, -1, -1, -1, -1, -1, 3203, -1, -1, -1, + -1, -1, -1, -1, 168, 5151, 319, -1, -1, 322, + 323, 324, -1, -1, 3221, -1, -1, -1, 254, -1, + 184, -1, -1, -1, -1, -1, -1, 3234, -1, -1, + -1, 344, 268, -1, -1, 271, -1, 350, -1, -1, + -1, 2319, 2320, -1, -1, -1, -1, -1, -1, -1, + -1, 364, -1, -1, -1, -1, -1, -1, -1, 223, + 224, -1, -1, -1, -1, 229, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 241, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, + -1, -1, -1, -1, -1, -1, -1, 189, -1, -1, + -1, 414, -1, -1, -1, -1, 198, 199, -1, -1, + -1, -1, -1, -1, -1, 207, -1, -1, -1, 355, + -1, -1, -1, 3330, 288, -1, -1, -1, 220, -1, + -1, -1, 296, -1, -1, -1, 2414, -1, -1, -1, + -1, -1, -1, -1, 3351, 309, -1, -1, -1, -1, + -1, 315, 316, -1, 318, -1, -1, -1, -1, 323, + -1, -1, -1, -1, 328, -1, -1, 331, -1, 3376, + -1, -1, 336, -1, -1, 411, -1, -1, 342, 343, + -1, -1, -1, -1, -1, -1, 350, -1, -1, -1, + 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 364, -1, -1, 3410, -1, 3525, -1, 3527, -1, -1, + -1, -1, -1, 377, 3534, 451, -1, -1, 454, 455, + 456, -1, 458, 459, 460, 461, 462, 463, 8, -1, + 3550, 11, 396, -1, -1, 15, 16, 17, -1, -1, + -1, -1, 406, -1, -1, -1, 3566, 8, 412, -1, + 11, -1, 32, 417, 15, 16, 17, 22, -1, -1, + 40, -1, -1, 28, 3584, -1, 430, 47, -1, -1, + -1, 32, -1, -1, -1, -1, -1, -1, -1, 40, + -1, -1, 3602, -1, -1, -1, 47, -1, -1, 453, + -1, 71, 3612, -1, -1, -1, -1, -1, -1, 3506, + -1, -1, -1, 467, 69, -1, 470, -1, -1, -1, + 71, 3631, -1, 2591, -1, -1, -1, -1, -1, -1, + -1, -1, 3642, 3643, 3644, -1, -1, -1, -1, 3649, + 3650, 3651, 3652, -1, -1, 3655, 3656, -1, -1, -1, + -1, 3661, 3662, -1, 3664, 3665, 3666, 3667, 3668, 3669, + -1, 3671, -1, -1, -1, -1, -1, -1, 123, -1, + 3680, -1, -1, 3683, 3684, 130, -1, 8, 133, -1, + 11, -1, -1, -1, 15, 16, 17, -1, -1, -1, + -1, -1, 3702, -1, -1, -1, -1, -1, -1, -1, + -1, 32, -1, 158, -1, -1, -1, -1, 3605, 40, + 180, -1, -1, -1, 3724, 185, 47, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, + -1, -1, 3629, -1, 185, 190, 206, 207, -1, -1, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 221, -1, -1, -1, 206, 207, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 221, -1, -1, -1, -1, -1, 2744, -1, -1, -1, + -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, + 572, -1, -1, -1, 249, -1, 251, -1, 268, -1, + -1, 271, 584, 254, -1, -1, 261, -1, 590, -1, + -1, -1, -1, 3823, -1, 270, -1, 268, -1, -1, + 271, 603, -1, -1, -1, -1, 281, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 619, -1, -1, + -1, -1, 624, -1, -1, 3855, -1, -1, 630, 180, + -1, -1, 634, 635, 185, -1, -1, 3754, -1, -1, + 642, -1, -1, -1, 319, -1, -1, 322, 323, -1, + -1, -1, 654, 655, -1, 206, 207, -1, -1, -1, + -1, -1, -1, 665, -1, 355, -1, -1, -1, -1, + 221, -1, -1, -1, -1, 350, -1, -1, -1, -1, + -1, -1, -1, -1, 355, -1, -1, 3804, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, + 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 414, + -1, -1, -1, -1, -1, 747, 748, -1, -1, -1, + -1, 753, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 451, -1, -1, 454, 455, 456, -1, 458, 459, + 460, 461, 462, 463, -1, -1, -1, 779, 468, -1, + 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, + 461, 462, 463, -1, -1, -1, -1, 468, -1, -1, + -1, -1, -1, -1, 355, -1, -1, -1, -1, 3926, + -1, -1, 3000, -1, -1, -1, -1, -1, -1, 3936, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, + -1, -1, 11, -1, -1, -1, 15, 16, 17, 4069, + -1, -1, -1, 4073, 4074, 4075, 4076, -1, -1, 4079, + -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, + -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4110, 4111, 4112, -1, 4114, -1, 4116, 4117, -1, -1, + -1, -1, 71, -1, -1, -1, -1, -1, 4128, 4129, + 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, + 461, 462, 463, -1, -1, -1, -1, 468, -1, -1, + -1, 923, -1, -1, -1, 4155, -1, -1, 930, -1, + -1, -1, 934, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4061, -1, -1, -1, 4178, -1, + -1, 953, -1, -1, 8, -1, -1, 11, 3146, 3147, + 3148, 15, 16, 17, -1, -1, 968, -1, -1, -1, + -1, -1, -1, -1, -1, 3163, -1, -1, 32, -1, + -1, -1, 4099, -1, -1, -1, 40, -1, -1, -1, + -1, -1, -1, 47, -1, -1, 22, -1, 3186, -1, + -1, 180, 28, 4120, -1, -1, 185, -1, 3196, 3197, + -1, 1013, -1, 3201, -1, -1, -1, 71, -1, -1, + -1, -1, 4252, -1, -1, -1, 3214, 206, 207, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 221, 69, -1, -1, -1, -1, -1, -1, + 1052, 4281, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4185, -1, + -1, -1, -1, -1, -1, 254, 4306, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1089, -1, 268, + -1, -1, 271, -1, -1, -1, -1, 123, -1, -1, + -1, 1103, -1, -1, 130, -1, -1, 133, -1, -1, + 1112, -1, -1, -1, -1, -1, -1, -1, 1120, 3307, + -1, -1, -1, -1, -1, -1, 180, -1, -1, -1, + -1, 185, 158, 8, -1, -1, 11, -1, -1, -1, + 15, 16, 17, -1, -1, -1, 1148, -1, -1, -1, + -1, -1, 206, 207, -1, -1, -1, 32, -1, -1, + 1162, -1, 1164, -1, 190, 40, -1, 221, -1, -1, + -1, -1, 47, -1, -1, -1, 355, 1179, -1, 4296, + 1182, -1, -1, 4413, -1, -1, -1, -1, -1, -1, + -1, -1, 1194, -1, -1, -1, 71, -1, -1, -1, + 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 268, -1, -1, 271, -1, -1, + -1, 4338, 1224, 249, -1, 251, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 261, -1, -1, -1, -1, + -1, -1, -1, 4473, 270, 3433, 3434, 3435, -1, -1, + 1252, 1253, 1254, -1, 1256, 281, -1, -1, -1, -1, + -1, 4491, -1, -1, -1, -1, 4496, 4497, -1, -1, + -1, -1, 451, -1, 1276, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, -1, -1, -1, -1, 468, + -1, -1, -1, 319, -1, -1, 322, 323, 1300, -1, + -1, 355, -1, -1, -1, 180, 1308, 1309, -1, -1, + 185, -1, -1, -1, -1, 1317, 1318, 4547, -1, -1, + -1, -1, -1, -1, 350, -1, -1, -1, -1, -1, + -1, 206, 207, -1, -1, -1, -1, 4567, -1, -1, + -1, -1, -1, 1345, -1, -1, 221, 1349, 1350, -1, + -1, -1, -1, -1, 4471, -1, -1, -1, -1, -1, + 8, -1, 1364, 11, -1, -1, 1368, 15, 16, 17, + -1, -1, -1, 1375, 4604, -1, -1, -1, -1, 254, + -1, 4611, -1, -1, 32, -1, -1, -1, 414, -1, + -1, -1, 40, 268, -1, -1, 271, 451, -1, 47, + 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, + -1, -1, -1, -1, 468, -1, -1, -1, -1, -1, + -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1435, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4679, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4700, -1, 1474, -1, -1, -1, 4593, -1, -1, 8, + 355, 4711, 11, -1, -1, -1, 15, 16, 17, -1, + -1, -1, -1, -1, -1, 1497, -1, -1, -1, -1, + -1, 4618, -1, 32, -1, -1, -1, -1, -1, -1, + -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 180, 3721, -1, -1, -1, 185, -1, -1, + -1, 4658, 71, 4773, 3732, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1556, -1, -1, -1, 206, 207, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 221, 1576, 3763, 451, -1, -1, 454, + 455, 456, -1, 458, 459, 460, 461, 462, 463, 1591, + -1, -1, -1, 468, -1, 4712, -1, -1, 1600, -1, + 4717, 4718, -1, -1, 4834, 1607, 254, -1, -1, 3797, + 1612, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 268, -1, -1, 271, -1, -1, -1, -1, -1, 1631, + -1, -1, -1, -1, -1, -1, -1, 1639, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1651, + -1, 180, -1, -1, -1, 3843, 185, -1, -1, -1, + -1, -1, -1, -1, -1, 1667, 4896, -1, -1, -1, + -1, -1, 1674, -1, -1, 1677, -1, 206, 207, 1681, + -1, 4911, -1, -1, -1, 1687, -1, -1, -1, -1, + -1, 1693, 221, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1705, -1, -1, -1, 355, -1, -1, + 4827, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1722, 1723, -1, 1725, 1726, 254, -1, -1, -1, -1, + 4960, -1, -1, -1, -1, 1737, -1, -1, -1, 268, + -1, -1, 271, 1745, 1746, 4975, 1748, 1749, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1764, -1, -1, -1, -1, 3955, 3956, 3957, + 3958, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1796, -1, -1, -1, -1, -1, + -1, -1, -1, 451, -1, -1, 454, 455, 456, -1, + 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, + 468, -1, -1, 5053, -1, -1, 355, -1, 1830, -1, + 1832, -1, -1, -1, -1, 1837, 1838, -1, -1, -1, + -1, -1, 1844, 1845, 1846, -1, -1, -1, 1850, -1, + 1852, 1853, 1854, 1855, 1856, 1857, -1, 1859, -1, 1861, + 1862, -1, -1, 1865, -1, 5095, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1879, 1880, 1881, + 1882, 1883, 1884, -1, -1, -1, 1888, -1, -1, -1, + 1892, -1, -1, 1895, -1, -1, 1898, 1899, 1900, 1901, + 1902, 1903, 1904, 1905, 1906, -1, 1908, -1, -1, 5026, + -1, -1, -1, 1915, -1, 1917, -1, -1, -1, -1, + -1, -1, 451, -1, -1, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, -1, -1, -1, -1, 468, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5179, + -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, + 11, -1, -1, -1, 15, 16, 17, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, + 11, 32, -1, -1, 15, 16, 17, -1, -1, 40, + -1, -1, -1, -1, -1, -1, 47, 8, -1, -1, + 11, 32, -1, -1, 15, 16, 17, -1, -1, 40, + -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, + 71, 32, -1, -1, -1, -1, -1, -1, -1, 40, + -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, + 71, -1, -1, 2045, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, + -1, -1, -1, -1, -1, -1, -1, -1, 2090, 8, + -1, -1, 11, -1, 32, 2097, 15, 16, 17, 2101, + 2102, -1, 40, -1, -1, -1, 2108, -1, -1, 47, + 4298, 2113, 2114, 32, -1, -1, 2118, -1, -1, -1, + -1, 40, -1, -1, 2126, -1, 157, -1, 47, 180, + -1, 162, -1, 71, 185, -1, -1, 22, -1, -1, + -1, -1, 2144, 28, -1, 2147, -1, -1, -1, 180, + -1, -1, 71, -1, 185, 206, 207, 2159, -1, -1, + -1, 2163, -1, -1, 2166, -1, -1, -1, -1, 180, + 221, -1, -1, 2175, 185, 206, 207, -1, -1, -1, + -1, -1, -1, -1, 69, -1, 2188, -1, -1, -1, + 221, -1, -1, -1, -1, 206, 207, -1, -1, -1, + -1, -1, -1, 254, 2206, 2207, -1, -1, -1, -1, + 221, -1, -1, 2215, -1, -1, -1, 268, 156, -1, + 271, -1, -1, 254, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2237, 2238, 268, 123, 2241, + 271, -1, 180, 254, -1, 130, -1, 185, 133, -1, + -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, + 271, 180, 2264, -1, 2266, -1, 185, -1, 206, 207, + 2272, -1, -1, 158, -1, -1, -1, 2279, -1, -1, + -1, 2283, -1, 221, 295, -1, -1, 206, 207, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2303, 221, -1, 355, 190, 2308, -1, -1, -1, + 2312, -1, -1, 2315, -1, -1, 254, -1, -1, -1, + -1, -1, -1, 2325, 355, -1, -1, -1, -1, -1, + 268, -1, -1, 271, -1, 254, 2338, -1, 4526, -1, + -1, -1, -1, -1, 355, -1, 2348, -1, -1, 268, + -1, -1, 271, 4541, -1, 293, -1, -1, 4546, -1, + 371, -1, -1, -1, 249, -1, 251, -1, -1, -1, + 289, -1, -1, -1, -1, -1, 261, -1, -1, -1, + -1, -1, -1, 4571, -1, 270, -1, -1, -1, -1, + -1, 2393, 2394, -1, -1, -1, 281, -1, -1, -1, + 451, 2403, 4590, 454, 455, 456, -1, 458, 459, 460, + 461, 462, 463, -1, -1, 466, -1, 355, -1, -1, + 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, + 461, 462, 463, -1, 319, 2437, 355, 322, 323, -1, + 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, + 461, 462, 463, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 8, 350, -1, 11, -1, -1, + -1, 15, 16, 17, 2476, -1, -1, -1, 2480, -1, + -1, -1, -1, -1, -1, -1, -1, 2489, 32, -1, + -1, 35, -1, -1, -1, -1, 40, -1, -1, -1, + -1, -1, -1, 47, -1, -1, 22, -1, 4696, -1, + -1, -1, 28, 451, -1, -1, 454, 455, 456, -1, + 458, 459, 460, 461, 462, 463, -1, 71, -1, 414, + -1, 2533, 451, -1, -1, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, + -1, -1, -1, 69, -1, -1, -1, -1, -1, 8, + -1, -1, 11, -1, -1, -1, 15, 16, 17, 2571, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 32, -1, 2587, 35, 2589, -1, -1, + -1, 40, -1, -1, -1, 2597, -1, -1, 47, 2601, + -1, 4789, 2604, -1, -1, 2607, -1, 123, -1, -1, + -1, -1, -1, -1, 130, 2617, -1, 133, -1, -1, + -1, -1, 71, -1, -1, -1, 2628, -1, -1, -1, + -1, 2633, -1, -1, -1, -1, 180, -1, -1, -1, + -1, 185, 158, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2656, 2657, 2658, -1, -1, 2661, + -1, -1, 206, 207, -1, -1, -1, 2669, 2670, 2671, + 2672, -1, -1, -1, 190, 2677, -1, 221, -1, -1, + 2682, 2683, -1, 2685, -1, 2687, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2698, 2699, -1, -1, + 2702, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 254, -1, -1, -1, 2716, -1, 2718, -1, 2720, -1, + -1, -1, -1, -1, 268, -1, -1, 271, -1, -1, + -1, 180, -1, 249, -1, 251, 185, -1, 2740, -1, + -1, -1, -1, -1, -1, 261, -1, -1, -1, 2751, + -1, 2753, 2754, 2755, 270, -1, -1, 206, 207, -1, + -1, -1, -1, -1, -1, 281, 2768, -1, -1, 2771, + -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, + 2782, -1, -1, -1, -1, 2787, -1, -1, -1, -1, + -1, 2793, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2803, -1, 319, -1, 254, 322, 323, -1, -1, + -1, 355, -1, -1, -1, -1, -1, -1, -1, 268, + 2822, -1, 271, 2825, 8, 2827, -1, 11, -1, 22, + 2832, 15, 16, 17, 350, 28, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2847, 2848, -1, 32, -1, + -1, 2853, -1, -1, -1, -1, 40, -1, -1, -1, + -1, -1, 8, 47, -1, 11, -1, -1, -1, 15, + 16, 17, 2874, -1, -1, 2877, 69, -1, -1, 2881, + -1, -1, -1, -1, -1, -1, 32, 71, -1, 35, + -1, -1, -1, -1, 40, -1, 2898, -1, 414, -1, + -1, 47, -1, -1, -1, -1, 355, 451, -1, -1, + 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, + -1, 2923, -1, -1, -1, 71, -1, -1, -1, -1, + 123, -1, -1, -1, -1, -1, -1, 130, -1, -1, + 133, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2958, 2959, 2960, -1, + -1, -1, -1, -1, -1, 158, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 162, -1, + 2982, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2992, -1, 2994, -1, -1, -1, 180, 190, -1, -1, + 3002, 185, 451, -1, -1, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, 3017, -1, -1, -1, -1, + -1, -1, 206, 207, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 180, -1, -1, 221, -1, 185, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 249, -1, 251, -1, + 206, 207, -1, -1, -1, -1, -1, -1, 261, -1, + 254, -1, -1, 3075, -1, 221, -1, 270, -1, -1, + -1, -1, -1, -1, 268, -1, -1, 271, 281, -1, + -1, -1, -1, 3095, -1, -1, -1, -1, -1, -1, + -1, 3103, -1, -1, -1, -1, -1, -1, 254, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 268, -1, 3126, 271, 319, -1, -1, 322, + 323, 3133, 3134, -1, 8, -1, -1, 11, 3140, -1, + 3142, 15, 16, 17, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3155, -1, 3157, -1, 350, 32, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, - 4588, -1, 46, -1, -1, -1, -1, -1, -1, -1, - 3965, 3966, 3967, -1, 3969, -1, 3971, 3972, -1, 176, - -1, -1, -1, 976, 181, -1, 70, -1, 3983, 3984, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 202, 203, -1, -1, 4004, - -1, -1, -1, -1, -1, 8, 4011, 4012, 11, 4014, - 217, 1014, 15, 16, 17, -1, -1, 25, -1, 3923, - -1, 4026, -1, -1, -1, -1, -1, -1, -1, 32, - -1, -1, 35, -1, -1, -1, -1, 40, -1, -1, - -1, -1, 249, 46, -1, -1, 1049, -1, -1, -1, - 3954, -1, -1, -1, -1, 262, -1, -1, 265, -1, - -1, -1, -1, 71, -1, -1, 1069, 70, -1, -1, - 1073, 3975, -1, -1, -1, -1, -1, 85, 1081, -1, - -1, 4086, 176, -1, -1, -1, 3990, 181, -1, -1, - -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, - -1, 109, 4107, -1, -1, -1, 1109, -1, 202, 203, - -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, - 1123, -1, 1125, 217, -1, -1, -1, -1, 136, 4033, - -1, -1, 4137, -1, -1, -1, 144, 1140, 345, -1, - 1143, -1, -1, -1, -1, -1, -1, -1, 156, -1, - -1, -1, 1155, 161, -1, 249, -1, -1, -1, 167, - -1, -1, -1, -1, -1, -1, -1, -1, 262, -1, - -1, 265, -1, 176, -1, -1, 184, -1, 181, -1, - -1, 1184, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 202, - 203, 209, -1, -1, -1, -1, 4211, -1, -1, 1212, - 1213, 1214, -1, 1216, 217, -1, -1, -1, 4122, -1, - -1, 4226, 230, -1, -1, -1, -1, -1, -1, -1, - -1, 438, -1, 1236, 441, 442, 443, -1, 445, 446, - 447, 448, 449, 450, -1, -1, 249, -1, -1, -1, - -1, 345, -1, -1, 262, -1, -1, 1260, -1, 262, - 8, -1, 265, 11, 4168, 1268, 1269, 15, 16, 17, - -1, -1, -1, -1, 1277, 1278, 284, -1, -1, -1, - 374, -1, -1, -1, 32, -1, 294, -1, -1, 4294, - -1, -1, 40, -1, -1, -1, -1, -1, 46, -1, - -1, -1, -1, -1, 1307, -1, -1, -1, 1311, 1312, - 4315, -1, -1, 321, -1, 4320, 4321, -1, 326, -1, - 328, -1, 70, -1, 1327, -1, 334, -1, -1, 337, - 1333, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 345, -1, 438, -1, -1, 441, 442, 443, - -1, 445, 446, 447, 448, 449, 450, 365, 366, -1, - 4365, 369, -1, -1, -1, 373, -1, -1, -1, -1, - -1, -1, -1, -1, 382, -1, -1, -1, -1, 387, - -1, -1, -1, -1, -1, -1, -1, -1, 4292, -1, - 1393, 399, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 412, -1, 4411, -1, -1, -1, - -1, -1, -1, 4418, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1430, 176, -1, - -1, -1, -1, 181, -1, 438, -1, -1, 441, 442, - 443, -1, 445, 446, 447, 448, 449, 450, 4453, -1, - -1, -1, -1, -1, 202, 203, -1, -1, -1, 4464, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 217, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4486, -1, -1, -1, -1, 1489, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4400, -1, -1, -1, - -1, 249, -1, -1, 4509, -1, -1, 1510, -1, -1, - -1, -1, -1, 4518, 262, -1, -1, 265, -1, -1, - -1, -1, 1525, -1, 4428, -1, -1, -1, -1, -1, - 1533, -1, -1, -1, 4539, -1, 1539, -1, -1, -1, - -1, 1544, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1560, -1, -1, - -1, 1564, 4466, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1576, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1591, -1, - -1, -1, -1, -1, -1, 1598, -1, 345, -1, -1, - -1, 1604, -1, -1, -1, -1, -1, 1610, -1, -1, - -1, -1, -1, 1616, -1, 4519, -1, 4622, -1, 4523, - 4524, -1, -1, -1, -1, 1628, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4644, - -1, -1, -1, -1, 1647, -1, 1649, 1650, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1662, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1672, - -1, -1, 1675, 4678, 1677, 1678, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1689, -1, 4693, -1, - 438, -1, -1, 441, 442, 443, -1, 445, 446, 447, - 448, 449, 450, -1, -1, -1, -1, -1, -1, -1, - -1, 4615, -1, -1, -1, -1, -1, -1, 1721, -1, - -1, -1, -1, -1, -1, 4730, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1755, -1, 1757, -1, -1, -1, -1, 1762, - 1763, -1, -1, -1, -1, -1, 1769, 1770, 1771, -1, - -1, -1, 1775, -1, 1777, 1778, 1779, 1780, 1781, 1782, - -1, 1784, -1, 1786, 1787, -1, -1, 1790, -1, -1, - -1, -1, -1, -1, -1, -1, 4801, -1, -1, -1, - -1, 1804, 1805, 1806, 1807, 1808, 1809, -1, -1, -1, - 1813, -1, -1, -1, 1817, -1, -1, 1820, -1, -1, - 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, -1, - 1833, -1, 4837, -1, -1, 20, -1, 1840, -1, 1842, - 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, - 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 103, -1, - -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 136, -1, -1, -1, -1, -1, 20, -1, 144, - -1, -1, 25, -1, -1, -1, -1, 1970, -1, -1, - -1, 156, -1, -1, 37, -1, -1, -1, 163, -1, - -1, -1, 167, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 58, -1, -1, -1, 184, - -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, - -1, -1, -1, -1, -1, -1, 2019, -1, -1, -1, - 2023, 2024, 85, -1, -1, -1, -1, -1, -1, -1, - 2033, -1, -1, -1, 2037, 2038, 221, -1, -1, 2042, - 103, -1, -1, -1, -1, 230, -1, 2050, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 125, -1, -1, 2068, -1, -1, 2071, -1, - -1, -1, -1, 136, -1, -1, -1, 262, -1, 2082, - 265, 144, -1, 2086, -1, -1, 2089, -1, -1, -1, - -1, -1, -1, 156, -1, 2098, -1, -1, 161, 284, - -1, -1, -1, -1, 167, -1, -1, -1, 2111, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 303, -1, - -1, 184, -1, -1, -1, -1, 2129, 2130, -1, -1, - -1, -1, -1, -1, -1, 2138, 321, -1, -1, -1, - -1, -1, -1, 328, -1, -1, -1, -1, -1, 334, - -1, -1, 337, -1, -1, -1, -1, 2160, 2161, -1, - -1, 2164, -1, -1, -1, -1, -1, 230, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 366, -1, -1, 369, 370, -1, 372, 373, -1, - 2193, -1, -1, -1, 2197, -1, -1, 382, -1, 262, - -1, -1, 387, -1, -1, -1, -1, -1, 393, -1, - 273, 396, 2215, -1, 399, -1, -1, -1, -1, -1, - -1, 284, -1, 2226, -1, -1, -1, 412, -1, -1, - -1, 294, -1, -1, -1, -1, 2239, -1, -1, -1, - -1, -1, -1, -1, 2247, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 321, -1, - -1, -1, -1, 326, -1, 328, -1, -1, -1, -1, - -1, 334, -1, -1, 337, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2292, - 2293, -1, -1, -1, -1, -1, -1, -1, 2301, -1, - -1, -1, -1, 366, -1, -1, 369, -1, -1, -1, - 373, -1, -1, -1, -1, -1, -1, 380, -1, 382, - -1, -1, -1, -1, 387, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 399, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 412, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2363, -1, -1, -1, 2367, -1, -1, -1, -1, -1, - -1, -1, -1, 2376, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2429, -1, -1, -1, - -1, 2434, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 20, -1, - -1, -1, -1, 25, -1, -1, -1, -1, -1, -1, - -1, -1, 2465, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2481, -1, - 2483, -1, -1, -1, -1, -1, 58, -1, 2491, -1, - -1, -1, 2495, -1, -1, 2498, -1, -1, 2501, 71, - 72, -1, -1, -1, -1, -1, 2509, -1, -1, 81, - -1, -1, -1, 85, -1, -1, 2519, -1, -1, -1, - -1, 2524, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 103, -1, -1, -1, -1, 201, -1, -1, -1, - -1, -1, -1, 208, 2547, 2548, 2549, -1, -1, 2552, - -1, -1, -1, 125, 219, -1, -1, 2560, 2561, 2562, - 2563, -1, -1, -1, 136, 2568, -1, -1, -1, -1, - 2573, 2574, 144, 2576, -1, 2578, -1, -1, -1, -1, - -1, -1, -1, -1, 156, -1, 2589, 2590, -1, 161, - 2593, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2607, -1, 2609, -1, 2611, -1, - -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2631, -1, - -1, -1, -1, -1, -1, -1, -1, 209, -1, 2642, - -1, 2644, 2645, 2646, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2659, -1, 230, 2662, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2674, -1, -1, -1, -1, 2679, -1, -1, -1, - -1, -1, 2685, -1, -1, -1, -1, -1, -1, -1, - 262, -1, 2695, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2711, -1, - -1, 2714, 284, 2716, -1, -1, -1, -1, 2721, -1, - 2723, -1, 294, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2739, 2740, -1, -1, - -1, -1, 2745, -1, -1, -1, -1, -1, -1, 321, - -1, -1, -1, -1, 326, -1, 328, -1, -1, -1, - -1, -1, 334, 2766, -1, 337, 2769, -1, -1, 2772, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2789, -1, -1, -1, - -1, -1, -1, -1, 366, -1, -1, 369, -1, -1, - -1, 373, -1, -1, -1, -1, -1, -1, 380, -1, - 382, 2814, -1, -1, -1, 387, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 412, -1, -1, -1, -1, -1, 2849, 2850, 2851, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2873, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2883, -1, 2885, 2886, -1, 2888, -1, -1, 2891, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2901, -1, - -1, -1, -1, -1, -1, 570, -1, -1, -1, -1, - 575, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 586, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 602, -1, -1, - -1, -1, -1, 2946, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 618, -1, -1, -1, -1, -1, 624, - -1, -1, 2965, -1, -1, -1, -1, -1, 2971, -1, - 635, -1, -1, -1, -1, -1, -1, -1, 643, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2997, -1, -1, -1, -1, -1, - 3003, 3004, -1, -1, -1, -1, -1, 3010, -1, 3012, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3024, -1, 3026, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3063, -1, -1, -1, -1, -1, 731, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3080, 3081, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3094, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3137, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3149, -1, -1, 3152, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 355, -1, 47, -1, -1, -1, 3179, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, + -1, 3203, -1, -1, -1, -1, -1, -1, -1, 355, + -1, -1, -1, -1, -1, -1, -1, -1, 3220, 3221, + -1, 414, -1, -1, -1, -1, -1, -1, -1, 198, + 199, -1, 3234, -1, -1, -1, -1, -1, 207, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3268, 451, -1, -1, + 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, + -1, -1, 3284, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3306, 451, 180, 3309, 454, 455, + 456, 185, 458, 459, 460, 461, 462, 463, -1, -1, + -1, -1, -1, -1, -1, 3327, -1, -1, 3330, -1, + 25, -1, 206, 207, 3336, -1, -1, -1, -1, -1, + 3342, -1, 3344, -1, -1, 3347, -1, 221, -1, 3351, + 3352, 3353, 3354, 3355, -1, -1, 3358, 3359, 3360, 3361, + 3362, 3363, 3364, 3365, 3366, 3367, -1, -1, -1, 3371, + 3372, -1, -1, -1, 3376, -1, -1, 72, -1, 3381, + 254, -1, -1, 3385, -1, 3387, -1, 3389, -1, -1, + -1, -1, 87, -1, 268, 3397, -1, 271, 3400, -1, + 3402, -1, -1, -1, -1, -1, -1, -1, 3410, 3411, + 105, -1, 3414, 3415, -1, -1, 111, 3419, 3420, -1, + -1, -1, -1, -1, 3426, -1, -1, -1, -1, -1, + -1, -1, -1, 128, 3436, -1, -1, 3439, -1, -1, + -1, -1, -1, -1, 139, -1, 8, -1, -1, 11, + 3452, -1, 147, 15, 16, 17, 3458, 3459, 3460, -1, + -1, -1, -1, -1, 159, -1, -1, -1, -1, 164, + 32, -1, -1, 35, -1, -1, 171, -1, 40, -1, + -1, 355, 3484, -1, -1, 47, -1, -1, -1, -1, + -1, -1, -1, 188, -1, -1, -1, -1, 3500, -1, + 199, -1, -1, -1, 3506, -1, -1, -1, 207, 71, + -1, 385, -1, -1, -1, -1, 3518, -1, 213, -1, + -1, 220, -1, -1, -1, -1, -1, 8, -1, -1, + 11, -1, -1, -1, 15, 16, 17, -1, -1, 234, + -1, -1, -1, -1, -1, -1, -1, 3549, -1, -1, + -1, 32, -1, -1, -1, -1, -1, -1, -1, 40, + -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, + -1, -1, -1, 268, -1, -1, -1, 451, -1, -1, + 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, + 71, -1, -1, -1, -1, -1, 291, 3599, -1, -1, + -1, -1, 3604, 3605, 3606, -1, 301, -1, -1, 304, + -1, -1, -1, -1, -1, 584, -1, -1, 180, -1, + -1, 590, -1, 185, -1, -1, 3628, 3629, -1, -1, + -1, -1, -1, -1, 603, 330, -1, -1, -1, -1, + 335, -1, 337, 3645, 206, 207, -1, -1, -1, 344, + 619, -1, 347, -1, -1, -1, -1, -1, 3660, 221, + -1, 3663, -1, -1, -1, 634, 635, -1, -1, -1, + -1, 366, -1, 642, -1, -1, -1, 372, -1, -1, + -1, 376, 377, -1, -1, 380, 655, -1, -1, 384, + -1, -1, 254, -1, -1, -1, 665, -1, 393, 180, + -1, -1, -1, 398, 185, -1, 268, -1, -1, 271, + -1, -1, -1, -1, -1, 410, -1, -1, -1, -1, + -1, -1, -1, 3725, -1, 206, 207, -1, 423, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 221, -1, -1, -1, -1, -1, -1, -1, 3750, 3751, + -1, -1, 3754, -1, -1, -1, -1, -1, 3760, -1, + -1, -1, -1, -1, -1, 3767, -1, -1, -1, -1, + -1, -1, -1, 254, -1, -1, -1, 3779, -1, -1, + -1, -1, -1, -1, 753, -1, -1, 268, -1, -1, + 271, -1, -1, 355, 22, -1, -1, -1, -1, -1, + 28, -1, 3804, 3805, 3806, -1, -1, 35, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 69, -1, -1, -1, -1, -1, -1, -1, 3851, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3872, -1, -1, -1, 355, 103, -1, -1, -1, -1, + -1, 3883, -1, -1, -1, 584, -1, -1, -1, 451, + -1, 590, 454, 455, 456, 123, 458, 459, 460, 461, + 462, 463, 130, -1, 603, 133, -1, -1, -1, -1, + -1, 3913, -1, -1, -1, -1, -1, -1, -1, -1, + 619, 3923, 3924, -1, 3926, -1, -1, -1, 3930, 3931, + 158, -1, -1, 3935, 3936, -1, 635, -1, 3940, -1, + -1, 3943, 3944, 642, -1, -1, 3948, -1, -1, -1, + -1, -1, 3954, -1, -1, -1, 655, -1, -1, 187, + -1, -1, 190, -1, 3966, 934, 665, -1, -1, -1, + 451, -1, 3974, 454, 455, 456, 3978, 458, 459, 460, + 461, 462, 463, -1, -1, -1, -1, -1, -1, 3991, + -1, -1, -1, -1, 3996, -1, -1, -1, -1, -1, + 4002, -1, -1, -1, -1, -1, -1, 235, -1, -1, + 238, -1, -1, -1, -1, 4017, -1, -1, -1, -1, + -1, 249, -1, 251, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 261, -1, -1, -1, -1, -1, -1, + -1, 4043, 270, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 280, 281, 753, -1, -1, -1, -1, 4061, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4078, -1, -1, -1, + -1, 4083, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 319, -1, -1, 322, 323, 324, 4099, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4115, -1, -1, 344, -1, 4120, -1, + 1089, -1, 350, -1, -1, 4127, -1, -1, -1, -1, + -1, -1, -1, -1, 1103, -1, 364, -1, -1, -1, + -1, 4143, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1120, 4154, -1, -1, -1, -1, -1, 630, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1148, + -1, -1, 654, 4185, -1, -1, 414, -1, -1, -1, + -1, -1, -1, -1, -1, 1164, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4209, -1, -1, + 1179, -1, -1, 1182, -1, -1, -1, -1, -1, -1, + -1, 4223, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4246, -1, -1, -1, -1, -1, + -1, 4253, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 630, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 654, + -1, -1, 4294, -1, 4296, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4318, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1300, 4334, -1, -1, -1, 4338, -1, -1, 1308, + 1309, 4343, -1, -1, -1, -1, -1, -1, -1, 1318, + -1, -1, -1, -1, -1, -1, -1, -1, 4360, 4361, + -1, -1, 4364, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4379, -1, -1, + -1, -1, -1, -1, 4386, -1, -1, -1, -1, 4391, + 1089, -1, 4394, 4395, -1, -1, -1, -1, -1, -1, + 4402, 4403, -1, -1, 1103, -1, 1375, -1, -1, 20, + -1, -1, -1, -1, 25, -1, -1, -1, 4420, -1, + 4422, 1120, -1, -1, -1, 4427, 37, 4429, -1, -1, + -1, 4433, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 59, 1148, + -1, -1, -1, -1, -1, -1, -1, -1, 930, -1, + -1, 72, -1, -1, -1, 1164, -1, -1, -1, 4471, + 4472, -1, 83, -1, -1, -1, 87, -1, -1, 4481, + 1179, 953, -1, 1182, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 105, -1, 968, -1, -1, -1, + 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4517, -1, 128, -1, -1, + -1, 4523, -1, -1, -1, -1, -1, -1, 139, -1, + -1, -1, -1, -1, -1, -1, 147, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 159, -1, + -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, + 171, -1, -1, -1, -1, 930, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4578, 188, -1, -1, + 1052, -1, -1, -1, -1, -1, -1, 1556, 953, 4591, + -1, 4593, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1300, -1, 968, -1, -1, -1, -1, -1, 1308, + 1309, -1, -1, -1, 225, 4617, 4618, -1, 4620, 1318, + 4622, -1, -1, 234, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1607, -1, + 4642, -1, -1, -1, -1, -1, 4648, -1, -1, -1, + 4652, -1, -1, -1, -1, -1, 4658, 268, -1, -1, + 271, 4663, 1631, -1, -1, -1, -1, -1, -1, -1, + 1639, -1, -1, -1, -1, -1, 1375, -1, -1, -1, + 291, -1, 1651, -1, -1, -1, -1, 1052, -1, -1, + 1162, -1, -1, 304, -1, -1, -1, -1, -1, -1, + 311, -1, 4704, -1, -1, -1, -1, -1, -1, -1, + 4712, -1, -1, -1, -1, 4717, 4718, -1, -1, 330, + 4722, -1, -1, -1, -1, -1, 337, -1, -1, -1, + -1, -1, -1, 344, -1, -1, 347, -1, 4740, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1722, 1723, 366, 1725, 1726, -1, -1, + -1, 372, -1, -1, -1, -1, 377, 4769, 1737, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, 1748, + 1749, -1, 393, -1, -1, -1, -1, 398, -1, -1, + 4792, -1, -1, 404, -1, 1764, 407, 1162, -1, 410, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 423, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4826, 4827, -1, 1796, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4847, -1, -1, 4850, -1, + -1, 4853, -1, -1, -1, -1, -1, 1556, -1, -1, + -1, -1, 4864, -1, -1, -1, -1, 4869, -1, 4871, + -1, 4873, -1, -1, -1, -1, -1, -1, -1, 4881, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1368, 4899, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1607, -1, + -1, -1, -1, -1, -1, 1884, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4929, -1, 4931, + -1, -1, 1631, -1, -1, -1, -1, -1, -1, -1, + 1639, -1, -1, -1, -1, -1, -1, -1, 747, 748, + -1, -1, 1651, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1435, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4981, + -1, -1, -1, -1, -1, -1, -1, 4989, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1474, 1368, -1, -1, -1, -1, -1, -1, + -1, -1, 5014, 5015, -1, -1, -1, -1, -1, -1, + 5022, 5023, -1, -1, 5026, 1497, 1725, 1726, -1, -1, + 5032, -1, -1, -1, -1, -1, -1, -1, 1737, 5041, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1748, + 1749, -1, 5054, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1764, -1, -1, -1, -1, + 1435, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5105, 1576, -1, -1, -1, 5110, 1474, + -1, -1, -1, -1, -1, -1, -1, 5119, -1, 1591, + -1, 2090, -1, 5125, 5126, 5127, -1, -1, 1600, -1, + -1, -1, 1497, -1, 5136, -1, -1, -1, -1, 2108, + 1612, -1, -1, -1, 2113, 2114, -1, -1, -1, 2118, + -1, 5153, -1, -1, -1, -1, -1, 2126, -1, -1, + -1, -1, -1, -1, -1, 5167, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2144, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1884, -1, -1, -1, 5191, + -1, -1, -1, -1, -1, 1667, -1, 2166, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1681, + -1, 1576, -1, -1, -1, -1, 5218, 5219, -1, 2188, + -1, 1693, -1, -1, -1, -1, 1591, -1, -1, -1, + -1, -1, -1, 1705, -1, 1600, -1, 2206, 2207, -1, + -1, 5243, -1, -1, -1, -1, -1, 1612, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5260, -1, + -1, -1, -1, -1, 5266, -1, -1, -1, 2237, 2238, + -1, -1, 2241, 1745, 1746, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5290, -1, + 5292, -1, -1, -1, -1, 2264, -1, 2266, -1, -1, + -1, -1, 1667, 2272, -1, 5307, 5308, 5309, -1, -1, + 2279, -1, -1, -1, 2283, -1, 1681, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1693, -1, + -1, -1, -1, -1, 2303, -1, -1, -1, -1, 2308, + 1705, -1, -1, 2312, -1, -1, 2315, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2325, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2338, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2348, + 1745, 1746, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2090, -1, -1, -1, 1194, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1879, -1, 2108, + -1, -1, -1, -1, 2113, 2114, -1, -1, -1, 2118, + -1, -1, -1, -1, -1, 1224, -1, 2126, -1, -1, + -1, -1, -1, -1, 2403, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2144, -1, -1, -1, -1, + -1, -1, -1, 1252, 1253, 1254, -1, 1256, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 20, -1, -1, -1, 1276, 25, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2188, + 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2206, 2207, -1, + -1, 2480, 59, -1, 1879, -1, -1, -1, 1317, -1, + -1, -1, -1, -1, -1, 72, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2237, 2238, + 87, -1, 2241, -1, -1, -1, 1345, -1, -1, -1, + 1349, 1350, 1917, -1, -1, -1, -1, -1, 105, -1, + -1, -1, -1, -1, 2533, 2264, -1, 2266, -1, -1, + -1, -1, -1, 2272, -1, -1, -1, -1, -1, -1, + 2279, 128, -1, -1, 2283, -1, -1, -1, -1, -1, + -1, -1, 139, -1, -1, -1, -1, -1, -1, -1, + 147, -1, 2571, -1, 2303, -1, -1, -1, -1, 2308, + -1, -1, 159, 2312, -1, -1, 2315, 164, -1, -1, + 2589, -1, -1, -1, 171, 2097, 2325, -1, 2597, 2101, + 2102, -1, -1, -1, -1, -1, -1, -1, 2607, 2338, + -1, 188, -1, -1, -1, -1, -1, -1, -1, 2348, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 234, -1, -1, + -1, 2163, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2175, 2403, -1, -1, -1, 2677, -1, + -1, -1, -1, -1, 2683, -1, -1, -1, -1, -1, + -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2097, 280, -1, -1, 2101, 2102, -1, -1, + -1, -1, -1, 2215, 291, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 301, -1, -1, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2480, -1, 330, -1, -1, -1, -1, 335, -1, + 337, -1, -1, -1, -1, -1, -1, 344, 2163, 2768, + 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2175, -1, -1, -1, -1, -1, -1, -1, -1, 366, + -1, -1, -1, -1, -1, 372, -1, -1, -1, -1, + 377, -1, -1, 380, 2533, -1, -1, 384, -1, -1, + -1, -1, -1, -1, 391, -1, 393, -1, -1, -1, + 2215, 398, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 410, -1, -1, -1, -1, -1, -1, + -1, -1, 2571, -1, -1, -1, 423, -1, 2847, 2848, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2589, -1, -1, -1, -1, -1, -1, -1, 2597, -1, + -1, -1, -1, -1, -1, 2874, -1, -1, 2877, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 20, -1, 2394, -1, -1, 25, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 72, 73, -1, -1, -1, -1, 2677, -1, + -1, -1, -1, 83, 2683, -1, -1, 87, -1, 2958, + 2959, 2960, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2476, 105, -1, -1, -1, -1, + -1, -1, -1, 2982, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 128, 2394, + -1, -1, -1, 3002, -1, -1, -1, -1, 1837, 139, + -1, -1, -1, -1, -1, -1, -1, 147, 3017, -1, + -1, 1850, -1, 1852, -1, -1, 1855, 1856, 1857, 159, + -1, -1, -1, 1862, 164, -1, 1865, -1, -1, 2768, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1880, 1881, 1882, 1883, -1, -1, -1, 188, 1888, + -1, -1, -1, 1892, -1, -1, 1895, -1, -1, 1898, + 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, -1, 1908, + -1, 2476, -1, 213, -1, 2587, 1915, -1, 1917, -1, + -1, -1, -1, -1, -1, -1, 3095, -1, -1, -1, + -1, -1, 2604, -1, 234, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2617, -1, -1, 2847, 2848, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3133, -1, -1, -1, 268, -1, + -1, 3140, -1, 3142, -1, 2874, -1, -1, 2877, -1, + -1, -1, -1, -1, -1, -1, 3155, -1, 3157, -1, + -1, 291, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 301, -1, -1, 304, -1, -1, -1, -1, -1, + 3179, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2587, -1, -1, -1, -1, -1, -1, -1, + 330, -1, -1, -1, -1, 335, -1, 337, -1, 2604, + -1, -1, -1, -1, 344, -1, 2045, 347, -1, -1, + -1, 3220, 2617, -1, -1, 630, -1, -1, -1, 2958, + 2959, 2960, -1, -1, -1, -1, 366, -1, -1, -1, + -1, -1, 372, -1, -1, -1, -1, 377, -1, 654, + 380, -1, -1, 2982, 384, -1, -1, -1, -1, -1, + -1, 391, -1, 393, -1, -1, -1, -1, 398, 3268, + -1, -1, -1, 3002, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3284, -1, -1, 3017, -1, + -1, -1, -1, 423, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3306, -1, -1, + 3309, -1, -1, -1, -1, -1, -1, -1, 2147, -1, + 2822, -1, -1, 2825, -1, 2827, -1, -1, -1, -1, + 2832, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2753, 2754, + 2755, -1, -1, -1, -1, -1, 3095, -1, -1, -1, + -1, -1, -1, -1, -1, 630, -1, -1, -1, 2881, + -1, -1, -1, -1, -1, -1, -1, -1, 3387, -1, + -1, -1, -1, -1, -1, -1, 2898, -1, -1, 654, + -1, -1, -1, -1, 3133, -1, -1, -1, -1, -1, + -1, 3140, -1, 3142, -1, -1, -1, -1, -1, -1, + -1, 2923, -1, -1, -1, -1, 3155, 2822, 3157, -1, + 2825, -1, 2827, -1, -1, -1, -1, 2832, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3179, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2881, -1, -1, -1, + 2992, 3220, 2994, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2898, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 930, -1, -1, 2923, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3268, + -1, -1, -1, -1, -1, -1, -1, -1, 953, -1, + 3549, -1, -1, -1, -1, 3284, -1, -1, -1, -1, + -1, -1, -1, 968, 2393, -1, -1, -1, -1, -1, + -1, -1, -1, 3075, -1, -1, -1, 3306, -1, -1, + 3309, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, + 3599, 3103, -1, -1, -1, 3604, -1, 3606, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3126, -1, -1, -1, -1, 3628, + -1, -1, 3134, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3645, 1052, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3387, -1, + -1, 3660, -1, -1, 3663, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 930, -1, -1, -1, -1, + 3075, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 953, -1, + -1, 3203, -1, -1, -1, -1, -1, -1, 3103, -1, + -1, -1, -1, 968, -1, -1, -1, -1, -1, 3221, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3126, 3234, -1, -1, -1, -1, -1, -1, 3134, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3750, 3751, -1, -1, -1, -1, 1162, -1, -1, + -1, 3760, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3779, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1052, 630, 2628, + -1, -1, -1, -1, 2633, -1, -1, -1, 3203, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3549, -1, 654, -1, -1, -1, 3221, -1, 3330, 2658, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3234, + 2669, -1, 2671, 2672, -1, -1, -1, -1, -1, 3351, + -1, -1, 3851, 2682, -1, -1, 2685, -1, 2687, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3599, -1, -1, -1, 3376, 3604, -1, 3606, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2716, -1, 2718, + -1, 2720, -1, -1, -1, -1, -1, -1, -1, 3628, + -1, -1, -1, -1, -1, -1, -1, 1162, 3410, -1, + -1, -1, -1, -1, -1, -1, 3645, -1, -1, -1, + -1, -1, -1, -1, 2753, 2754, 2755, -1, -1, -1, + -1, 3660, -1, -1, 3663, 3330, -1, -1, -1, -1, + -1, -1, 2771, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2782, -1, -1, 3351, -1, 2787, -1, + -1, -1, -1, 1368, 2793, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3376, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3506, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3410, -1, -1, -1, -1, + -1, 3750, 3751, -1, 2853, -1, -1, -1, -1, -1, + 1435, 3760, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3779, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3460, -1, -1, -1, 1474, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4078, + -1, -1, -1, -1, 4083, -1, -1, -1, -1, -1, + -1, -1, 1497, -1, -1, -1, -1, -1, 930, -1, + -1, -1, -1, 3605, -1, -1, -1, -1, -1, -1, + -1, 3506, -1, 1368, -1, -1, 4115, -1, -1, -1, + -1, 953, 3851, -1, -1, -1, -1, 3629, 4127, -1, + -1, -1, -1, -1, -1, -1, 968, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3174, -1, -1, 3177, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3194, -1, -1, 3197, -1, -1, -1, -1, -1, - 3203, -1, -1, -1, -1, -1, 3209, -1, 3211, -1, - -1, 3214, -1, -1, -1, 3218, 3219, 3220, 3221, 3222, - -1, -1, 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, - 3233, 3234, -1, -1, -1, 3238, 3239, -1, -1, -1, - 3243, -1, -1, -1, -1, 3248, -1, -1, -1, 3252, - -1, 3254, -1, 3256, -1, -1, -1, -1, -1, -1, - -1, 3264, -1, -1, 3267, -1, 3269, -1, -1, -1, - -1, -1, -1, -1, 3277, 3278, -1, -1, 3281, 3282, - -1, -1, -1, 3286, 3287, -1, -1, -1, -1, -1, - 3293, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3303, -1, 3305, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3317, -1, -1, -1, -1, -1, - 3323, 3324, 3325, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3350, -1, -1, - -1, -1, -1, -1, -1, -1, 613, -1, -1, -1, - 3363, -1, -1, -1, -1, -1, 3369, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 634, -1, -1, - -1, 3384, -1, -1, 1049, -1, -1, -1, -1, -1, + -1, 1576, -1, -1, -1, -1, -1, -1, -1, -1, + 1435, -1, -1, -1, -1, -1, 1591, -1, -1, -1, + -1, -1, -1, -1, -1, 1600, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1612, -1, -1, + 3605, -1, -1, -1, -1, -1, -1, -1, -1, 1474, + 1052, -1, -1, -1, -1, 630, -1, -1, -1, -1, + -1, -1, -1, -1, 3629, -1, -1, -1, -1, -1, + -1, -1, 1497, -1, -1, -1, -1, 4246, -1, 654, + -1, -1, 3754, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1667, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1681, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1693, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1705, -1, 3804, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4318, + -1, 1576, -1, -1, -1, -1, -1, -1, -1, -1, + 1162, -1, -1, -1, -1, -1, 1591, -1, -1, -1, + 1745, 1746, -1, -1, -1, 1600, -1, -1, -1, 4078, + -1, -1, -1, -1, 4083, -1, -1, 1612, -1, 3754, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4115, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4127, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3804, + -1, -1, 1667, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3926, 4154, 1681, -1, 4427, -1, + 4429, -1, -1, -1, 3936, -1, -1, -1, 1693, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1705, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4472, 1879, -1, -1, -1, -1, -1, + -1, -1, 4481, -1, -1, -1, -1, -1, -1, -1, + 1745, 1746, -1, -1, -1, -1, -1, -1, 3327, -1, + -1, -1, -1, -1, -1, -1, -1, 3336, -1, -1, + -1, -1, -1, 3342, -1, 3344, -1, 4246, 4517, -1, + -1, -1, -1, -1, 4523, 930, -1, -1, -1, -1, + -1, 3926, -1, -1, -1, -1, 1368, -1, -1, -1, + -1, 3936, 3371, 3372, -1, -1, -1, -1, 953, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4061, + 3389, -1, -1, 968, -1, -1, -1, -1, 3397, -1, + -1, 3400, -1, 3402, -1, -1, -1, -1, -1, -1, + -1, -1, 3411, -1, -1, -1, -1, -1, -1, 4318, + 3419, 3420, -1, -1, -1, -1, 3991, 4099, -1, -1, + -1, 3996, -1, 1435, -1, -1, -1, 4002, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4120, -1, + -1, -1, -1, 3452, 1879, -1, -1, -1, -1, 3458, + 3459, 3460, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1474, -1, -1, -1, -1, 1052, 630, -1, + -1, -1, -1, -1, -1, 3484, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1497, 4061, -1, -1, -1, + -1, 3500, 654, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4185, -1, -1, -1, -1, -1, -1, + -1, -1, 2097, -1, -1, -1, 2101, 2102, 4427, -1, + 4429, -1, -1, -1, 4099, 4704, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4740, -1, 4472, 1576, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1162, 2163, 1591, + -1, -1, -1, -1, -1, -1, -1, -1, 1600, -1, + 2175, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1612, -1, -1, -1, -1, -1, -1, -1, 4517, -1, + 4185, -1, -1, -1, 4296, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2215, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1667, 4338, -1, -1, -1, + -1, -1, 2097, -1, -1, -1, 2101, 2102, -1, 1681, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1693, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1705, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4294, + -1, 4296, -1, -1, -1, -1, -1, -1, 2163, -1, + -1, -1, -1, 1745, 1746, -1, -1, -1, -1, -1, + 2175, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4929, -1, 4931, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4338, -1, -1, -1, -1, 930, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2215, -1, -1, 1368, -1, -1, -1, -1, -1, 4471, + -1, 953, -1, -1, -1, 4704, 3805, 3806, -1, -1, + -1, -1, -1, -1, -1, -1, 968, -1, -1, 2394, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4740, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5023, -1, -1, -1, -1, -1, + 1435, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5041, 3872, -1, -1, -1, 1879, -1, -1, + -1, -1, -1, -1, 3883, 5054, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1474, + 1052, 2476, -1, -1, -1, -1, 4471, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4593, 1497, -1, 3923, 3924, -1, -1, -1, -1, + -1, 3930, 3931, -1, -1, -1, 3935, -1, -1, -1, + -1, 3940, -1, -1, 3943, 3944, 4618, -1, -1, 3948, + -1, -1, -1, -1, -1, 3954, 5125, 5126, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2394, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4658, -1, -1, -1, + -1, -1, 3991, -1, -1, -1, -1, 3996, 5167, -1, + -1, 1576, -1, 4002, -1, -1, -1, -1, -1, -1, + 1162, -1, 2587, -1, -1, -1, 1591, -1, 4017, -1, + -1, -1, -1, -1, -1, 1600, -1, -1, 4593, 2604, + 4929, -1, 4931, -1, -1, -1, -1, 1612, -1, -1, + 4712, -1, 2617, -1, 4043, 4717, 4718, -1, -1, -1, + -1, 2476, -1, 4618, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5243, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1667, 4658, -1, 2097, -1, -1, -1, 2101, + 2102, -1, -1, -1, -1, -1, 1681, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1693, -1, + -1, -1, -1, 5292, 5023, -1, -1, -1, -1, -1, + 1705, -1, -1, -1, -1, -1, -1, -1, 5307, 5308, + 5309, -1, 5041, -1, 4143, -1, -1, 4712, -1, -1, + -1, -1, 4717, 4718, -1, 4827, -1, -1, -1, -1, + -1, 2163, 2587, -1, -1, -1, -1, -1, -1, -1, + 1745, 1746, -1, 2175, -1, -1, -1, -1, -1, 2604, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2617, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4209, -1, -1, 2215, -1, -1, 1368, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2822, -1, -1, + 2825, -1, 2827, -1, -1, -1, -1, 2832, -1, -1, + -1, 4826, 4827, -1, -1, -1, -1, -1, 5167, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1435, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1879, -1, 2881, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1474, 2898, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5243, 1497, -1, -1, 2923, -1, + -1, -1, -1, -1, 5026, -1, -1, -1, -1, -1, + -1, 4360, 4361, -1, -1, 4364, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2394, 5292, -1, -1, -1, 2822, -1, -1, + 2825, -1, 2827, 4402, 4403, -1, -1, 2832, 5307, -1, + -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, + -1, -1, -1, 4422, 1576, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1591, + -1, -1, -1, -1, -1, -1, -1, -1, 1600, -1, + -1, -1, -1, -1, -1, -1, 2881, -1, -1, -1, + 1612, 5026, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2898, 2476, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1069, -1, -1, -1, -1, -1, - -1, -1, -1, 3416, -1, -1, 1081, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2923, -1, + 3075, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1667, -1, -1, -1, -1, + -1, -1, 2097, -1, -1, -1, 2101, 2102, 3103, 1681, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1693, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3126, -1, 1705, -1, -1, -1, -1, -1, 3134, + -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1109, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3462, - 1125, -1, -1, -1, 3467, 3468, 3469, -1, -1, -1, - -1, -1, -1, -1, -1, 1140, -1, -1, 1143, -1, + -1, -1, -1, -1, -1, 2587, -1, -1, 2163, -1, + -1, -1, -1, 1745, 1746, -1, -1, -1, -1, -1, + 2175, -1, 2604, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2617, -1, -1, -1, -1, + -1, 4620, -1, -1, -1, -1, -1, -1, 3203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2215, -1, -1, -1, -1, -1, 3221, -1, -1, 4648, + 3075, -1, -1, -1, -1, -1, -1, -1, -1, 3234, + -1, -1, -1, -1, 4663, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3521, -1, - -1, 3524, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3126, -1, -1, -1, -1, -1, -1, -1, 3134, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4722, -1, -1, -1, 1879, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3351, -1, 3203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3586, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1260, -1, -1, -1, -1, - -1, -1, -1, 1268, 1269, -1, 3609, 3610, -1, -1, - 3613, -1, -1, 1278, -1, -1, -1, -1, -1, 3622, - -1, 3624, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3221, -1, -1, -1, + -1, 3376, -1, -1, -1, -1, -1, -1, -1, 3234, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2394, + 2822, -1, -1, 2825, -1, 2827, -1, -1, -1, -1, + 2832, -1, -1, -1, -1, 3410, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 903, -1, -1, 201, - -1, -1, -1, -1, -1, -1, 208, -1, -1, 3662, - 3663, 3664, -1, -1, -1, -1, 923, 219, 1333, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 937, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4873, -1, -1, -1, -1, 2881, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3718, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2898, -1, -1, -1, + 4899, 2476, -1, -1, -1, 3330, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1268, -1, -1, + -1, 2923, -1, -1, -1, -1, 3351, -1, -1, -1, + -1, 3506, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2097, -1, -1, -1, 2101, + 2102, 3376, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3739, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3750, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1014, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3780, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3790, 3791, -1, - 3793, -1, -1, -1, 3797, 3798, -1, -1, -1, 3802, - 3803, -1, -1, -1, 3807, -1, -1, 3810, 3811, -1, - -1, -1, 3815, -1, -1, -1, -1, -1, 3821, -1, - -1, -1, -1, -1, 1489, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3839, -1, -1, -1, - 3843, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3855, -1, -1, -1, -1, 3860, -1, -1, - -1, -1, -1, 3866, -1, -1, 1123, -1, -1, -1, - -1, -1, -1, -1, 1539, -1, -1, -1, 3881, -1, + 1331, -1, 4981, -1, -1, 3410, -1, -1, -1, -1, + 2992, -1, 2994, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1560, -1, -1, -1, 1564, - -1, -1, 3905, -1, -1, -1, -1, -1, -1, -1, - -1, 1576, -1, -1, -1, -1, -1, -1, -1, -1, - 3923, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3940, -1, -1, - -1, -1, 3945, -1, -1, -1, -1, -1, -1, -1, - -1, 3954, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3970, -1, -1, - -1, -1, 3975, -1, -1, -1, -1, -1, -1, 3982, - -1, -1, -1, -1, 1649, 1650, 3989, 3990, -1, -1, - 3993, -1, -1, -1, -1, -1, -1, 1662, -1, -1, - 4003, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1677, 1678, -1, -1, -1, -1, 570, -1, - -1, -1, -1, 575, 1689, -1, -1, -1, -1, -1, - 4033, -1, -1, -1, 586, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 602, -1, 4055, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4066, -1, -1, 618, -1, -1, -1, - 1327, -1, 624, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 635, -1, -1, -1, -1, -1, -1, - -1, 643, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4120, -1, 4122, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1393, -1, -1, -1, - -1, -1, -1, -1, 1809, 4148, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4164, -1, -1, -1, 4168, -1, -1, -1, -1, - 4173, -1, -1, 1430, -1, -1, -1, -1, -1, 731, - -1, -1, -1, -1, -1, -1, -1, 4190, 4191, -1, - -1, 4194, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 725, 726, 4208, -1, -1, -1, -1, - 4213, -1, -1, -1, -1, 4218, -1, -1, 4221, 4222, - -1, -1, -1, -1, -1, -1, 4229, 4230, -1, -1, - -1, -1, -1, -1, -1, 757, -1, -1, -1, -1, - -1, -1, 4245, -1, -1, -1, -1, -1, -1, 4252, - -1, 4254, -1, 1510, -1, 4258, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1525, -1, - -1, -1, -1, -1, -1, -1, 1533, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1544, -1, 4292, - 4293, -1, -1, -1, -1, -1, -1, -1, -1, 4302, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1591, -1, 4339, -1, -1, -1, - -1, -1, 4345, -1, -1, -1, -1, 1604, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1616, - -1, -1, -1, -1, -1, -1, -1, -1, 2033, -1, - -1, 1628, 2037, 2038, -1, -1, -1, 2042, -1, -1, - -1, -1, -1, -1, -1, 2050, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4398, -1, 4400, -1, -1, - -1, -1, -1, 2068, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1672, -1, -1, 1675, -1, - -1, -1, -1, -1, 4427, 4428, -1, 4430, -1, 4432, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2111, -1, -1, -1, - -1, -1, -1, 4456, -1, -1, -1, 4460, -1, -1, - -1, -1, -1, 4466, 2129, 2130, -1, -1, 4471, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4490, -1, -1, - -1, -1, -1, -1, -1, 2160, 2161, 1049, -1, 2164, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4513, -1, -1, -1, -1, -1, 4519, 1069, -1, -1, - 4523, 4524, -1, -1, -1, 4528, -1, -1, 2193, 1081, - -1, -1, 2197, -1, -1, -1, -1, -1, -1, -1, - -1, 4544, -1, -1, -1, -1, -1, 1804, -1, -1, - 2215, -1, -1, -1, -1, -1, -1, 1109, -1, -1, - -1, 2226, -1, -1, -1, -1, -1, -1, -1, 4572, - -1, -1, -1, 1125, 2239, -1, -1, -1, -1, -1, - -1, -1, 2247, -1, -1, 1842, -1, -1, 1140, -1, - 4593, 1143, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4614, 4615, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4635, 1155, -1, 4638, 2301, -1, -1, -1, - -1, -1, -1, -1, 4647, -1, -1, -1, -1, 4652, - -1, 4654, -1, 4656, -1, -1, -1, -1, -1, -1, - 4663, -1, 1184, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4680, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1212, 1213, 1214, -1, 1216, -1, -1, -1, 4701, -1, - 4703, -1, 2367, -1, -1, -1, -1, -1, 1260, -1, - -1, -1, -1, -1, 1236, -1, 1268, 1269, -1, -1, - -1, -1, -1, -1, -1, -1, 1278, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4744, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1277, -1, -1, -1, -1, - -1, -1, 2019, -1, 2429, -1, 2023, 2024, 4771, 4772, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4782, - -1, 1333, -1, -1, -1, 1307, -1, 4790, -1, 1311, - 1312, -1, -1, -1, -1, -1, -1, -1, -1, 4802, - 2465, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2483, -1, - -1, -1, -1, -1, -1, -1, 2491, -1, -1, 2086, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2098, 613, -1, -1, -1, 4849, -1, -1, -1, - -1, -1, 4855, 4856, 4857, -1, -1, -1, -1, -1, - -1, -1, -1, 634, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4876, -1, -1, -1, -1, -1, -1, - -1, 2138, -1, -1, -1, 4888, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4902, - -1, -1, -1, 2568, -1, -1, -1, -1, -1, 2574, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1489, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4959, 4960, -1, -1, - -1, -1, 4965, -1, -1, -1, -1, -1, -1, -1, - 4973, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4984, 4985, 4986, -1, -1, -1, 1539, -1, -1, - -1, -1, -1, -1, 2659, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1560, -1, - -1, -1, 1564, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1576, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2293, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2723, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2739, 2740, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1649, 1650, -1, - -1, 2766, -1, -1, 2769, -1, 2363, -1, -1, -1, - 1662, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1677, 1678, -1, -1, -1, - -1, -1, 903, -1, -1, -1, -1, 1689, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 923, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 937, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2849, 2850, 2851, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2873, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2886, -1, 2888, 2481, -1, 2891, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2901, -1, -1, -1, - 1762, 2498, -1, 1014, -1, -1, -1, -1, -1, -1, - -1, -1, 2509, 1775, -1, 1777, -1, 1809, 1780, 1781, - 1782, -1, -1, -1, -1, 1787, -1, -1, 1790, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1805, 1806, 1807, 1808, -1, -1, -1, - -1, 1813, -1, -1, -1, 1817, -1, -1, 1820, -1, - 2965, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, - -1, 1833, -1, -1, -1, -1, -1, -1, 1840, -1, - 1842, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3003, -1, - -1, -1, -1, -1, -1, 3010, -1, 3012, -1, -1, - -1, -1, 1123, -1, -1, -1, -1, -1, -1, 3024, - -1, 3026, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2644, 2645, 2646, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3080, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1970, -1, - -1, -1, -1, -1, 2711, -1, -1, 2714, -1, 2716, - -1, -1, -1, -1, 2721, -1, -1, -1, -1, -1, - -1, -1, 3137, -1, -1, -1, -1, -1, -1, 613, - -1, 2033, -1, -1, -1, 2037, 2038, 3152, -1, -1, - 2042, -1, -1, -1, -1, -1, -1, -1, 2050, -1, - 634, -1, -1, -1, -1, -1, -1, -1, -1, 3174, - -1, -1, 3177, -1, -1, 2772, 2068, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2789, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2071, - -1, -1, -1, -1, -1, -1, 1327, 2814, -1, 2111, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2129, 2130, -1, - -1, 613, -1, -1, -1, -1, -1, -1, -1, 3254, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 634, -1, -1, -1, -1, -1, 2160, 2161, - -1, -1, 2164, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1393, -1, -1, -1, 2883, -1, 2885, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2193, -1, -1, -1, 2197, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1430, + -1, 2163, 2587, -1, -1, 5014, 5015, -1, -1, -1, + -1, -1, -1, 2175, -1, -1, -1, -1, -1, 2604, + 3605, -1, -1, 5032, -1, -1, -1, -1, -1, -1, + -1, -1, 2617, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3629, -1, -1, -1, -1, -1, -1, -1, -1, 2215, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2226, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2239, -1, 2946, - -1, -1, -1, -1, -1, 2247, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2971, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1510, - 2997, -1, -1, -1, -1, -1, -1, 3004, -1, 2301, - -1, 3416, -1, -1, 1525, -1, -1, -1, -1, -1, - -1, -1, 1533, -1, -1, -1, -1, -1, -1, 903, - 2292, -1, -1, 1544, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 923, - -1, -1, -1, -1, -1, -1, -1, 3462, -1, -1, - -1, -1, 3467, 937, 3469, -1, 3063, -1, -1, -1, - -1, -1, -1, -1, -1, 2367, -1, -1, -1, -1, - 1591, -1, -1, -1, 3081, -1, -1, -1, -1, -1, - -1, -1, -1, 1604, -1, -1, -1, 3094, -1, -1, - -1, -1, -1, 613, -1, 1616, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3521, 1628, -1, 3524, - -1, -1, -1, -1, 634, -1, -1, -1, -1, -1, - -1, 903, -1, -1, -1, -1, -1, 2429, -1, -1, - 1014, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 923, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1672, -1, -1, 1675, 937, -1, -1, -1, -1, - -1, -1, 2434, 2465, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2483, -1, -1, -1, -1, -1, -1, -1, 2491, - 3197, -1, -1, -1, 3609, 3610, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3622, -1, 3624, - -1, 3218, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1014, -1, -1, -1, 3243, -1, -1, 1123, - -1, -1, -1, -1, -1, -1, -1, 2519, -1, -1, - -1, -1, 2524, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2568, -1, -1, -1, - 3277, -1, 2574, -1, -1, -1, -1, 2549, -1, -1, - -1, -1, -1, 1804, -1, -1, -1, -1, 2560, -1, - 2562, 2563, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2573, -1, 3718, 2576, -1, 2578, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3325, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2607, -1, 2609, -1, 2611, - -1, 1123, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2659, -1, -1, - -1, -1, 3369, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2644, 2645, 2646, -1, -1, -1, -1, -1, - -1, -1, -1, 903, -1, -1, -1, -1, -1, -1, - 2662, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2674, 923, -1, -1, -1, 2679, -1, -1, - -1, -1, -1, 2685, -1, -1, -1, 937, -1, -1, - -1, 2723, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2739, 2740, -1, - -1, -1, -1, 1327, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3468, -1, -1, 2766, -1, -1, 2769, -1, -1, - -1, -1, -1, 2745, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1014, -1, -1, -1, 2019, -1, - -1, -1, 2023, 2024, -1, -1, -1, -1, -1, 1393, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3940, -1, -1, -1, -1, - 3945, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1327, 1430, 2849, 2850, 2851, - -1, -1, -1, -1, -1, 3970, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2086, -1, 3982, -1, -1, - -1, 2873, -1, -1, 3989, -1, -1, 2098, -1, -1, - -1, -1, -1, -1, 2886, -1, 2888, -1, 4003, 2891, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2901, - -1, -1, -1, 1123, -1, -1, 3613, -1, -1, -1, - -1, 1393, -1, -1, -1, -1, -1, 2138, -1, -1, - -1, -1, -1, -1, -1, -1, 1510, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1525, -1, -1, -1, -1, -1, -1, 1430, 1533, - -1, -1, -1, -1, -1, 3662, -1, -1, -1, -1, - 1544, -1, -1, 2965, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3003, -1, -1, -1, -1, -1, 1591, 3010, -1, - 3012, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1604, -1, 3024, -1, 3026, -1, -1, -1, 1510, -1, - -1, -1, 1616, 4148, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1525, 1628, -1, -1, -1, -1, -1, - -1, 1533, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1544, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2293, -1, -1, -1, -1, -1, 3080, -1, - -1, -1, -1, -1, -1, -1, 3793, -1, 1672, -1, - -1, 1675, -1, -1, -1, -1, 3803, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1327, -1, 1591, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1604, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1616, 3137, -1, 4252, -1, 4254, - -1, -1, 2363, -1, -1, -1, 1628, -1, 3855, -1, - 3152, -1, -1, 3860, -1, -1, -1, -1, -1, 3866, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3174, 1393, -1, 3177, -1, -1, 4293, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1672, -1, -1, 1675, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1430, -1, -1, -1, -1, -1, 3923, -1, -1, -1, - 1804, -1, 3194, -1, 4339, -1, -1, -1, -1, -1, - -1, 3203, -1, -1, -1, -1, -1, 3209, -1, 3211, - -1, -1, -1, -1, -1, -1, -1, 3954, -1, -1, - -1, -1, 3254, -1, -1, -1, -1, -1, -1, -1, - 2481, -1, -1, -1, -1, -1, 3238, 3239, 3975, -1, - -1, -1, -1, -1, -1, -1, -1, 2498, -1, -1, - -1, -1, -1, 3990, 3256, -1, -1, -1, 2509, -1, - 1510, -1, 3264, -1, -1, 3267, -1, 3269, -1, -1, - -1, -1, -1, -1, -1, 1525, 3278, -1, -1, -1, - -1, -1, -1, 1533, 3286, 3287, -1, -1, -1, -1, - -1, -1, 1804, -1, 1544, -1, 4033, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3317, -1, -1, -1, -1, - -1, 3323, 3324, 3325, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1591, -1, -1, -1, -1, -1, -1, 3350, -1, - -1, -1, -1, -1, 1604, -1, -1, -1, -1, -1, - -1, 3363, -1, -1, -1, -1, 1616, -1, 4513, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1628, -1, - -1, -1, -1, 4120, 3416, 4122, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4544, - -1, -1, -1, -1, -1, 2019, -1, -1, -1, 2023, - 2024, -1, -1, -1, -1, 613, -1, -1, -1, -1, - -1, -1, 1672, -1, -1, 1675, -1, -1, -1, -1, - 3462, 4168, -1, -1, -1, 3467, 634, 3469, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2711, -1, -1, 2714, -1, 2716, -1, -1, -1, -1, - 2721, -1, 2086, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2098, -1, -1, -1, -1, 3521, - -1, -1, 3524, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2019, -1, -1, - -1, 2023, 2024, -1, -1, -1, -1, -1, -1, -1, - -1, 2772, -1, -1, 2138, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2789, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1804, 4292, 4701, -1, 4703, -1, - -1, -1, -1, 2814, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2086, -1, -1, 3609, 3610, -1, - -1, -1, -1, -1, -1, -1, 2098, -1, -1, -1, - 3622, -1, 3624, -1, -1, -1, -1, -1, -1, 613, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 634, -1, -1, -1, -1, -1, 2138, -1, -1, -1, - -1, -1, 2883, -1, 2885, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4790, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3663, 3664, 4400, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2293, - -1, -1, -1, -1, -1, -1, 3718, -1, -1, -1, - -1, 4428, -1, -1, -1, 2946, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 903, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2971, -1, -1, -1, -1, 923, -1, -1, -1, 4466, - -1, -1, -1, -1, -1, -1, -1, 3739, -1, 937, - -1, -1, -1, 4888, -1, -1, 2997, -1, 3750, 2363, - -1, -1, -1, 3004, -1, -1, -1, 4902, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2019, - -1, -1, -1, 2023, 2024, -1, -1, -1, -1, -1, - -1, 2293, 4519, -1, -1, -1, 4523, 4524, 3790, 3791, - -1, -1, -1, -1, -1, 3797, 3798, -1, -1, -1, - 3802, -1, -1, -1, -1, 3807, -1, -1, 3810, 3811, - -1, -1, 3063, 3815, -1, -1, 1014, -1, -1, 3821, - 4965, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3081, -1, -1, -1, -1, -1, 2086, -1, -1, 4984, - -1, -1, -1, 3094, -1, -1, -1, -1, 2098, -1, - -1, 2363, -1, 3855, -1, -1, -1, -1, 3860, -1, - -1, -1, -1, -1, 3866, -1, -1, 2481, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4614, 4615, 3881, - -1, -1, -1, -1, 2498, -1, -1, -1, 2138, 903, - -1, -1, -1, -1, -1, 2509, -1, -1, -1, -1, - -1, -1, -1, 3905, -1, -1, -1, -1, 3940, 923, - -1, -1, -1, 3945, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 937, -1, 1123, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3970, -1, - -1, -1, -1, -1, -1, -1, 3197, -1, -1, -1, - 3982, -1, -1, -1, -1, -1, -1, 3989, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3218, -1, 2481, - -1, 4003, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2498, -1, -1, -1, - -1, 3993, 3243, -1, -1, -1, -1, 2509, -1, -1, - 1014, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3277, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2293, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4055, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2711, -1, -1, - 2714, -1, 2716, -1, -1, -1, -1, 2721, -1, 1123, - -1, -1, -1, 2363, -1, -1, 4148, -1, 3369, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1327, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2772, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2789, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4190, 4191, - -1, -1, 4194, -1, -1, 1393, -1, -1, -1, 2711, - 2814, -1, 2714, -1, 2716, -1, -1, -1, -1, 2721, - -1, -1, -1, -1, -1, -1, -1, 3468, -1, -1, - 4252, -1, 4254, -1, -1, -1, -1, 4229, 4230, -1, - -1, 2481, 1430, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2498, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2509, - 2772, 4293, -1, -1, -1, -1, -1, -1, -1, 2883, - -1, 2885, -1, -1, -1, -1, -1, 2789, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2814, -1, -1, -1, -1, 4339, -1, -1, - -1, -1, 1510, 1327, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1525, -1, -1, - -1, -1, 2946, -1, -1, 1533, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1544, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2971, -1, -1, - -1, -1, 3613, -1, -1, -1, -1, -1, -1, -1, - -1, 2883, -1, 2885, -1, -1, -1, -1, -1, 1393, - -1, -1, -1, 2997, -1, -1, -1, -1, -1, -1, - 3004, -1, -1, 1591, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1604, -1, -1, -1, - -1, 3662, -1, -1, -1, -1, 1430, -1, 1616, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4430, -1, - 1628, -1, -1, -1, 2946, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3063, - -1, -1, -1, -1, 4456, -1, -1, -1, -1, 2971, - -1, 2711, -1, -1, 2714, -1, 2716, 3081, -1, 4471, - -1, 2721, -1, -1, 1672, -1, -1, 1675, -1, -1, - 3094, 4513, -1, -1, -1, 2997, -1, -1, 4490, -1, - -1, -1, 3004, -1, -1, -1, 1510, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1525, 4544, -1, -1, -1, -1, -1, -1, 1533, - -1, -1, 2772, -1, -1, -1, 4528, -1, -1, -1, - 1544, -1, -1, -1, -1, -1, -1, -1, -1, 2789, - -1, -1, 3793, -1, -1, -1, -1, -1, -1, -1, - -1, 3063, 3803, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2814, -1, -1, -1, -1, 3081, - -1, -1, -1, -1, -1, -1, -1, 1591, -1, -1, - -1, -1, 3094, 3197, -1, -1, -1, -1, -1, -1, - 1604, 4593, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1616, -1, 3218, -1, 1804, -1, -1, -1, - -1, -1, -1, -1, 1628, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3243, - -1, -1, -1, 2883, -1, 2885, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4656, -1, -1, -1, 1672, -1, - -1, 1675, -1, 3277, -1, -1, -1, -1, -1, 4701, - -1, 4703, 3923, -1, -1, -1, -1, -1, 4680, -1, - -1, -1, -1, -1, -1, 3197, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2946, -1, -1, -1, - -1, -1, -1, 3954, -1, -1, 3218, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2971, -1, -1, 3975, -1, -1, -1, -1, -1, - -1, 3243, -1, -1, -1, -1, -1, -1, -1, 3990, - -1, -1, -1, -1, -1, -1, -1, 2997, -1, -1, - -1, -1, -1, -1, 3004, 3369, -1, -1, 4790, -1, - -1, -1, -1, -1, -1, 3277, -1, -1, -1, 4771, - 4772, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4782, -1, 4033, -1, -1, -1, -1, -1, -1, -1, - 1804, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3063, -1, -1, -1, -1, -1, -1, - -1, 2019, -1, -1, -1, 2023, 2024, -1, -1, -1, - -1, 3081, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3094, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3468, 4857, 4888, 3369, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4902, 4122, -1, -1, 4876, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2086, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2098, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4168, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4965, -1, -1, -1, -1, -1, -1, - 2138, -1, -1, -1, -1, -1, -1, 3197, -1, -1, - -1, -1, 4984, -1, -1, -1, 3468, 4959, 4960, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3218, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3243, -1, 1228, -1, -1, -1, 3613, - -1, -1, -1, -1, -1, 2019, -1, -1, -1, 2023, - 2024, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3277, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4292, -1, -1, -1, -1, -1, -1, 3662, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1292, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2086, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2098, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2293, -1, -1, -1, -1, - -1, 3613, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3369, - -1, -1, -1, -1, 2138, -1, -1, -1, -1, -1, + -1, -1, -1, 3075, -1, -1, -1, -1, -1, -1, + -1, 3506, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3103, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5110, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3126, -1, -1, -1, 5127, -1, + -1, -1, 3134, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5153, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3754, + 3605, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3203, -1, -1, 3629, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3221, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3804, + -1, -1, 3234, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2394, -1, -1, -1, -1, 2822, -1, -1, + 2825, -1, 2827, -1, -1, -1, -1, 2832, -1, -1, + -1, 5260, -1, -1, -1, -1, -1, 5266, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2881, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4400, - 3662, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2363, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4428, -1, 3793, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3803, + -1, -1, -1, 2898, 2476, -1, -1, -1, 3330, 3754, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2923, 3351, + -1, 3926, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3936, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3376, -1, -1, -1, -1, 3804, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4466, -1, -1, 3468, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3410, -1, + -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2587, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2604, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2617, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4519, -1, - -1, -1, 4523, 4524, -1, -1, -1, -1, -1, 2293, - -1, 3793, -1, 2481, -1, -1, -1, -1, -1, -1, - -1, 3803, -1, -1, -1, -1, -1, -1, -1, -1, - 2498, -1, -1, -1, -1, -1, -1, -1, -1, 3923, - -1, 2509, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1835, -1, 4061, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1849, -1, + 3075, 3926, 1853, -1, 3506, -1, -1, -1, -1, -1, + -1, 3936, -1, -1, -1, -1, 1867, 1868, 1869, -1, + 1871, -1, -1, -1, 4099, -1, -1, -1, 3103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, + -1, 3126, -1, -1, -1, -1, -1, -1, -1, 3134, + -1, -1, 1913, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3954, -1, -1, -1, -1, -1, -1, -1, -1, 2363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3975, -1, 3613, 4615, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3990, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1950, + -1, -1, -1, 3605, -1, -1, -1, -1, -1, -1, + 4185, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3629, 3203, -1, + -1, -1, -1, -1, -1, -1, 4061, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3221, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3234, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2822, -1, -1, 2825, 4099, 2827, -1, -1, -1, -1, + 2832, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, + -1, -1, -1, 2054, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2066, -1, -1, 2069, -1, + -1, 4296, -1, -1, -1, -1, -1, -1, -1, 2881, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2898, -1, -1, -1, + -1, -1, 3754, -1, -1, 3330, -1, -1, -1, -1, + 4185, -1, -1, 4338, -1, -1, -1, -1, -1, -1, + -1, 2923, -1, -1, -1, -1, 3351, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3923, 3662, -1, -1, -1, -1, -1, -1, 4033, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3376, 3804, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3954, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1685, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3975, -1, -1, -1, 2481, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3990, -1, - -1, -1, -1, -1, 2498, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2509, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4122, -1, - -1, -1, -1, 2711, -1, -1, 2714, -1, 2716, -1, - -1, 4033, -1, 2721, -1, -1, -1, 1760, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1774, -1, 3793, -1, 1778, -1, -1, -1, -1, - -1, -1, -1, 3803, 4168, -1, -1, -1, -1, 1792, - 1793, 1794, -1, 1796, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2772, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3410, -1, -1, -1, -1, + 2992, -1, 2994, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2789, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1838, -1, -1, -1, -1, - 4122, -1, -1, -1, -1, -1, 2814, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1875, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4168, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4471, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3923, -1, -1, -1, -1, 4292, -1, - -1, -1, -1, -1, -1, 2883, -1, 2885, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2711, -1, -1, - 2714, -1, 2716, -1, 3954, -1, -1, 2721, -1, -1, + -1, -1, -1, 4338, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3075, 3926, -1, -1, -1, -1, -1, + -1, 3506, -1, -1, 3936, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3975, -1, -1, -1, -1, + -1, 3103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3990, -1, -1, -1, -1, -1, -1, 1980, 2946, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2772, 1992, - -1, -1, 1995, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2971, -1, 2789, -1, -1, -1, -1, - 4292, -1, -1, 4033, -1, -1, 4400, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2997, - 2814, -1, -1, -1, -1, -1, 3004, -1, -1, -1, - -1, -1, -1, -1, 4428, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3126, -1, -1, -1, -1, -1, + -1, -1, 3134, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4593, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4466, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3063, -1, -1, -1, 2883, - -1, 2885, 4122, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3081, -1, -1, -1, -1, 4400, -1, - -1, -1, -1, -1, -1, -1, 3094, -1, -1, -1, - -1, -1, -1, -1, -1, 4519, -1, -1, -1, 4523, - 4524, -1, -1, -1, -1, -1, 4428, -1, 4168, -1, + 3605, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4618, -1, -1, 4471, -1, -1, -1, + -1, 3203, -1, -1, 3629, -1, -1, -1, -1, 4061, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3221, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2946, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3234, 4658, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4099, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4466, -1, -1, 2971, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4712, -1, -1, + -1, -1, 4717, 4718, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2997, -1, -1, -1, -1, -1, -1, - 3004, -1, -1, -1, -1, -1, -1, -1, -1, 3197, - -1, 4615, -1, -1, -1, -1, -1, 4519, -1, -1, - -1, 4523, 4524, -1, -1, -1, -1, -1, -1, -1, - 3218, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4593, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3330, 3754, + -1, -1, -1, 4185, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4618, -1, -1, -1, -1, -1, 3351, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4292, -1, -1, 3243, -1, -1, -1, 3063, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3081, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3277, - 3094, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3376, -1, -1, -1, -1, 3804, + -1, -1, -1, 4658, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4615, -1, -1, -1, -1, -1, -1, + -1, -1, 4827, -1, -1, -1, -1, -1, 3410, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2631, -1, -1, -1, -1, -1, -1, 4712, -1, -1, + -1, -1, 4717, 4718, 4296, -1, -1, -1, -1, -1, + 2651, -1, 2653, -1, -1, 2656, 2657, -1, 2659, -1, + 2661, -1, -1, -1, 2665, -1, -1, 2668, -1, -1, + -1, -1, 2673, -1, -1, -1, -1, -1, 2679, -1, + -1, -1, -1, 2684, -1, -1, 4338, -1, -1, -1, + 2691, 2692, 2693, 2694, -1, -1, -1, 2698, 2699, -1, + 2701, 3926, -1, -1, 3506, -1, -1, -1, -1, -1, + -1, 3936, 2713, -1, 2715, -1, -1, -1, -1, -1, + -1, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, + 2731, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4827, -1, -1, -1, -1, -1, 2759, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4400, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2779, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3369, -1, -1, -1, -1, -1, -1, 4428, -1, - -1, -1, -1, 3197, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3218, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4466, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3243, + -1, 5026, -1, 3605, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4471, + -1, -1, -1, -1, -1, -1, -1, 3629, -1, -1, + -1, -1, -1, -1, -1, -1, 4061, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2868, -1, -1, + -1, -1, -1, -1, 4099, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3277, -1, -1, -1, -1, -1, 4519, - 3468, -1, -1, 4523, 4524, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2522, + -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2542, - -1, 2544, -1, -1, 2547, 2548, -1, 2550, -1, 2552, - -1, -1, -1, 2556, -1, -1, 2559, -1, -1, -1, - -1, 2564, -1, -1, -1, -1, -1, 2570, -1, -1, - -1, -1, 2575, -1, -1, -1, -1, -1, -1, 2582, - 2583, 2584, 2585, -1, -1, 3369, 2589, 2590, -1, 2592, - -1, -1, -1, -1, -1, 4615, -1, -1, -1, -1, - -1, 2604, -1, 2606, -1, -1, -1, -1, -1, -1, - 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3613, -1, 2650, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4593, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5026, 3754, -1, -1, -1, -1, -1, -1, -1, + 4185, -1, -1, -1, -1, -1, 4618, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3468, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3662, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3804, -1, -1, -1, 4658, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2760, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4712, -1, -1, -1, -1, 4717, 4718, -1, -1, -1, + -1, 4296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4338, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3926, -1, -1, -1, 3129, -1, + -1, -1, -1, -1, 3936, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3793, -1, -1, -1, 3613, - -1, -1, -1, -1, -1, 3803, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4827, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3662, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4471, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4061, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3923, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4099, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4120, -1, + -1, -1, -1, -1, -1, 3326, -1, -1, -1, -1, + -1, 3332, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3348, 3349, -1, + -1, 3352, 3353, 3354, 3355, -1, -1, 3358, 3359, 3360, + 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 4593, -1, + -1, -1, -1, -1, 5026, -1, -1, -1, -1, -1, + -1, -1, -1, 4185, -1, -1, -1, -1, -1, 3390, + -1, -1, 3393, 4618, 3395, -1, -1, 3398, 3399, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3954, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3000, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3975, -1, 3793, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3803, - -1, -1, 3990, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3413, 3414, 3415, 3416, -1, 3418, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4658, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4033, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3468, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3478, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4712, -1, -1, + -1, -1, 4717, 4718, 4296, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3515, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4338, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4827, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3140, -1, 3923, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3954, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3193, 3975, -1, -1, -1, -1, 3199, -1, -1, -1, - 4168, -1, -1, -1, -1, -1, 3990, -1, -1, -1, - -1, -1, 3215, 3216, -1, -1, 3219, 3220, 3221, 3222, - -1, -1, 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, - 3233, 3234, 3235, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4033, - -1, -1, -1, -1, 3257, -1, -1, 3260, -1, 3262, - -1, -1, 3265, 3266, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3280, 3281, 3282, - 3283, -1, 3285, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4471, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4292, -1, -1, -1, -1, -1, - 3333, -1, -1, -1, -1, -1, -1, -1, 4122, -1, - -1, 3344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3381, -1, - -1, -1, -1, -1, 4168, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3725, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4400, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4428, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4593, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5026, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4618, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4466, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4292, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4658, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3873, -1, -1, -1, 3877, 3878, 3879, -1, + -1, -1, -1, -1, 3885, 3886, 3887, 3888, -1, -1, + -1, -1, 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900, + 3901, 3902, 3903, 3904, -1, -1, -1, -1, -1, -1, + 4712, -1, -1, -1, -1, 4717, 4718, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3929, -1, + -1, 3932, -1, 3934, -1, -1, -1, 3938, -1, -1, + 3941, 3942, -1, -1, 3945, 3946, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4519, -1, -1, -1, 4523, 4524, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3586, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3993, -1, -1, -1, -1, -1, -1, 4000, + 4001, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4016, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4827, -1, -1, 4029, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4400, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4428, -1, -1, 4615, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4466, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4519, -1, 3740, -1, 4523, - 4524, 3744, 3745, 3746, -1, -1, -1, -1, -1, 3752, - 3753, 3754, 3755, -1, -1, -1, -1, 3760, 3761, 3762, - 3763, 3764, 3765, 3766, 3767, 3768, 3769, 3770, 3771, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3796, -1, -1, 3799, -1, 3801, -1, - -1, -1, 3805, -1, -1, 3808, 3809, -1, -1, 3812, - 3813, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4615, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3857, -1, -1, -1, -1, -1, - -1, 3864, 3865, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3880, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4212, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5026, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4291, 4292, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4328, -1, -1, + -1, -1, 4333, 4334, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4348, -1, 4350, + -1, -1, -1, 4354, 4355, 4356, -1, -1, 4359, -1, + -1, 4362, 4363, -1, -1, -1, 4367, -1, -1, -1, + 4371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4058, -1, -1, -1, -1, + 4431, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4117, 4118, -1, -1, -1, -1, + -1, 4492, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4528, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4158, -1, -1, -1, -1, - 4163, 4164, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4178, -1, 4180, -1, -1, - -1, 4184, 4185, 4186, -1, -1, 4189, -1, -1, 4192, - 4193, -1, -1, -1, 4197, -1, -1, -1, 4201, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4616, 4617, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4632, 4633, 4634, -1, -1, -1, -1, -1, -1, + -1, 4642, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4670, + 4671, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4683, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4350, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -14822,19 +17219,18 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4426, 4427, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4442, - 4443, 4444, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4478, 4479, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4839, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4853, -1, -1, 4856, -1, -1, -1, 4860, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4910, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -14842,2768 +17238,2850 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4627, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4643, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5020, + -1, 5022, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4692, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5052, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4743, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4800, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5189, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, -1, -1, -1, -1, -1, -1, 4860, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + -1, -1, -1, -1, -1, -1, -1, 5218, 5219, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5230, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, 5262, 5263, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, 5288, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, 460, -1, + -1, -1, -1, -1, -1, 467, 468, 3, 4, 5, + 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, + -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, + -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, + -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, + 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, + 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, + 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, + 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, + -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, + -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, + 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, + 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, + 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, + -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, + -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, -1, 290, 291, 292, 293, 294, 295, + 296, 297, -1, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + -1, 327, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, -1, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + 386, 387, -1, -1, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, + 406, 407, 408, 409, 410, -1, 412, 413, 414, 415, + 416, 417, 418, -1, 420, 421, 422, 423, 424, 425, + -1, -1, 428, -1, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, -1, 453, -1, -1, + -1, -1, 458, 459, -1, -1, -1, -1, -1, -1, + -1, 467, 468, 3, 4, 5, 6, 7, 8, 9, + 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, 65, 66, 67, 68, 69, - -1, 71, -1, 73, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, 4931, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, -1, - 110, -1, 112, 113, 114, 115, 116, 117, -1, 119, - 120, 121, 122, -1, 124, 125, 126, 127, 128, 4972, - 130, 131, 132, -1, 134, 135, 136, -1, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, -1, - 150, 151, 152, 153, -1, 155, -1, 157, 158, -1, - 160, 161, 162, 163, -1, 165, 166, -1, 168, 169, - -1, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, -1, 182, 183, 184, 185, 186, 187, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, - -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, -1, -1, 213, 214, 215, 216, 217, -1, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 50, 51, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, 72, -1, 74, 75, 76, 77, 78, 79, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, 161, -1, 163, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, -1, -1, 217, 218, 219, + 220, 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, -1, 259, - -1, -1, 262, 263, 264, -1, -1, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, -1, -1, 283, 284, 285, 286, 287, 288, 289, - 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, -1, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, -1, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, -1, 364, 365, -1, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, -1, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, -1, 393, 394, 395, 396, 397, 398, 399, - -1, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, -1, -1, 417, -1, -1, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, -1, - -1, -1, -1, -1, -1, 445, 446, 447, -1, -1, - -1, -1, -1, -1, 454, 455, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, -1, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, -1, 65, 66, - 67, 68, 69, -1, 71, -1, 73, 74, 75, 76, - 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, - 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, -1, 110, -1, 112, 113, 114, 115, 116, - 117, -1, 119, 120, 121, -1, -1, 124, 125, 126, - 127, 128, -1, 130, 131, 132, -1, 134, 135, 136, - -1, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, -1, 150, 151, 152, 153, -1, 155, -1, - 157, 158, -1, 160, 161, 162, 163, -1, 165, 166, - -1, 168, 169, -1, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, - 187, -1, 189, 190, 191, 192, 193, 194, 195, 196, - 197, -1, 199, -1, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, -1, -1, 213, 214, 215, 216, - 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, -1, 259, -1, -1, 262, 263, 264, -1, -1, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, -1, -1, 283, 284, 285, 286, - 287, 288, 289, 290, -1, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, -1, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, -1, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, -1, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, -1, 393, 394, 395, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, -1, 409, 410, 411, 412, 413, 414, -1, -1, - 417, -1, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, -1, 440, -1, -1, -1, -1, 445, 446, - -1, -1, -1, -1, -1, -1, -1, 454, 455, 3, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, -1, 404, 405, 406, 407, 408, 409, + 410, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, 421, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, -1, -1, -1, -1, -1, -1, 458, 459, + -1, -1, -1, -1, -1, -1, -1, 467, 468, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, + 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, 65, 66, 67, 68, 69, -1, 71, -1, 73, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 64, -1, 66, 67, 68, 69, 70, -1, 72, -1, + 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, -1, 110, -1, 112, 113, - 114, 115, 116, 117, -1, 119, 120, 121, -1, -1, - 124, 125, 126, 127, 128, -1, 130, 131, 132, -1, - 134, 135, 136, -1, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - -1, 155, -1, 157, 158, -1, 160, 161, 162, 163, - -1, 165, 166, -1, 168, 169, -1, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, - 184, 185, 186, 187, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, -1, -1, 213, - 214, 215, 216, 217, -1, 219, 220, 221, 222, 223, + 104, 105, 106, 107, 108, 109, 110, 111, 112, -1, + 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, + 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, + 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, -1, 153, + 154, 155, 156, -1, 158, -1, 160, 161, -1, 163, + 164, 165, 166, 167, -1, 169, 170, -1, 172, 173, + -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, 200, 201, -1, 203, + -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, -1, 259, -1, -1, 262, 263, - 264, -1, -1, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, -1, -1, 283, - 284, 285, 286, 287, 288, 289, 290, -1, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, -1, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, -1, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, -1, - 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, - -1, 375, 376, -1, -1, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, - 394, 395, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, - 414, -1, -1, 417, -1, -1, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, -1, -1, -1, -1, -1, - -1, 445, 446, -1, -1, -1, -1, -1, -1, -1, - 454, 455, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - -1, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, -1, 65, 66, 67, 68, 69, -1, - 71, -1, 73, 74, 75, 76, 77, 78, 79, 80, - -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, -1, 110, - -1, 112, 113, 114, 115, 116, 117, -1, 119, 120, - 121, -1, -1, 124, 125, 126, 127, 128, -1, 130, - 131, 132, -1, 134, 135, 136, -1, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, -1, 150, - 151, 152, 153, -1, 155, -1, 157, 158, -1, 160, - 161, 162, 163, -1, 165, 166, -1, 168, 169, -1, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, 186, 187, -1, 189, 190, - 191, 192, 193, 194, 195, 196, 197, -1, 199, -1, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - -1, -1, 213, 214, 215, 216, 217, -1, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, -1, 259, -1, - -1, 262, 263, 264, -1, -1, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - -1, -1, 283, 284, 285, 286, 287, 288, 289, 290, - -1, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, -1, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, -1, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, -1, 364, 365, -1, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, -1, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, -1, 393, 394, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, -1, 409, 410, - 411, 412, 413, 414, -1, -1, 417, -1, -1, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, -1, -1, - -1, -1, -1, -1, 445, 446, -1, -1, -1, -1, - -1, -1, -1, 454, 455, 3, 4, 5, 6, 7, + 254, 255, 256, 257, 258, 259, 260, 261, 262, -1, + 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, + 294, 295, 296, 297, -1, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, -1, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, -1, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + -1, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, -1, 386, 387, -1, -1, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, + 404, 405, 406, 407, 408, 409, 410, -1, 412, 413, + 414, 415, 416, 417, 418, -1, 420, 421, 422, 423, + 424, 425, -1, -1, 428, -1, -1, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, -1, -1, + -1, -1, -1, -1, 458, 459, -1, -1, -1, -1, + -1, -1, -1, 467, 468, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, -1, 66, 67, + 68, 69, 70, -1, 72, -1, 74, 75, 76, 77, + 78, 79, 80, 81, 82, -1, 84, 85, 86, 87, + 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 108, 109, 110, 111, 112, -1, 114, 115, 116, 117, + 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, + 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, + 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, -1, 153, 154, 155, 156, -1, + 158, -1, 160, 161, -1, 163, 164, 165, 166, 167, + -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, -1, 186, 187, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, 200, 201, -1, 203, -1, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, -1, -1, 217, + 218, 219, 220, 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, + 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, + 268, 269, 270, -1, -1, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, -1, 290, 291, 292, 293, 294, 295, 296, 297, + -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, -1, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, -1, 327, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, -1, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, -1, 393, 394, 395, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, -1, -1, 3, -1, -1, -1, 445, 446, -1, - -1, -1, -1, -1, -1, -1, 454, 455, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, 35, -1, 37, 38, -1, - 40, 41, -1, 43, 44, 45, 46, 47, -1, 49, - 50, -1, 52, 53, 54, 55, 56, -1, -1, 59, - 60, 61, 62, 63, -1, 65, 66, 67, 68, 69, - -1, -1, -1, 73, 74, 75, 76, -1, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, -1, 89, - 90, 91, 92, -1, -1, -1, -1, -1, -1, -1, - 100, 101, 102, 103, 104, 105, 106, 107, 108, -1, - 110, -1, 112, 113, 114, 115, 116, 117, -1, 119, - 120, 121, -1, -1, 124, 125, 126, 127, 128, -1, - 130, 131, 132, -1, 134, 135, 136, -1, 138, 139, - 140, 141, 142, 143, 144, 145, 146, -1, 148, -1, - 150, 151, 152, 153, -1, 155, -1, 157, -1, -1, - 160, 161, 162, 163, -1, 165, 166, -1, 168, 169, - -1, 171, 172, 173, 174, 175, -1, 177, 178, 179, - 180, -1, 182, 183, 184, 185, 186, 187, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, - -1, 201, -1, -1, 204, 205, 206, 207, 208, 209, - 210, -1, -1, 213, 214, 215, 216, -1, -1, 219, - 220, 221, -1, -1, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, -1, 247, 248, -1, - 250, -1, 252, 253, 254, 255, 256, 257, -1, 259, - -1, -1, 262, 263, 264, -1, -1, 267, 268, -1, - 270, -1, 272, 273, 274, 275, 276, 277, 278, 279, - 280, -1, -1, 283, 284, 285, 286, 287, 288, 289, - 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, -1, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, -1, 334, 335, 336, 337, 338, -1, - 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, - -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, -1, 364, 365, -1, 367, -1, 369, - 370, 371, 372, 373, -1, 375, 376, -1, -1, 379, - 380, 381, 382, 383, -1, 385, 386, 387, 388, 389, - 390, 391, -1, -1, 394, 395, 396, 397, 398, -1, - -1, 401, 402, 403, 404, 405, 406, 407, -1, 409, - -1, 411, 412, 413, 414, -1, -1, 417, -1, -1, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, -1, -1, - -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 455, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, -1, 47, 48, 49, 50, -1, - 52, 53, 54, 55, 56, -1, -1, 59, 60, 61, - 62, 63, -1, 65, 66, 67, 68, -1, -1, 71, - -1, 73, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, - 92, -1, -1, -1, 96, -1, -1, -1, 100, 101, - 102, 103, 104, 105, 106, 107, 108, -1, 110, -1, - 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, - -1, -1, 124, 125, 126, 127, 128, -1, 130, 131, - 132, -1, 134, 135, 136, -1, 138, 139, 140, 141, - -1, 143, 144, 145, -1, -1, 148, -1, 150, 151, - 152, 153, -1, 155, -1, 157, 158, -1, 160, 161, - 162, 163, -1, 165, -1, -1, -1, 169, -1, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, -1, - -1, 213, -1, 215, 216, 217, -1, 219, 220, 221, - -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, -1, 247, 248, 249, 250, -1, - -1, 253, 254, 255, 256, 257, -1, 259, -1, -1, - 262, 263, 264, -1, -1, 267, 268, 269, 270, 271, - -1, 273, 274, 275, 276, 277, 278, 279, 280, -1, - -1, 283, 284, -1, 286, -1, 288, 289, 290, -1, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, -1, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, 318, 319, 320, 321, - 322, 323, -1, 325, 326, 327, 328, 329, 330, 331, - 332, -1, 334, 335, 336, 337, 338, -1, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - -1, -1, 364, 365, -1, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, -1, 379, 380, -1, - 382, -1, -1, 385, 386, 387, 388, 389, 390, 391, - -1, -1, 394, 395, 396, 397, 398, -1, -1, 401, - 402, 403, 404, 405, -1, 407, 408, 409, 410, 411, - 412, 413, 414, -1, -1, 417, -1, -1, 420, 421, - 422, 423, 424, 425, 3, -1, -1, -1, -1, -1, - -1, -1, -1, 435, 436, 437, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, 455, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, -1, 52, 53, 54, 55, 56, -1, -1, - 59, 60, 61, 62, 63, -1, 65, 66, 67, 68, - -1, -1, 71, -1, 73, 74, 75, 76, 77, 78, - 79, 80, -1, 82, 83, 84, 85, 86, 87, -1, - 89, 90, 91, 92, -1, -1, -1, 96, -1, -1, - -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, - -1, 110, -1, 112, 113, 114, 115, 116, 117, -1, - 119, 120, 121, -1, -1, 124, 125, 126, 127, 128, - -1, 130, 131, 132, -1, 134, 135, 136, -1, 138, - 139, 140, 141, -1, 143, 144, 145, -1, -1, 148, - -1, 150, 151, 152, 153, -1, 155, -1, 157, 158, - -1, 160, 161, 162, 163, -1, 165, -1, -1, -1, - 169, -1, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, - 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, - 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, -1, -1, 213, -1, 215, 216, 217, -1, - 219, 220, 221, -1, -1, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, -1, 247, 248, - 249, 250, -1, -1, 253, 254, 255, 256, 257, -1, - 259, -1, -1, 262, 263, 264, -1, -1, 267, 268, - 269, 270, 271, -1, 273, 274, 275, 276, 277, 278, - 279, 280, -1, -1, 283, 284, -1, 286, -1, 288, - 289, 290, -1, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, -1, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, 318, - 319, 320, 321, 322, 323, -1, 325, 326, 327, 328, - 329, 330, 331, 332, -1, 334, 335, 336, 337, 338, - -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, -1, 364, 365, -1, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, -1, - 379, 380, -1, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, -1, -1, 394, 395, 396, 397, 398, - -1, -1, 401, 402, 403, 404, 405, -1, 407, 408, - 409, 410, 411, 412, 413, 414, -1, -1, 417, -1, - -1, 420, 421, 422, 423, 424, 425, 3, 4, 5, - 6, 7, 8, 9, 10, -1, 435, 436, 437, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, 455, -1, 34, -1, + 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, + -1, -1, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, + 408, 409, 410, -1, 412, 413, 414, 415, 416, 417, + 418, -1, 420, 421, 422, 423, 424, 425, -1, -1, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, -1, -1, 3, -1, -1, -1, + 458, 459, -1, -1, -1, -1, -1, -1, -1, 467, + 468, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, 35, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, -1, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 468, 18, 19, 20, 21, 22, 23, 24, 25, + -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, 65, - 66, 67, 68, 69, -1, 71, -1, 73, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, 113, 114, 115, - 116, 117, -1, 119, 120, 121, -1, -1, 124, 125, - 126, 127, 128, -1, 130, 131, 132, -1, 134, 135, - 136, -1, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, - -1, 157, 158, -1, 160, 161, 162, 163, -1, 165, - 166, -1, 168, 169, -1, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, - 186, 187, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, -1, 199, -1, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, -1, -1, 213, 214, 215, - 216, 217, -1, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 46, -1, 48, 49, 50, 51, -1, 53, 54, 55, + 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, + 66, 67, 68, 69, -1, -1, 72, -1, 74, 75, + 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, + 86, 87, 88, 89, -1, 91, 92, 93, 94, -1, + -1, -1, 98, -1, -1, -1, 102, 103, 104, 105, + 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, + 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, + -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, + -1, 137, 138, 139, -1, 141, 142, 143, 144, -1, + 146, 147, 148, -1, -1, 151, -1, 153, 154, 155, + 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, + 166, 167, -1, 169, -1, -1, -1, 173, -1, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, + -1, 217, -1, 219, 220, 221, -1, 223, 224, 225, + -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, -1, 259, -1, -1, 262, 263, 264, -1, - -1, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, -1, -1, 283, 284, 285, - 286, 287, 288, 289, 290, -1, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, -1, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, -1, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, -1, 375, - 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, -1, 393, 394, 395, - 396, 397, 398, 399, -1, 401, 402, 403, 404, 405, - 406, 407, -1, 409, 410, 411, 412, 413, 414, -1, - -1, 417, -1, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, -1, 440, -1, -1, -1, -1, 445, - 446, -1, -1, -1, -1, -1, -1, -1, 454, 3, - 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, 65, 66, 67, 68, 69, -1, 71, -1, 73, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, -1, 110, -1, 112, 113, - 114, 115, 116, 117, -1, 119, 120, 121, -1, -1, - 124, 125, 126, 127, 128, -1, 130, 131, 132, -1, - 134, 135, 136, -1, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - -1, 155, -1, 157, 158, -1, 160, 161, 162, 163, - -1, 165, 166, -1, 168, 169, -1, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, - 184, 185, 186, 187, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, -1, -1, 213, - 214, 215, 216, 217, -1, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, -1, 259, -1, -1, 262, 263, - 264, -1, -1, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, -1, -1, 283, - 284, 285, 286, 287, 288, 289, 290, -1, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, -1, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, -1, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - -1, 375, 376, -1, -1, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, - 394, 395, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, - 414, -1, -1, 417, -1, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, -1, 440, -1, -1, -1, - -1, 445, 446, -1, -1, -1, -1, -1, -1, -1, - 454, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 246, 247, 248, 249, -1, -1, 252, 253, 254, 255, + -1, -1, 258, 259, 260, 261, 262, -1, 264, 265, + -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, + 276, 277, -1, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, -1, 290, 291, -1, 293, -1, 295, + 296, 297, -1, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + -1, 327, 328, 329, 330, 331, 332, -1, 334, 335, + 336, 337, 338, 339, 340, 341, 342, -1, 344, 345, + 346, 347, 348, -1, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, -1, -1, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, -1, + 386, 387, -1, -1, 390, 391, -1, 393, -1, -1, + 396, 397, 398, 399, 400, 401, 402, -1, -1, 405, + 406, 407, 408, 409, -1, -1, 412, 413, 414, 415, + 416, -1, 418, 419, 420, 421, 422, 423, 424, 425, + -1, -1, 428, -1, -1, 431, 432, 433, 434, 435, + 436, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 448, 449, 450, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 468, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, -1, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, -1, 146, 147, 148, -1, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, -1, -1, + -1, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, -1, 219, 220, 221, + -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, -1, -1, + 252, 253, 254, 255, -1, -1, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, -1, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + -1, 293, -1, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, -1, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, -1, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, -1, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + -1, 393, -1, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, + 412, 413, 414, 415, 416, -1, 418, 419, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, -1, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, 448, 449, 450, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, 468, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, 453, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, 65, 66, 67, 68, 69, -1, 71, - -1, 73, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, -1, 110, -1, - 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, - -1, -1, 124, 125, 126, 127, 128, -1, 130, 131, - 132, -1, 134, 135, 136, -1, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, -1, 150, 151, - 152, 153, -1, 155, -1, 157, 158, 159, 160, 161, - 162, 163, -1, 165, 166, -1, 168, 169, -1, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, -1, - 182, 183, 184, 185, 186, 187, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, -1, - 212, 213, 214, 215, 216, 217, -1, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + 162, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, 216, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, -1, 259, -1, -1, - 262, 263, 264, -1, -1, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, - -1, 283, 284, 285, 286, 287, 288, 289, 290, -1, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, -1, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, -1, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, -1, 364, 365, -1, 367, 368, 369, 370, 371, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - -1, 393, 394, 395, 396, 397, 398, 399, -1, 401, - 402, 403, 404, 405, 406, 407, -1, 409, 410, 411, - 412, 413, 414, -1, -1, 417, -1, -1, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, -1, -1, -1, - -1, -1, -1, 445, 446, -1, -1, -1, -1, -1, - -1, -1, 454, 3, 4, 5, 6, 7, 8, 9, - 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, 65, 66, 67, 68, 69, - -1, 71, -1, 73, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, -1, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, -1, - 110, -1, 112, 113, 114, 115, 116, 117, -1, 119, - 120, 121, -1, -1, 124, 125, 126, 127, 128, -1, - 130, 131, 132, -1, 134, 135, 136, -1, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, -1, - 150, 151, 152, 153, -1, 155, -1, 157, 158, -1, - 160, 161, 162, 163, -1, 165, 166, -1, 168, 169, - -1, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, -1, 182, 183, 184, 185, 186, 187, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, - -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, -1, -1, 213, 214, 215, 216, 217, -1, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, -1, 259, - -1, -1, 262, 263, 264, -1, -1, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, -1, -1, 283, 284, 285, 286, 287, 288, 289, - 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, -1, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, -1, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, -1, 364, 365, -1, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, -1, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, -1, 393, 394, 395, 396, 397, 398, 399, - -1, 401, 402, 403, 404, 405, 406, 407, -1, 409, - 410, 411, 412, 413, 414, -1, -1, 417, -1, -1, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, -1, - -1, -1, -1, -1, -1, 445, 446, -1, -1, -1, - -1, -1, 452, 453, 454, 3, 4, 5, 6, 7, - 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, -1, 393, 394, 395, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, -1, -1, -1, -1, -1, -1, 445, 446, 447, - -1, -1, -1, -1, -1, -1, 454, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, 65, - 66, 67, 68, 69, -1, 71, -1, 73, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, 113, 114, 115, - 116, 117, -1, 119, 120, 121, -1, -1, 124, 125, - 126, 127, 128, -1, 130, 131, 132, -1, 134, 135, - 136, -1, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, - -1, 157, 158, -1, 160, 161, 162, 163, -1, 165, - 166, -1, 168, 169, -1, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, - 186, 187, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, -1, 199, -1, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, -1, -1, 213, 214, 215, - 216, 217, -1, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, -1, 259, -1, -1, 262, 263, 264, -1, - -1, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, -1, -1, 283, 284, 285, - 286, 287, 288, 289, 290, -1, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, -1, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, -1, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, -1, 364, 365, - -1, 367, 368, 369, 370, 371, 372, 373, -1, 375, - 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, -1, 393, 394, 395, - 396, 397, 398, 399, -1, 401, 402, 403, 404, 405, - 406, 407, -1, 409, 410, 411, 412, 413, 414, -1, - -1, 417, -1, -1, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, -1, -1, -1, -1, -1, -1, 445, - 446, -1, -1, -1, -1, -1, -1, -1, 454, 3, - 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, -1, -1, -1, -1, - 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, 65, 66, 67, 68, 69, -1, 71, -1, 73, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, -1, 110, -1, 112, 113, - 114, 115, 116, 117, -1, 119, 120, 121, -1, -1, - 124, 125, 126, 127, 128, -1, 130, 131, 132, -1, - 134, 135, 136, -1, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - -1, 155, -1, 157, 158, -1, 160, 161, 162, 163, - -1, 165, 166, -1, 168, 169, -1, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, - 184, 185, 186, 187, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, -1, -1, 213, - 214, 215, 216, 217, -1, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, -1, 259, -1, -1, 262, 263, - 264, -1, -1, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, -1, -1, 283, - 284, 285, 286, 287, 288, 289, 290, -1, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, -1, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, -1, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, -1, - 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, - -1, 375, 376, -1, -1, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, - 394, 395, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, - 414, -1, -1, 417, -1, -1, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, -1, -1, -1, -1, -1, - -1, 445, 446, -1, -1, -1, -1, -1, -1, -1, - 454, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 382, 383, 384, -1, 386, 387, -1, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, 465, 466, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, -1, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, 65, 66, 67, 68, 69, -1, 71, - -1, 73, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, -1, 110, -1, - 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, - -1, -1, 124, 125, 126, 127, 128, -1, 130, 131, - 132, -1, 134, 135, 136, -1, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, -1, 150, 151, - 152, 153, -1, 155, -1, 157, 158, 159, 160, 161, - 162, 163, -1, 165, 166, -1, 168, 169, -1, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, -1, - 182, 183, 184, 185, 186, 187, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, -1, - -1, 213, 214, 215, 216, 217, -1, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, -1, 259, -1, -1, - 262, 263, 264, -1, -1, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, - -1, 283, 284, 285, 286, 287, 288, 289, 290, -1, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, -1, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, -1, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, -1, 364, 365, -1, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, -1, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - -1, 393, 394, 395, 396, 397, 398, 399, -1, 401, - 402, 403, 404, 405, 406, 407, -1, 409, 410, 411, - 412, 413, 414, -1, -1, 417, -1, -1, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, -1, -1, -1, - -1, -1, -1, 445, 446, -1, -1, -1, -1, -1, - -1, -1, 454, 3, 4, 5, 6, 7, 8, 9, - 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, 65, 66, 67, 68, 69, - -1, 71, -1, 73, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, -1, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, -1, - 110, -1, 112, 113, 114, 115, 116, 117, -1, 119, - 120, 121, -1, -1, 124, 125, 126, 127, 128, -1, - 130, 131, 132, -1, 134, 135, 136, -1, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, -1, - 150, 151, 152, 153, -1, 155, -1, 157, 158, -1, - 160, 161, 162, 163, -1, 165, 166, -1, 168, 169, - -1, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, -1, 182, 183, 184, 185, 186, 187, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, - -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, -1, -1, 213, 214, 215, 216, 217, -1, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, -1, 259, - -1, -1, 262, 263, 264, -1, -1, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, -1, -1, 283, 284, 285, 286, 287, 288, 289, - 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, -1, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, -1, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, -1, 364, 365, -1, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, -1, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, -1, 393, 394, 395, 396, 397, 398, 399, - -1, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, -1, -1, 417, -1, -1, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, -1, - -1, -1, -1, -1, -1, 445, 446, -1, -1, -1, - -1, -1, -1, -1, 454, 3, 4, 5, 6, 7, - 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, -1, 393, 394, 395, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, -1, -1, -1, -1, -1, -1, 445, 446, -1, - -1, -1, -1, -1, -1, -1, 454, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, 65, - 66, 67, 68, 69, -1, 71, -1, 73, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, -1, 110, -1, 112, 113, 114, 115, - 116, 117, -1, 119, 120, 121, -1, -1, 124, 125, - 126, 127, 128, -1, 130, 131, 132, -1, 134, 135, - 136, -1, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, - -1, 157, 158, -1, 160, 161, 162, 163, -1, 165, - 166, -1, 168, 169, -1, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, - 186, 187, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, -1, 199, -1, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, -1, -1, 213, 214, 215, - 216, 217, -1, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, -1, 259, -1, -1, 262, 263, 264, -1, - -1, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, -1, -1, 283, 284, 285, - 286, 287, 288, 289, 290, -1, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, -1, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, -1, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, -1, 364, 365, - -1, 367, 368, 369, 370, 371, 372, 373, -1, 375, - 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, -1, 393, 394, 395, - 396, 397, 398, 399, -1, 401, 402, 403, 404, 405, - 406, 407, -1, 409, 410, 411, 412, 413, 414, -1, - -1, 417, -1, -1, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, -1, -1, -1, -1, -1, -1, 445, - 446, -1, -1, -1, -1, -1, -1, -1, 454, 3, - 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, 65, 66, 67, 68, 69, -1, 71, -1, 73, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, -1, 110, -1, 112, 113, - 114, 115, 116, 117, -1, 119, 120, 121, -1, -1, - 124, 125, 126, 127, 128, -1, 130, 131, 132, -1, - 134, 135, 136, -1, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - -1, 155, -1, 157, 158, -1, 160, 161, 162, 163, - -1, 165, 166, -1, 168, 169, -1, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, - 184, 185, 186, 187, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, -1, -1, 213, - 214, 215, 216, 217, -1, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, -1, 259, -1, -1, 262, 263, - 264, -1, -1, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, -1, -1, 283, - 284, 285, 286, 287, 288, 289, 290, -1, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, -1, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, -1, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, -1, - 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, - -1, 375, 376, -1, -1, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, - 394, 395, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, - 414, -1, -1, 417, -1, -1, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, -1, -1, -1, -1, -1, - -1, 445, 446, -1, -1, -1, -1, -1, -1, -1, - 454, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, 460, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, -1, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, 65, 66, 67, 68, 69, -1, 71, - -1, 73, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, -1, 110, -1, - 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, - -1, -1, 124, 125, 126, 127, 128, -1, 130, 131, - 132, -1, 134, 135, 136, -1, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, -1, 150, 151, - 152, 153, -1, 155, -1, 157, 158, -1, 160, 161, - 162, 163, -1, 165, 166, -1, 168, 169, -1, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, -1, - 182, 183, 184, 185, 186, 187, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, -1, - -1, 213, 214, 215, 216, 217, -1, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + 162, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, -1, 259, -1, -1, - 262, 263, 264, -1, -1, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, - -1, 283, 284, 285, 286, 287, 288, 289, 290, -1, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, -1, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, -1, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, -1, 364, 365, -1, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, -1, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - -1, 393, 394, 395, 396, 397, 398, 399, -1, 401, - 402, 403, 404, 405, 406, 407, -1, 409, 410, 411, - 412, 413, 414, -1, -1, 417, -1, -1, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, -1, -1, -1, - -1, -1, -1, 445, 446, -1, -1, -1, -1, -1, - -1, -1, 454, 3, 4, 5, 6, 7, 8, 9, - 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, 65, 66, 67, 68, 69, - -1, 71, -1, 73, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, -1, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, -1, - 110, -1, 112, 113, 114, 115, 116, 117, -1, 119, - 120, 121, -1, -1, 124, 125, 126, 127, 128, -1, - 130, 131, 132, -1, 134, 135, 136, -1, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, -1, - 150, 151, 152, 153, -1, 155, -1, 157, 158, -1, - 160, 161, 162, 163, -1, 165, 166, -1, 168, 169, - -1, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, -1, 182, 183, 184, 185, 186, 187, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, - -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, -1, -1, 213, 214, 215, 216, 217, -1, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, -1, 259, - -1, -1, 262, 263, 264, -1, -1, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, -1, -1, 283, 284, 285, 286, 287, 288, 289, - 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, -1, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, -1, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, -1, 364, 365, -1, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, -1, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, -1, 393, 394, 395, 396, 397, 398, 399, - -1, 401, 402, 403, 404, 405, 406, 407, -1, 409, - 410, 411, 412, 413, 414, -1, -1, 417, -1, -1, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, -1, - -1, -1, -1, -1, -1, 445, 446, -1, -1, -1, - -1, -1, -1, -1, 454, 3, 4, 5, 6, 7, - 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, -1, 393, 394, 395, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, -1, -1, -1, -1, -1, -1, 445, 446, -1, - -1, -1, -1, -1, -1, -1, 454, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, 65, - 66, 67, 68, 69, -1, 71, -1, 73, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, -1, 110, -1, 112, 113, 114, 115, - 116, 117, -1, 119, 120, 121, -1, -1, 124, 125, - 126, 127, 128, -1, 130, 131, 132, -1, 134, 135, - 136, -1, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, - -1, 157, 158, -1, 160, 161, 162, 163, -1, 165, - 166, -1, 168, 169, -1, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, - 186, 187, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, -1, 199, -1, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, -1, -1, 213, 214, 215, - 216, 217, -1, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, -1, 259, -1, -1, 262, 263, 264, -1, - -1, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, -1, -1, 283, 284, 285, - 286, 287, 288, 289, 290, -1, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, -1, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, -1, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, -1, 364, 365, - -1, 367, 368, 369, 370, 371, 372, 373, -1, 375, - 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, -1, 393, 394, 395, - 396, 397, 398, 399, -1, 401, 402, 403, 404, 405, - 406, 407, -1, 409, 410, 411, 412, 413, 414, -1, - -1, 417, -1, -1, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, -1, -1, -1, -1, -1, -1, 445, - 446, -1, -1, -1, -1, -1, -1, -1, 454, 3, - 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, 65, 66, 67, 68, 69, -1, 71, -1, 73, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, -1, 110, -1, 112, 113, - 114, 115, 116, 117, -1, 119, 120, 121, -1, -1, - 124, 125, 126, 127, 128, -1, 130, 131, 132, -1, - 134, 135, 136, -1, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - -1, 155, -1, 157, 158, -1, 160, 161, 162, 163, - -1, 165, 166, -1, 168, 169, -1, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, - 184, 185, 186, 187, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, -1, -1, 213, - 214, 215, 216, 217, -1, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, -1, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, -1, 259, -1, -1, 262, 263, - 264, -1, -1, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, -1, -1, 283, - 284, 285, 286, 287, 288, 289, 290, -1, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, -1, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, -1, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, -1, - 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, - -1, 375, 376, -1, -1, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, -1, -1, - 394, 395, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, - 414, -1, -1, 417, -1, -1, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, -1, -1, -1, -1, -1, -1, - -1, 445, 446, -1, -1, -1, -1, -1, -1, -1, - 454, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, -1, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, 65, 66, 67, 68, 69, -1, 71, - -1, 73, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, -1, 110, -1, - 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, - -1, -1, 124, 125, 126, 127, 128, -1, 130, 131, - 132, -1, 134, 135, 136, -1, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, -1, 150, 151, - 152, 153, -1, 155, -1, 157, 158, -1, 160, 161, - 162, 163, -1, 165, 166, -1, 168, 169, -1, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, -1, - 182, 183, 184, 185, 186, 187, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, - -1, -1, 204, 205, 206, 207, 208, 209, 210, -1, - -1, 213, 214, 215, 216, 217, -1, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, -1, 250, 251, - 252, 253, 254, 255, 256, 257, -1, 259, -1, -1, - 262, 263, 264, -1, -1, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, - -1, 283, 284, 285, 286, 287, 288, 289, 290, -1, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, -1, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, -1, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, -1, 364, 365, -1, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, -1, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - -1, 393, 394, 395, 396, 397, 398, 399, -1, 401, - 402, 403, 404, 405, 406, 407, -1, 409, 410, 411, - 412, 413, 414, -1, -1, 417, -1, -1, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, -1, -1, -1, - -1, -1, -1, 445, 446, -1, -1, -1, -1, -1, - -1, -1, 454, 3, 4, 5, 6, 7, 8, 9, - 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, 65, 66, 67, 68, 69, - -1, 71, -1, 73, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, -1, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, -1, - 110, -1, 112, 113, 114, 115, 116, 117, -1, 119, - 120, 121, -1, -1, 124, 125, 126, 127, 128, -1, - 130, 131, 132, -1, 134, 135, 136, -1, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, -1, - 150, 151, 152, 153, -1, 155, -1, 157, 158, -1, - 160, 161, 162, 163, -1, 165, 166, -1, 168, 169, - -1, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, -1, 182, 183, 184, 185, 186, 187, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, - -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, - 210, -1, -1, 213, 214, 215, 216, 217, -1, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, -1, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, -1, 259, - -1, -1, 262, 263, 264, -1, -1, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, -1, -1, 283, 284, 285, 286, 287, 288, 289, - 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, -1, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, -1, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, -1, 364, 365, -1, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, -1, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, -1, -1, 394, 395, 396, 397, 398, 399, - -1, 401, 402, 403, 404, 405, 406, 407, -1, 409, - 410, 411, 412, 413, 414, -1, -1, 417, -1, -1, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, -1, -1, - -1, -1, -1, -1, -1, 445, 446, -1, -1, 3, - 4, 5, 6, 7, 454, 9, 10, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, 65, 66, 67, 68, 69, -1, 71, -1, 73, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, -1, 110, -1, 112, 113, - 114, 115, 116, 117, -1, 119, 120, 121, -1, -1, - 124, 125, 126, 127, 128, -1, 130, 131, 132, -1, - 134, 135, 136, -1, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - -1, 155, -1, 157, 158, -1, 160, 161, 162, 163, - -1, 165, 166, -1, 168, 169, -1, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, - 184, 185, 186, 187, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, -1, -1, 213, - 214, 215, 216, 217, -1, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, -1, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, -1, 259, -1, -1, 262, 263, - 264, -1, -1, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, -1, -1, 283, - 284, 285, 286, 287, 288, 289, 290, -1, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, -1, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, -1, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, -1, - 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, - -1, 375, 376, -1, -1, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, -1, -1, - 394, 395, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, - 414, -1, -1, 417, -1, -1, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, -1, -1, 3, 4, 5, 6, - 7, -1, 9, 10, -1, -1, -1, -1, -1, -1, - 454, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, -1, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, -1, 65, 66, - 67, 68, 69, -1, 71, -1, 73, 74, 75, 76, - 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, - 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, -1, 110, -1, 112, 113, 114, 115, 116, - 117, -1, 119, 120, 121, -1, -1, 124, 125, 126, - 127, 128, -1, 130, 131, 132, -1, 134, 135, 136, - -1, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, -1, 150, 151, 152, 153, -1, 155, -1, - 157, 158, -1, 160, 161, 162, 163, -1, 165, 166, - -1, 168, 169, -1, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, - 187, -1, 189, 190, 191, 192, 193, 194, 195, 196, - 197, -1, 199, -1, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, -1, -1, 213, 214, 215, 216, - 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, -1, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, -1, 259, -1, -1, 262, 263, 264, -1, -1, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, -1, -1, 283, 284, 285, 286, - 287, 288, 289, 290, -1, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, -1, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, -1, 364, 365, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, -1, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, -1, -1, 394, 395, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, -1, 409, 410, 411, 412, 413, 414, -1, -1, - 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, -1, -1, -1, -1, -1, -1, 454, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, 45, -1, 47, 48, 49, - 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, 65, 66, 67, 68, 69, - -1, 71, -1, 73, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, -1, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, -1, - 110, -1, 112, 113, 114, 115, 116, 117, -1, 119, - 120, 121, -1, -1, 124, 125, 126, 127, 128, -1, - 130, 131, 132, -1, 134, -1, 136, -1, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, -1, - 150, 151, 152, 153, -1, 155, -1, 157, 158, -1, - 160, 161, 162, 163, -1, 165, 166, -1, 168, 169, - -1, 171, 172, 173, 174, 175, -1, 177, 178, 179, - 180, -1, 182, 183, 184, 185, 186, 187, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, - -1, 201, -1, -1, 204, 205, 206, 207, 208, 209, - 210, -1, -1, 213, 214, 215, 216, -1, -1, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, -1, - 250, 251, 252, 253, 254, 255, 256, 257, -1, 259, - -1, -1, 262, 263, 264, -1, -1, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, -1, -1, 283, 284, 285, 286, 287, 288, 289, - 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, -1, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, -1, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, - -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, -1, 364, 365, -1, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, -1, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, -1, 393, 394, 395, 396, 397, 398, 399, - -1, 401, 402, 403, 404, 405, 406, 407, -1, 409, - 410, 411, 412, 413, 414, -1, -1, 417, -1, -1, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, -1, -1, - 3, -1, -1, -1, -1, 445, 446, -1, -1, -1, - -1, -1, -1, -1, 454, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, 58, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, 261, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, -1, -1, 440, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 454, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, - 55, 56, -1, 58, 59, 60, 61, 62, 63, -1, - 65, 66, 67, 68, 69, -1, 71, -1, 73, 74, - 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, - 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, -1, 110, -1, 112, 113, 114, - 115, 116, 117, -1, 119, 120, 121, -1, -1, 124, - 125, 126, 127, 128, -1, 130, 131, 132, -1, 134, - 135, 136, -1, 138, 139, 140, 141, 142, 143, 144, - 145, 146, -1, 148, -1, 150, 151, 152, 153, -1, - 155, -1, 157, 158, -1, 160, 161, 162, 163, -1, - 165, 166, -1, 168, 169, -1, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, - 185, 186, 187, -1, 189, 190, 191, 192, 193, 194, - 195, 196, 197, -1, 199, -1, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, - 215, 216, 217, -1, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, -1, 247, 248, 249, 250, -1, 252, 253, 254, - 255, 256, 257, -1, 259, -1, 261, 262, 263, 264, - -1, -1, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, -1, -1, 283, 284, - 285, 286, 287, 288, 289, 290, -1, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - -1, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, -1, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, -1, 364, - 365, -1, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, -1, 379, 380, 381, 382, 383, -1, - 385, 386, 387, 388, 389, 390, 391, -1, -1, 394, - 395, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, -1, 409, 410, 411, 412, 413, 414, - -1, -1, 417, -1, -1, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, -1, -1, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 454, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - 58, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 454, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - -1, 52, 53, 54, 55, 56, -1, 58, 59, 60, - 61, 62, 63, -1, 65, 66, 67, 68, 69, -1, - 71, -1, 73, 74, 75, 76, 77, 78, 79, 80, - -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, -1, 110, - -1, 112, 113, 114, 115, 116, 117, -1, 119, 120, - 121, -1, -1, 124, 125, 126, 127, 128, -1, 130, - 131, 132, -1, 134, 135, 136, -1, 138, 139, 140, - 141, 142, 143, 144, 145, 146, -1, 148, -1, 150, - 151, 152, 153, -1, 155, -1, 157, 158, -1, 160, - 161, 162, 163, -1, 165, 166, -1, 168, 169, -1, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, 186, 187, -1, 189, 190, - 191, 192, 193, 194, 195, 196, 197, -1, 199, -1, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - -1, -1, 213, 214, 215, 216, 217, -1, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, -1, 247, 248, 249, 250, - -1, 252, 253, 254, 255, 256, 257, -1, 259, -1, - -1, 262, 263, 264, -1, -1, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - -1, -1, 283, 284, 285, 286, 287, 288, 289, 290, - -1, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, -1, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, -1, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, -1, 364, 365, -1, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, -1, 379, 380, - 381, 382, 383, -1, 385, 386, 387, 388, 389, 390, - 391, -1, -1, 394, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, -1, 409, 410, - 411, 412, 413, 414, -1, -1, 417, -1, -1, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, -1, -1, 3, - 4, 5, -1, -1, -1, 9, -1, -1, -1, -1, - -1, -1, -1, 454, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, - 54, 55, 56, -1, -1, 59, 60, 61, 62, 63, - -1, 65, 66, 67, 68, 69, -1, 71, -1, 73, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, -1, 89, 90, 91, 92, -1, - -1, -1, 96, -1, -1, -1, 100, 101, 102, 103, - 104, 105, 106, 107, 108, -1, 110, -1, 112, 113, - 114, 115, 116, 117, -1, 119, 120, 121, -1, -1, - 124, 125, 126, 127, 128, -1, 130, 131, 132, -1, - 134, 135, 136, -1, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - -1, 155, -1, 157, 158, -1, 160, 161, 162, 163, - -1, 165, 166, -1, 168, 169, -1, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, - 184, 185, 186, 187, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, -1, -1, 213, - 214, 215, 216, 217, -1, 219, 220, 221, -1, -1, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, -1, 247, 248, 249, 250, -1, 252, 253, - 254, 255, 256, 257, -1, 259, 260, -1, 262, 263, - 264, -1, -1, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, -1, -1, 283, - 284, 285, 286, 287, 288, 289, 290, -1, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, -1, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, -1, - 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, -1, - 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, - -1, 375, 376, -1, -1, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, -1, -1, - 394, 395, 396, 397, 398, -1, -1, 401, 402, 403, - 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, - 414, -1, -1, 417, -1, -1, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, -1, -1, 3, -1, -1, -1, - -1, 445, 446, 447, -1, -1, -1, -1, -1, -1, - 454, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, -1, 52, 53, 54, 55, 56, - -1, -1, 59, 60, 61, 62, 63, -1, 65, 66, - 67, 68, 69, -1, 71, -1, 73, 74, 75, 76, - 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, - 87, -1, 89, 90, 91, 92, -1, -1, -1, 96, - -1, -1, -1, 100, 101, 102, 103, 104, 105, 106, - 107, 108, -1, 110, -1, 112, 113, 114, 115, 116, - 117, -1, 119, 120, 121, -1, -1, 124, 125, 126, - 127, 128, -1, 130, 131, 132, -1, 134, 135, 136, - -1, 138, 139, 140, 141, 142, 143, 144, 145, 146, - -1, 148, -1, 150, 151, 152, 153, -1, 155, -1, - 157, 158, -1, 160, 161, 162, 163, -1, 165, 166, - -1, 168, 169, -1, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, - 187, -1, 189, 190, 191, 192, 193, 194, 195, 196, - 197, -1, 199, -1, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, -1, -1, 213, 214, 215, 216, - 217, -1, 219, 220, 221, -1, -1, 224, 225, 226, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, -1, - 247, 248, 249, 250, -1, 252, 253, 254, 255, 256, - 257, -1, 259, -1, -1, 262, 263, 264, -1, -1, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, -1, -1, 283, 284, 285, 286, - 287, 288, 289, 290, -1, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, -1, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, -1, 364, 365, 366, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, -1, 379, 380, 381, 382, 383, -1, 385, 386, - 387, 388, 389, 390, 391, -1, -1, 394, 395, 396, - 397, 398, -1, -1, 401, 402, 403, 404, 405, 406, - 407, -1, 409, 410, 411, 412, 413, 414, -1, -1, - 417, -1, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, -1, -1, 440, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 454, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, 52, 53, 54, 55, 56, -1, -1, - 59, 60, 61, 62, 63, -1, 65, 66, 67, 68, - 69, -1, 71, -1, 73, 74, 75, 76, 77, 78, - 79, 80, -1, 82, 83, 84, 85, 86, 87, -1, - 89, 90, 91, 92, -1, -1, -1, 96, -1, -1, - -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, - -1, 110, -1, 112, 113, 114, 115, 116, 117, -1, - 119, 120, 121, -1, -1, 124, 125, 126, 127, 128, - -1, 130, 131, 132, -1, 134, 135, 136, -1, 138, - 139, 140, 141, 142, 143, 144, 145, 146, -1, 148, - -1, 150, 151, 152, 153, -1, 155, -1, 157, 158, - -1, 160, 161, 162, 163, -1, 165, 166, -1, 168, - 169, -1, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, -1, 182, 183, 184, 185, 186, 187, -1, - 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, - 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, -1, -1, 213, 214, 215, 216, 217, -1, - 219, 220, 221, -1, -1, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, -1, 247, 248, - 249, 250, -1, 252, 253, 254, 255, 256, 257, -1, - 259, -1, -1, 262, 263, 264, -1, -1, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, -1, -1, 283, 284, 285, 286, 287, 288, - 289, 290, -1, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, -1, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, -1, 334, 335, 336, 337, 338, - -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, -1, 364, 365, -1, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, -1, - 379, 380, 381, 382, 383, -1, 385, 386, 387, 388, - 389, 390, 391, -1, -1, 394, 395, 396, 397, 398, - -1, -1, 401, 402, 403, 404, 405, 406, 407, -1, - 409, 410, 411, 412, 413, 414, -1, -1, 417, -1, - -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, -1, - -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 454, 18, 19, 20, 21, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - -1, 43, 44, 45, 46, 47, -1, 49, 50, -1, - 52, 53, 54, 55, 56, -1, -1, 59, 60, 61, - 62, 63, -1, 65, 66, 67, 68, 69, -1, -1, - -1, 73, 74, 75, 76, -1, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, -1, -1, 90, 91, - 92, -1, -1, -1, -1, -1, -1, -1, 100, 101, - 102, 103, 104, 105, 106, 107, 108, -1, 110, -1, - 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, - -1, -1, 124, 125, 126, 127, 128, -1, 130, 131, - 132, -1, 134, 135, 136, -1, 138, 139, 140, 141, - 142, 143, 144, 145, 146, -1, 148, -1, 150, 151, - 152, 153, -1, 155, -1, 157, -1, -1, -1, 161, - 162, 163, -1, 165, 166, -1, 168, 169, -1, 171, - 172, 173, 174, 175, -1, 177, 178, 179, 180, -1, - 182, 183, 184, 185, 186, 187, -1, 189, -1, 191, - 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, - -1, -1, 204, -1, 206, 207, 208, 209, 210, -1, - -1, 213, 214, -1, 216, -1, -1, 219, 220, 221, - -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, -1, - 242, 243, 244, 245, -1, 247, 248, -1, 250, -1, - 252, 253, 254, 255, 256, 257, -1, 259, -1, -1, - 262, 263, 264, -1, -1, 267, 268, -1, 270, -1, - 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, - -1, 283, 284, 285, 286, 287, 288, 289, 290, -1, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, -1, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, 318, 319, -1, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, -1, 340, 341, - 342, 343, 344, -1, 346, 347, 348, 349, -1, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, -1, 364, 365, 366, 367, -1, 369, 370, 371, - 372, 373, -1, 375, 376, -1, -1, 379, 380, 381, - 382, 383, -1, 385, 386, 387, 388, 389, 390, 391, - -1, -1, 394, 395, 396, 397, 398, -1, -1, 401, - 402, 403, 404, 405, 406, 407, -1, 409, -1, 411, - 412, 413, 414, -1, -1, 417, -1, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, -1, -1, 440, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 454, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, -1, 43, - 44, 45, 46, 47, -1, 49, 50, -1, 52, 53, - 54, 55, 56, -1, -1, 59, 60, 61, 62, 63, - -1, 65, 66, 67, 68, 69, -1, -1, -1, 73, - 74, 75, 76, -1, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, -1, -1, 90, 91, 92, -1, - -1, -1, -1, -1, -1, -1, 100, 101, 102, 103, - 104, 105, 106, 107, 108, -1, 110, -1, 112, 113, - 114, 115, 116, 117, -1, 119, 120, 121, -1, -1, - 124, 125, 126, 127, 128, -1, 130, 131, 132, -1, - 134, 135, 136, -1, 138, 139, 140, 141, 142, 143, - 144, 145, 146, -1, 148, -1, 150, 151, 152, 153, - -1, 155, -1, 157, -1, -1, -1, 161, 162, 163, - -1, 165, 166, -1, 168, 169, -1, 171, 172, 173, - 174, 175, -1, 177, 178, 179, 180, -1, 182, 183, - 184, 185, 186, 187, -1, 189, -1, 191, 192, 193, - 194, 195, 196, 197, -1, 199, -1, 201, -1, -1, - 204, -1, 206, 207, 208, 209, 210, -1, -1, 213, - 214, -1, 216, -1, -1, 219, 220, 221, -1, -1, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, -1, 242, 243, - 244, 245, -1, 247, 248, -1, 250, -1, 252, 253, - 254, 255, 256, 257, -1, 259, -1, -1, 262, 263, - 264, -1, -1, 267, 268, -1, 270, -1, 272, 273, - 274, 275, 276, 277, 278, 279, 280, -1, -1, 283, - 284, 285, 286, 287, 288, 289, 290, -1, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, -1, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, 318, 319, -1, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, -1, - 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, - 344, -1, 346, 347, 348, 349, -1, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, -1, - 364, 365, -1, 367, -1, 369, 370, 371, 372, 373, - -1, 375, 376, -1, -1, 379, 380, 381, 382, 383, - -1, 385, 386, 387, 388, 389, 390, 391, -1, -1, - 394, 395, 396, 397, 398, -1, -1, 401, 402, 403, - 404, 405, 406, 407, -1, 409, -1, 411, 412, 413, - 414, -1, -1, 417, -1, -1, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, -1, -1, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 454, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, -1, 43, 44, 45, 46, - 47, -1, 49, 50, -1, 52, 53, 54, 55, 56, - -1, -1, 59, 60, 61, 62, 63, -1, 65, 66, - 67, 68, 69, -1, -1, -1, 73, 74, 75, 76, - -1, 78, 79, 80, -1, 82, 83, 84, 85, 86, - 87, -1, -1, 90, 91, 92, -1, -1, -1, -1, - -1, -1, -1, 100, 101, 102, 103, 104, 105, 106, - 107, 108, -1, 110, -1, 112, 113, 114, 115, 116, - 117, -1, 119, 120, 121, -1, -1, 124, 125, 126, - 127, 128, -1, 130, 131, 132, -1, 134, 135, 136, - -1, 138, 139, 140, 141, 142, 143, 144, 145, 146, - -1, 148, -1, 150, 151, 152, 153, -1, 155, -1, - 157, -1, -1, -1, 161, 162, 163, -1, 165, 166, - -1, 168, 169, -1, 171, 172, 173, 174, 175, -1, - 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, - 187, -1, 189, -1, 191, 192, 193, 194, 195, 196, - 197, -1, 199, -1, 201, -1, -1, 204, -1, 206, - 207, 208, 209, 210, -1, -1, 213, 214, -1, 216, - -1, -1, 219, 220, 221, -1, -1, 224, 225, 226, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, -1, 242, 243, 244, 245, -1, - 247, 248, -1, 250, -1, 252, 253, 254, 255, 256, - 257, -1, 259, -1, -1, 262, 263, 264, -1, -1, - 267, 268, -1, 270, -1, 272, 273, 274, 275, 276, - 277, 278, 279, 280, -1, -1, 283, 284, 285, 286, - 287, 288, 289, 290, -1, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, -1, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, 318, 319, -1, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, - 337, 338, -1, 340, 341, 342, 343, 344, -1, 346, - 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, -1, 364, 365, -1, - 367, -1, 369, 370, 371, 372, 373, -1, 375, 376, - -1, -1, 379, 380, 381, 382, 383, -1, 385, 386, - 387, 388, 389, 390, 391, -1, -1, 394, 395, 396, - 397, 398, -1, -1, 401, 402, 403, 404, 405, 406, - 407, -1, 409, -1, 411, 412, 413, 414, -1, -1, - 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, -1, -1, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 454, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, -1, 43, 44, 45, 46, 47, -1, 49, - 50, -1, 52, 53, 54, 55, 56, -1, -1, 59, - 60, 61, 62, 63, -1, 65, 66, 67, 68, 69, - -1, -1, -1, 73, 74, 75, 76, -1, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, -1, -1, - 90, 91, 92, -1, -1, -1, -1, -1, -1, -1, - 100, 101, 102, 103, 104, 105, 106, 107, 108, -1, - 110, -1, 112, 113, 114, 115, 116, 117, -1, 119, - 120, 121, -1, -1, 124, 125, 126, 127, 128, -1, - 130, 131, 132, -1, 134, 135, 136, -1, 138, 139, - 140, 141, 142, 143, 144, 145, 146, -1, 148, -1, - 150, 151, 152, 153, -1, 155, -1, 157, -1, -1, - -1, 161, 162, 163, -1, 165, 166, -1, 168, 169, - -1, 171, 172, 173, 174, 175, -1, 177, 178, 179, - 180, -1, 182, 183, 184, 185, 186, 187, -1, 189, - -1, 191, 192, 193, 194, 195, 196, 197, -1, 199, - -1, 201, -1, -1, 204, -1, 206, 207, 208, 209, - 210, -1, -1, 213, 214, -1, 216, -1, -1, 219, - 220, 221, -1, -1, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, -1, 242, 243, 244, 245, -1, 247, 248, -1, - 250, -1, 252, 253, 254, 255, 256, 257, -1, 259, - -1, -1, 262, 263, 264, -1, -1, 267, 268, -1, - 270, -1, 272, 273, 274, 275, 276, 277, 278, 279, - 280, -1, -1, 283, 284, 285, 286, 287, 288, 289, - 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, -1, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, 318, 319, - -1, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, -1, 334, 335, 336, 337, 338, -1, - 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, - -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, -1, 364, 365, -1, 367, -1, 369, - 370, 371, 372, 373, -1, 375, 376, -1, -1, 379, - 380, 381, 382, 383, -1, 385, 386, 387, 388, 389, - 390, 391, -1, -1, 394, 395, 396, 397, 398, -1, - -1, 401, 402, 403, 404, 405, 406, 407, -1, 409, - -1, 411, 412, 413, 414, -1, -1, 417, -1, -1, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, -1, -1, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 454, 18, 19, 20, 21, 22, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, -1, -1, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, -1, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, -1, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + 3, 4, 5, 6, 7, 467, 9, 10, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, -1, -1, -1, -1, -1, - 3, 4, 5, -1, -1, 8, 9, -1, -1, -1, - -1, 454, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, + -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, -1, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, -1, - 143, 144, 145, -1, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, -1, 167, -1, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, -1, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, -1, 215, 216, 217, 218, 219, 220, 221, 222, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, -1, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, -1, 269, 270, 271, -1, - 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, - 283, 284, -1, 286, -1, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, -1, 325, 326, 327, 328, 329, 330, 331, 332, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, -1, 382, - -1, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, -1, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 435, 436, 437, -1, -1, -1, 441, 442, - 443, -1, 445, 446, 447, 448, 449, 450, 3, 4, - 5, -1, -1, 8, 9, -1, -1, -1, -1, -1, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 3, 4, 5, 6, 7, -1, 9, 10, -1, -1, + -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 3, 4, 5, 6, 7, -1, 9, 10, -1, -1, + -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, + -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, -1, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, -1, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, -1, -1, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, -1, 255, 256, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + -1, 404, 405, 406, 407, 408, 409, 410, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 3, -1, -1, -1, -1, 458, 459, -1, -1, -1, + -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, 267, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 453, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 467, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, 267, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 3, 4, 5, -1, -1, -1, 9, -1, -1, + -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, 266, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, -1, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 3, -1, -1, -1, -1, 458, 459, 460, -1, + -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, -1, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 467, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, 377, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 453, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 467, -1, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, + 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, + 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, + 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, + 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, + 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, + -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 467, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, + 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, + 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, + 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, + 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, + 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, + -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 467, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, + 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, + 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, + 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, + 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, + 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, + -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 467, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, + 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, + 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, + 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, + 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, + 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, + -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, -1, -1, -1, 3, 4, 5, -1, + -1, 8, 9, -1, -1, -1, -1, 467, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, -1, 146, + 147, 148, -1, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, -1, 171, -1, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, -1, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + -1, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, -1, 275, 276, + 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, 289, 290, 291, -1, 293, -1, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, -1, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, -1, 393, -1, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + -1, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 448, 449, 450, -1, -1, -1, 454, 455, 456, + -1, 458, 459, 460, 461, 462, 463, 3, 4, 5, + -1, -1, 8, 9, -1, -1, -1, -1, -1, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, -1, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, -1, + 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, -1, 171, -1, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, -1, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, -1, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, -1, 275, + 276, 277, -1, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, 291, -1, 293, -1, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, -1, 334, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, -1, 393, -1, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, -1, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 448, 449, 450, -1, 3, -1, 454, 455, + 456, 8, 458, 459, 460, 461, 462, 463, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, -1, 3, -1, 454, 455, 456, + 8, 458, 459, 460, 461, 462, 463, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, + 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, + 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, + 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, + -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, + 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, + 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, + 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, + -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, + 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, + 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, + 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, + 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, + 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, + 158, -1, 160, -1, -1, -1, 164, 165, 166, 167, + -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, + 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, + 188, 189, 190, 191, -1, 193, -1, 195, 196, 197, + 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, + 208, -1, 210, 211, 212, 213, 214, -1, -1, 217, + 218, -1, 220, -1, -1, 223, 224, 225, -1, -1, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, + 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, + 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, + 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, -1, 290, 291, 292, 293, 294, 295, 296, 297, + -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, -1, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, -1, 327, + 328, -1, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, -1, 344, 345, 346, 347, + 348, -1, 350, 351, 352, 353, 354, -1, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, + 378, -1, 380, 381, 382, 383, 384, -1, 386, 387, + -1, -1, 390, 391, 392, 393, 394, -1, 396, 397, + 398, 399, 400, 401, 402, -1, -1, 405, 406, 407, + 408, 409, -1, -1, 412, 413, 414, 415, 416, 417, + 418, -1, 420, -1, 422, 423, 424, 425, -1, -1, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, -1, 3, -1, 454, 455, 456, 8, + 458, 459, 460, 461, 462, 463, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, -1, 3, -1, 454, 455, 456, 8, 458, + 459, 460, 461, 462, 463, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, + 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, + 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, + 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, + 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, + 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, + -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, 3, -1, 454, 455, 456, 8, 458, 459, + 460, 461, 462, 463, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + -1, 3, -1, 454, 455, 456, 8, 458, 459, 460, + 461, 462, 463, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, -1, 44, 45, 46, 47, 48, -1, 50, 51, + -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + -1, -1, 74, 75, 76, 77, 78, -1, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, -1, + 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, -1, + -1, -1, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, -1, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, -1, -1, 208, -1, 210, 211, + 212, 213, 214, -1, -1, 217, 218, -1, 220, -1, + -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, -1, 246, 247, 248, 249, 250, -1, + 252, 253, -1, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, -1, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, -1, 350, 351, + 352, 353, 354, -1, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, -1, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, -1, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + 3, -1, 454, 455, 456, 8, 458, 459, 460, 461, + 462, 463, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, 454, 455, 456, -1, 458, 459, 460, 461, 462, + 463, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, -1, 143, 144, - 145, -1, 147, 148, 149, 150, 151, 152, 153, 154, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, -1, 167, -1, 169, 170, 171, 172, 173, 174, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, -1, 192, 193, 194, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, 251, -1, 253, 254, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, -1, 269, 270, 271, -1, 273, 274, - 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, - -1, 286, -1, 288, 289, 290, 291, 292, 293, 294, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, -1, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, -1, 382, -1, 384, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, -1, 407, 408, 409, 410, 411, 412, 413, 414, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 435, 436, 437, -1, 3, -1, 441, 442, 443, 8, - 445, 446, 447, 448, 449, 450, 15, 16, 17, 18, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, 460, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, 460, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, -1, 43, 44, 45, 46, 47, -1, - 49, 50, -1, 52, 53, 54, 55, 56, -1, -1, - 59, 60, 61, 62, 63, -1, 65, 66, 67, 68, - 69, -1, -1, -1, 73, 74, 75, 76, -1, 78, - 79, 80, -1, 82, 83, 84, 85, 86, 87, -1, - -1, 90, 91, 92, -1, -1, -1, -1, -1, -1, - -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, - -1, 110, -1, 112, 113, 114, 115, 116, 117, -1, - 119, 120, 121, -1, -1, 124, 125, 126, 127, 128, - -1, 130, 131, 132, -1, 134, 135, 136, -1, 138, - 139, 140, 141, 142, 143, 144, 145, 146, -1, 148, - -1, 150, 151, 152, 153, -1, 155, -1, 157, -1, - -1, -1, 161, 162, 163, -1, 165, 166, -1, 168, - 169, -1, 171, 172, 173, 174, 175, -1, 177, 178, - 179, 180, -1, 182, 183, 184, 185, 186, 187, -1, - 189, -1, 191, 192, 193, 194, 195, 196, 197, -1, - 199, -1, 201, -1, -1, 204, -1, 206, 207, 208, - 209, 210, -1, -1, 213, 214, -1, 216, -1, -1, - 219, 220, 221, -1, -1, 224, 225, 226, 227, 228, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, -1, 242, 243, 244, 245, -1, 247, 248, - -1, 250, -1, 252, 253, 254, 255, 256, 257, -1, - 259, -1, -1, 262, 263, 264, -1, -1, 267, 268, - -1, 270, -1, 272, 273, 274, 275, 276, 277, 278, - 279, 280, -1, -1, 283, 284, 285, 286, 287, 288, - 289, 290, -1, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, -1, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, 318, - 319, -1, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, -1, 334, 335, 336, 337, 338, - -1, 340, 341, 342, 343, 344, -1, 346, 347, 348, - 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, -1, 364, 365, -1, 367, -1, - 369, 370, 371, 372, 373, -1, 375, 376, -1, -1, - 379, 380, 381, 382, 383, -1, 385, 386, 387, 388, - 389, 390, 391, -1, -1, 394, 395, 396, 397, 398, - -1, -1, 401, 402, 403, 404, 405, 406, 407, -1, - 409, -1, 411, 412, 413, 414, -1, -1, 417, -1, - -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, -1, - 3, -1, 441, 442, 443, 8, 445, 446, 447, 448, - 449, 450, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, -1, 3, -1, 441, 442, - 443, 8, 445, 446, 447, 448, 449, 450, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, -1, 43, 44, 45, 46, - 47, -1, 49, 50, -1, 52, 53, 54, 55, 56, - -1, -1, 59, 60, 61, 62, 63, -1, 65, 66, - 67, 68, 69, -1, -1, -1, 73, 74, 75, 76, - -1, 78, 79, 80, -1, 82, 83, 84, 85, 86, - 87, -1, -1, 90, 91, 92, -1, -1, -1, -1, - -1, -1, -1, 100, 101, 102, 103, 104, 105, 106, - 107, 108, -1, 110, -1, 112, 113, 114, 115, 116, - 117, -1, 119, 120, 121, -1, -1, 124, 125, 126, - 127, 128, -1, 130, 131, 132, -1, 134, 135, 136, - -1, 138, 139, 140, 141, 142, 143, 144, 145, 146, - -1, 148, -1, 150, 151, 152, 153, -1, 155, -1, - 157, -1, -1, -1, 161, 162, 163, -1, 165, 166, - -1, 168, 169, -1, 171, 172, 173, 174, 175, -1, - 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, - 187, -1, 189, -1, 191, 192, 193, 194, 195, 196, - 197, -1, 199, -1, 201, -1, -1, 204, -1, 206, - 207, 208, 209, 210, -1, -1, 213, 214, -1, 216, - -1, -1, 219, 220, 221, -1, -1, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, -1, 242, 243, 244, 245, -1, - 247, 248, -1, 250, -1, 252, 253, 254, 255, 256, - 257, -1, 259, -1, -1, 262, 263, 264, -1, -1, - 267, 268, -1, 270, -1, 272, 273, 274, 275, 276, - 277, 278, 279, 280, -1, -1, 283, 284, 285, 286, - 287, 288, 289, 290, -1, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, -1, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, 318, 319, -1, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, - 337, 338, -1, 340, 341, 342, 343, 344, -1, 346, - 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, -1, 364, 365, -1, - 367, -1, 369, 370, 371, 372, 373, -1, 375, 376, - -1, -1, 379, 380, 381, 382, 383, -1, 385, 386, - 387, 388, 389, 390, 391, -1, -1, 394, 395, 396, - 397, 398, -1, -1, 401, 402, 403, 404, 405, 406, - 407, -1, 409, -1, 411, 412, 413, 414, -1, -1, - 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, -1, 3, -1, 441, 442, 443, 8, 445, 446, - 447, 448, 449, 450, 15, 16, 17, 18, 19, 20, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, 460, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, -1, 43, 44, 45, 46, 47, -1, 49, 50, - -1, 52, 53, 54, 55, 56, -1, -1, 59, 60, - 61, 62, 63, -1, 65, 66, 67, 68, 69, -1, - -1, -1, 73, 74, 75, 76, -1, 78, 79, 80, - -1, 82, 83, 84, 85, 86, 87, -1, -1, 90, - 91, 92, -1, -1, -1, -1, -1, -1, -1, 100, - 101, 102, 103, 104, 105, 106, 107, 108, -1, 110, - -1, 112, 113, 114, 115, 116, 117, -1, 119, 120, - 121, -1, -1, 124, 125, 126, 127, 128, -1, 130, - 131, 132, -1, 134, 135, 136, -1, 138, 139, 140, - 141, 142, 143, 144, 145, 146, -1, 148, -1, 150, - 151, 152, 153, -1, 155, -1, 157, -1, -1, -1, - 161, 162, 163, -1, 165, 166, -1, 168, 169, -1, - 171, 172, 173, 174, 175, -1, 177, 178, 179, 180, - -1, 182, 183, 184, 185, 186, 187, -1, 189, -1, - 191, 192, 193, 194, 195, 196, 197, -1, 199, -1, - 201, -1, -1, 204, -1, 206, 207, 208, 209, 210, - -1, -1, 213, 214, -1, 216, -1, -1, 219, 220, - 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, -1, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, -1, 146, 147, 148, -1, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, -1, + -1, -1, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, -1, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - -1, 242, 243, 244, 245, -1, 247, 248, -1, 250, - -1, 252, 253, 254, 255, 256, 257, -1, 259, -1, - -1, 262, 263, 264, -1, -1, 267, 268, -1, 270, - -1, 272, 273, 274, 275, 276, 277, 278, 279, 280, - -1, -1, 283, 284, 285, 286, 287, 288, 289, 290, - -1, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, -1, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, 318, 319, -1, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, -1, 334, 335, 336, 337, 338, -1, 340, - 341, 342, 343, 344, -1, 346, 347, 348, 349, -1, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, -1, 364, 365, -1, 367, -1, 369, 370, - 371, 372, 373, -1, 375, 376, -1, -1, 379, 380, - 381, 382, 383, -1, 385, 386, 387, 388, 389, 390, - 391, -1, -1, 394, 395, 396, 397, 398, -1, -1, - 401, 402, 403, 404, 405, 406, 407, -1, 409, -1, - 411, 412, 413, 414, -1, -1, 417, -1, -1, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, -1, 3, -1, - 441, 442, 443, 8, 445, 446, 447, 448, 449, 450, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 241, 242, 243, 244, 245, 246, 247, 248, 249, -1, + -1, 252, 253, 254, 255, -1, -1, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, 272, 273, 274, 275, 276, 277, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, -1, 293, -1, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, -1, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, -1, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, -1, 393, -1, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, -1, 418, 419, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 448, 449, 450, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 460, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + -1, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, -1, 146, + 147, 148, -1, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, -1, -1, -1, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, -1, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, -1, -1, 252, 253, 254, 255, -1, + -1, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, 272, 273, 274, 275, 276, + 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, -1, 293, -1, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, -1, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, -1, 393, -1, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + -1, 418, 419, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 3, 4, 5, -1, -1, -1, 9, -1, -1, -1, + -1, 448, 449, 450, -1, 18, 19, 20, 21, 22, + 23, 24, 25, 460, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, 266, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, 4, + 5, -1, -1, -1, 9, 458, 459, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, -1, 43, 44, - 45, 46, 47, -1, 49, 50, -1, 52, 53, 54, - 55, 56, -1, -1, 59, 60, 61, 62, 63, -1, - 65, 66, 67, 68, 69, -1, -1, -1, 73, 74, - 75, 76, -1, 78, 79, 80, -1, 82, 83, 84, - 85, 86, 87, -1, -1, 90, 91, 92, -1, -1, - -1, -1, -1, -1, -1, 100, 101, 102, 103, 104, - 105, 106, 107, 108, -1, 110, -1, 112, 113, 114, - 115, 116, 117, -1, 119, 120, 121, -1, -1, 124, - 125, 126, 127, 128, -1, 130, 131, 132, -1, 134, - 135, 136, -1, 138, 139, 140, 141, 142, 143, 144, - 145, 146, -1, 148, -1, 150, 151, 152, 153, -1, - 155, -1, 157, -1, -1, -1, 161, 162, 163, -1, - 165, 166, -1, 168, 169, -1, 171, 172, 173, 174, - 175, -1, 177, 178, 179, 180, -1, 182, 183, 184, - 185, 186, 187, -1, 189, -1, 191, 192, 193, 194, - 195, 196, 197, -1, 199, -1, 201, -1, -1, 204, - -1, 206, 207, 208, 209, 210, -1, -1, 213, 214, - -1, 216, -1, -1, 219, 220, 221, -1, -1, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, -1, 242, 243, 244, - 245, -1, 247, 248, -1, 250, -1, 252, 253, 254, - 255, 256, 257, -1, 259, -1, -1, 262, 263, 264, - -1, -1, 267, 268, -1, 270, -1, 272, 273, 274, - 275, 276, 277, 278, 279, 280, -1, -1, 283, 284, - 285, 286, 287, 288, 289, 290, -1, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - -1, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, 318, 319, -1, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, -1, 334, - 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, - -1, 346, 347, 348, 349, -1, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, -1, 364, - 365, -1, 367, -1, 369, 370, 371, 372, 373, -1, - 375, 376, -1, -1, 379, 380, 381, 382, 383, -1, - 385, 386, 387, 388, 389, 390, 391, -1, -1, 394, - 395, 396, 397, 398, -1, -1, 401, 402, 403, 404, - 405, 406, 407, -1, 409, -1, 411, 412, 413, 414, - -1, -1, 417, -1, -1, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, -1, 3, -1, 441, 442, 443, 8, - 445, 446, 447, 448, 449, 450, 15, 16, 17, 18, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, 266, -1, 268, 269, 270, -1, -1, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, 4, 5, -1, + -1, -1, 9, 458, 459, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, 266, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, 5, -1, -1, -1, + 9, 458, 459, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, -1, 43, 44, 45, 46, 47, -1, - 49, 50, -1, 52, 53, 54, 55, 56, -1, -1, - 59, 60, 61, 62, 63, -1, 65, 66, 67, 68, - 69, -1, -1, -1, 73, 74, 75, 76, -1, 78, - 79, 80, -1, 82, 83, 84, 85, 86, 87, -1, - -1, 90, 91, 92, -1, -1, -1, -1, -1, -1, - -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, - -1, 110, -1, 112, 113, 114, 115, 116, 117, -1, - 119, 120, 121, -1, -1, 124, 125, 126, 127, 128, - -1, 130, 131, 132, -1, 134, 135, 136, -1, 138, - 139, 140, 141, 142, 143, 144, 145, 146, -1, 148, - -1, 150, 151, 152, 153, -1, 155, -1, 157, -1, - -1, -1, 161, 162, 163, -1, 165, 166, -1, 168, - 169, -1, 171, 172, 173, 174, 175, -1, 177, 178, - 179, 180, -1, 182, 183, 184, 185, 186, 187, -1, - 189, -1, 191, 192, 193, 194, 195, 196, 197, -1, - 199, -1, 201, -1, -1, 204, -1, 206, 207, 208, - 209, 210, -1, -1, 213, 214, -1, 216, -1, -1, - 219, 220, 221, -1, -1, 224, 225, 226, 227, 228, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, -1, 242, 243, 244, 245, -1, 247, 248, - -1, 250, -1, 252, 253, 254, 255, 256, 257, -1, - 259, -1, -1, 262, 263, 264, -1, -1, 267, 268, - -1, 270, -1, 272, 273, 274, 275, 276, 277, 278, - 279, 280, -1, -1, 283, 284, 285, 286, 287, 288, - 289, 290, -1, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, -1, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, 318, - 319, -1, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, -1, 334, 335, 336, 337, 338, - -1, 340, 341, 342, 343, 344, -1, 346, 347, 348, - 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, -1, 364, 365, -1, 367, -1, - 369, 370, 371, 372, 373, -1, 375, 376, -1, -1, - 379, 380, 381, 382, 383, -1, 385, 386, 387, 388, - 389, 390, 391, -1, -1, 394, 395, 396, 397, 398, - -1, -1, 401, 402, 403, 404, 405, 406, 407, -1, - 409, -1, 411, 412, 413, 414, -1, -1, 417, -1, - -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, -1, - 3, -1, 441, 442, 443, 8, 445, 446, 447, 448, - 449, 450, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, 441, 442, - 443, -1, 445, 446, 447, 448, 449, 450, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, 447, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, 447, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, -1, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, -1, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, -1, 143, 144, 145, -1, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, -1, -1, - -1, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, -1, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, -1, 247, - 248, 249, 250, -1, -1, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, 266, 267, - 268, 269, 270, 271, -1, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, -1, 286, -1, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, -1, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, -1, 382, -1, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, -1, 407, - 408, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, -1, -1, - -1, -1, -1, -1, -1, 3, -1, 435, 436, 437, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 447, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, -1, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, -1, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, -1, 143, 144, 145, -1, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, -1, -1, - -1, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, -1, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, -1, 247, - 248, 249, 250, -1, -1, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, 266, 267, - 268, 269, 270, 271, -1, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, -1, 286, -1, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, -1, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, -1, 382, -1, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, -1, 407, - 408, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, -1, -1, - -1, -1, -1, -1, -1, 3, -1, 435, 436, 437, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 447, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, 4, 5, -1, -1, -1, 9, -1, -1, 447, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - -1, -1, -1, 96, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, 260, -1, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, 4, 5, -1, -1, - -1, 9, 445, 446, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, 260, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, 4, 5, -1, -1, -1, 9, 445, 446, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - -1, -1, -1, 96, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, 260, -1, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, 5, -1, -1, - -1, 9, 445, 446, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, 260, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, 9, 445, 446, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, 159, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, 4, 5, -1, -1, - -1, 9, 445, 446, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, 266, -1, 268, + 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, 9, 458, + 459, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, 162, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, 4, 5, -1, -1, -1, 9, 458, 459, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, @@ -17630,8 +20108,8 @@ static const yytype_int16 yycheck[] = 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, @@ -17646,5335 +20124,5171 @@ static const yytype_int16 yycheck[] = 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, 58, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, 5, -1, -1, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, 260, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + 59, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, + 219, 220, 221, -1, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, 410, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, 5, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, 266, -1, 268, 269, 270, + -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - -1, -1, -1, 96, -1, -1, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - -1, -1, -1, 96, -1, -1, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, 167, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - -1, -1, -1, 96, -1, -1, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - -1, -1, -1, 96, -1, -1, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - -1, -1, -1, 96, -1, -1, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, 5, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, 5, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - -1, -1, -1, 96, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, 5, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - -1, -1, -1, 96, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - -1, -1, -1, 96, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, 158, -1, 160, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, - 213, 214, 215, 216, 217, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, -1, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, 214, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, -1, 247, - 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, -1, -1, 72, - 73, 74, 75, 76, -1, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, 156, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - 393, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, 393, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, 164, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, 164, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, 156, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - 393, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, 156, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, 366, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, 261, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, 30, 31, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, 261, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, 261, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, 366, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, 35, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, 35, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, -1, -1, 73, 74, + 75, 76, 77, 78, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, 159, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, 404, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, 159, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, 90, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, 168, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, 90, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, 168, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, 159, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, 404, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, 90, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, 159, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + 377, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, 90, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, 267, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + 23, 24, 25, -1, 27, 28, 29, 30, 31, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, 410, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + 267, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, 267, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, 377, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, 5, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, 35, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, 35, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, 35, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, -1, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, -1, 43, 44, 45, 46, 47, - -1, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, 69, -1, -1, -1, 73, 74, 75, 76, -1, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, -1, 90, 91, 92, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - -1, -1, -1, 161, 162, 163, -1, 165, 166, -1, - 168, 169, -1, 171, 172, 173, 174, 175, -1, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, -1, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, -1, -1, 204, -1, 206, 207, - 208, 209, 210, -1, -1, 213, 214, -1, 216, -1, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, -1, 242, 243, 244, 245, -1, 247, - 248, -1, 250, -1, 252, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, -1, 270, -1, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, -1, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, -1, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, -1, 364, 365, -1, 367, - -1, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, 381, 382, 383, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, 406, 407, - -1, 409, -1, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, 35, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, -1, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, -1, - 43, 44, 45, 46, 47, -1, 49, 50, -1, 52, - 53, 54, 55, 56, -1, -1, 59, 60, 61, 62, - 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, - 73, 74, 75, 76, -1, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, -1, -1, 90, 91, 92, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -1, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, -1, 148, -1, 150, 151, 152, - 153, -1, 155, -1, 157, -1, -1, -1, 161, 162, - 163, -1, 165, 166, -1, 168, 169, -1, 171, 172, - 173, 174, 175, -1, 177, 178, 179, 180, -1, 182, - 183, 184, 185, 186, 187, -1, 189, -1, 191, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, -1, - -1, 204, -1, 206, 207, 208, 209, 210, -1, -1, - 213, 214, -1, 216, -1, -1, 219, 220, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, -1, 242, - 243, 244, 245, -1, 247, 248, -1, 250, -1, 252, - 253, 254, 255, 256, 257, -1, 259, -1, -1, 262, - 263, 264, -1, -1, 267, 268, -1, 270, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, - 283, 284, 285, 286, 287, 288, 289, 290, -1, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, -1, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, 318, 319, -1, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, -1, 346, 347, 348, 349, -1, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - -1, 364, 365, -1, 367, -1, 369, 370, 371, 372, - 373, -1, 375, 376, -1, -1, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, -1, - -1, 394, 395, 396, 397, 398, -1, -1, 401, 402, - 403, 404, 405, 406, 407, -1, 409, -1, 411, 412, - 413, 414, -1, -1, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 3, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, -1, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, -1, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, -1, 143, 144, 145, -1, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, -1, -1, - -1, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, -1, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, -1, 247, - 248, 249, 250, -1, -1, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - 268, 269, 270, 271, -1, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, -1, 286, -1, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, -1, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, -1, 382, -1, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, -1, 407, - 408, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 3, -1, - -1, -1, -1, -1, -1, -1, -1, 435, 436, 437, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, -1, 47, 48, 49, 50, -1, 52, 53, 54, - 55, 56, -1, -1, 59, 60, 61, 62, 63, -1, - 65, 66, 67, 68, -1, -1, 71, -1, 73, 74, - 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, - 85, 86, 87, -1, 89, 90, 91, 92, -1, -1, - -1, 96, -1, -1, -1, 100, 101, 102, 103, 104, - 105, 106, 107, 108, -1, 110, -1, 112, 113, 114, - 115, 116, 117, -1, 119, 120, 121, -1, -1, 124, - 125, 126, 127, 128, -1, 130, 131, 132, -1, 134, - 135, 136, -1, 138, 139, 140, 141, -1, 143, 144, - 145, -1, -1, 148, -1, 150, 151, 152, 153, -1, - 155, -1, 157, 158, -1, 160, 161, 162, 163, -1, - 165, -1, -1, -1, 169, -1, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, - 185, 186, 187, -1, 189, 190, -1, 192, 193, 194, - 195, 196, 197, -1, 199, -1, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, -1, -1, 213, -1, - 215, 216, 217, -1, 219, 220, 221, -1, -1, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, -1, 247, 248, 249, 250, 251, -1, 253, 254, - 255, 256, 257, -1, 259, -1, -1, 262, 263, 264, - -1, -1, 267, -1, 269, 270, 271, -1, 273, 274, - 275, 276, 277, 278, 279, 280, -1, -1, 283, 284, - -1, 286, -1, 288, 289, 290, -1, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - -1, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, 318, 319, 320, 321, 322, 323, -1, - 325, 326, 327, 328, 329, 330, 331, 332, -1, 334, - 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, -1, 364, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, -1, 379, 380, -1, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, -1, -1, 394, - 395, 396, 397, 398, -1, -1, 401, 402, 403, 404, - 405, -1, 407, -1, 409, 410, 411, 412, 413, 414, - -1, -1, 417, -1, -1, 420, 421, 422, 423, 424, - 425, 3, -1, -1, -1, -1, -1, -1, -1, -1, - 435, 436, 437, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - -1, 43, 44, 45, 46, 47, -1, 49, 50, -1, - 52, 53, 54, 55, 56, -1, -1, 59, 60, 61, - 62, 63, -1, 65, 66, 67, 68, 69, -1, -1, - -1, 73, 74, 75, 76, -1, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, -1, -1, 90, 91, - 92, -1, -1, -1, -1, -1, -1, -1, 100, 101, - 102, 103, 104, 105, 106, 107, 108, -1, 110, -1, - 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, - -1, -1, 124, 125, 126, 127, 128, -1, 130, 131, - 132, -1, 134, 135, 136, -1, 138, 139, 140, 141, - 142, 143, 144, 145, 146, -1, 148, -1, 150, 151, - 152, 153, -1, 155, -1, 157, -1, -1, -1, 161, - 162, 163, -1, 165, 166, -1, 168, 169, -1, 171, - 172, 173, 174, 175, -1, 177, 178, 179, 180, -1, - 182, 183, 184, 185, 186, 187, -1, 189, -1, 191, - 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, - -1, -1, 204, -1, 206, 207, 208, 209, 210, -1, - -1, 213, 214, -1, 216, -1, -1, 219, 220, 221, - -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, -1, - 242, 243, 244, 245, -1, 247, 248, -1, 250, -1, - 252, 253, 254, 255, 256, 257, -1, 259, -1, -1, - 262, 263, 264, -1, -1, 267, 268, -1, 270, -1, - 272, 273, 274, 275, 276, 277, -1, 279, 280, -1, - -1, 283, 284, 285, 286, 287, 288, 289, 290, -1, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, -1, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, 318, 319, -1, 321, - 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, - 332, -1, 334, 335, 336, 337, 338, -1, 340, 341, - 342, 343, 344, -1, 346, 347, 348, 349, -1, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, -1, 364, 365, -1, 367, -1, 369, 370, 371, - 372, 373, -1, 375, 376, -1, -1, 379, 380, 381, - 382, 383, -1, 385, 386, 387, 388, 389, 390, 391, - -1, -1, 394, 395, 396, 397, 398, -1, -1, 401, - 402, 403, 404, 405, 406, 407, -1, 409, -1, 411, - 412, 413, 414, -1, -1, 417, -1, -1, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 3, -1, -1, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, -1, - 47, 48, 49, 50, -1, 52, 53, 54, 55, 56, - -1, -1, 59, 60, 61, 62, 63, -1, 65, 66, - 67, 68, -1, -1, 71, -1, 73, 74, 75, 76, - 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, - 87, -1, 89, 90, 91, 92, -1, -1, -1, 96, - -1, -1, -1, 100, 101, 102, 103, 104, 105, 106, - 107, 108, -1, 110, -1, 112, 113, 114, 115, 116, - 117, -1, 119, 120, 121, -1, -1, 124, 125, 126, - 127, 128, -1, 130, 131, 132, -1, 134, 135, 136, - -1, 138, 139, 140, 141, -1, 143, 144, 145, -1, - -1, 148, -1, 150, 151, 152, 153, -1, 155, -1, - 157, 158, -1, 160, 161, 162, 163, -1, 165, -1, - -1, -1, 169, -1, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, - 187, -1, 189, 190, -1, 192, 193, 194, 195, 196, - 197, -1, 199, -1, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, -1, -1, 213, -1, 215, 216, - 217, -1, 219, 220, 221, -1, -1, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, -1, - 247, 248, 249, 250, -1, -1, 253, 254, 255, 256, - 257, -1, 259, -1, -1, 262, 263, 264, -1, -1, - 267, -1, 269, 270, 271, -1, 273, 274, 275, 276, - 277, 278, 279, 280, -1, -1, 283, 284, -1, 286, - -1, 288, 289, 290, -1, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, -1, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, 318, 319, 320, 321, 322, 323, -1, 325, 326, - 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, - 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, -1, 364, 365, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, -1, 379, 380, -1, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, -1, -1, 394, 395, 396, - 397, 398, -1, -1, 401, 402, 403, 404, 405, -1, - 407, -1, 409, 410, 411, 412, 413, 414, -1, -1, - 417, -1, -1, 420, 421, 422, 423, 424, 425, 3, - -1, -1, -1, -1, -1, -1, -1, -1, 435, 436, - 437, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, -1, 47, 48, 49, 50, -1, 52, 53, - 54, 55, 56, -1, -1, 59, 60, 61, 62, 63, - -1, 65, 66, 67, 68, -1, -1, 71, -1, 73, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, -1, 89, 90, 91, 92, -1, - -1, -1, 96, -1, -1, -1, 100, 101, 102, 103, - 104, 105, 106, 107, 108, -1, 110, -1, 112, 113, - 114, 115, 116, 117, -1, 119, 120, 121, -1, -1, - 124, 125, 126, 127, 128, -1, 130, 131, 132, -1, - 134, 135, 136, -1, 138, 139, 140, 141, -1, 143, - 144, 145, -1, -1, 148, -1, 150, 151, 152, 153, - -1, 155, -1, 157, 158, -1, 160, 161, 162, 163, - -1, 165, -1, -1, -1, 169, -1, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, - 184, 185, 186, 187, -1, 189, 190, -1, 192, 193, - 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, -1, -1, 213, - -1, 215, 216, 217, -1, 219, 220, 221, -1, -1, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, -1, 247, 248, 249, 250, -1, -1, 253, - 254, 255, 256, 257, -1, 259, -1, -1, 262, 263, - 264, -1, -1, 267, -1, 269, 270, 271, -1, 273, - 274, 275, 276, 277, 278, 279, 280, -1, -1, 283, - 284, -1, 286, -1, 288, 289, 290, -1, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, -1, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, 318, 319, 320, 321, 322, 323, - -1, 325, 326, 327, 328, 329, 330, 331, 332, -1, - 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, -1, -1, - 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, - -1, 375, 376, -1, -1, 379, 380, -1, 382, -1, - -1, 385, 386, 387, 388, 389, 390, 391, -1, -1, - 394, 395, 396, 397, 398, -1, -1, 401, 402, 403, - 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, - 414, -1, -1, 417, -1, -1, 420, 421, 422, 423, - 424, 425, 3, -1, -1, -1, -1, -1, -1, -1, - -1, 435, 436, 437, -1, -1, -1, 18, 19, 20, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, -1, 47, 48, 49, 50, - -1, 52, 53, 54, 55, 56, -1, -1, 59, 60, - 61, 62, 63, -1, 65, 66, 67, 68, -1, -1, - 71, -1, 73, 74, 75, 76, 77, 78, 79, 80, - -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, - 91, 92, -1, -1, -1, 96, -1, -1, -1, 100, - 101, 102, 103, 104, 105, 106, 107, 108, -1, 110, - -1, 112, 113, 114, 115, 116, 117, -1, 119, 120, - 121, -1, -1, 124, 125, 126, 127, 128, -1, 130, - 131, 132, -1, 134, 135, 136, -1, 138, 139, 140, - 141, -1, 143, 144, 145, -1, -1, 148, -1, 150, - 151, 152, 153, -1, 155, -1, 157, 158, -1, 160, - 161, 162, 163, -1, 165, -1, -1, -1, 169, -1, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, 186, 187, -1, 189, 190, - -1, 192, 193, 194, 195, 196, 197, -1, 199, -1, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - -1, -1, 213, -1, 215, 216, 217, -1, 219, 220, - 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, -1, 247, 248, 249, 250, - -1, -1, 253, 254, 255, 256, 257, -1, 259, -1, - -1, 262, 263, 264, -1, -1, 267, -1, 269, 270, - 271, -1, 273, 274, 275, 276, 277, 278, 279, 280, - -1, -1, 283, 284, -1, 286, -1, 288, 289, 290, - -1, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, -1, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, 318, 319, 320, - 321, 322, 323, -1, 325, 326, 327, 328, 329, 330, - 331, 332, -1, 334, 335, 336, 337, 338, -1, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, -1, 364, 365, -1, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, -1, 379, 380, - -1, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, -1, -1, 394, 395, 396, 397, 398, -1, -1, - 401, 402, 403, 404, 405, -1, 407, -1, 409, 410, - 411, 412, 413, 414, -1, -1, 417, -1, -1, 420, - 421, 422, 423, 424, 425, 3, -1, -1, -1, -1, - -1, -1, -1, -1, 435, 436, 437, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, -1, 47, - 48, 49, 50, -1, 52, 53, 54, 55, 56, -1, - -1, 59, 60, 61, 62, 63, -1, 65, 66, 67, - 68, -1, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, -1, -1, -1, 96, -1, - -1, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, -1, 110, -1, 112, 113, 114, 115, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -1, 134, 135, 136, -1, - 138, 139, 140, 141, -1, 143, 144, 145, -1, -1, - 148, -1, 150, 151, 152, 153, -1, 155, -1, 157, - 158, -1, 160, 161, 162, 163, -1, 165, -1, -1, - -1, 169, -1, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, - -1, 189, 190, -1, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, -1, -1, 213, -1, 215, 216, 217, - -1, 219, 220, 221, -1, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, -1, 247, - 248, 249, 250, -1, -1, 253, 254, 255, 256, 257, - -1, 259, -1, -1, 262, 263, 264, -1, -1, 267, - -1, 269, 270, 271, -1, 273, 274, 275, 276, 277, - 278, 279, 280, -1, -1, 283, 284, -1, 286, -1, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - 318, 319, 320, 321, 322, 323, -1, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, -1, 364, 365, -1, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - -1, 379, 380, -1, 382, -1, -1, 385, 386, 387, - 388, 389, 390, 391, -1, -1, 394, 395, 396, 397, - 398, -1, -1, 401, 402, 403, 404, 405, -1, 407, - -1, 409, 410, 411, 412, 413, 414, -1, -1, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 3, -1, - -1, -1, -1, -1, -1, -1, -1, 435, 436, 437, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, -1, 47, 48, 49, 50, -1, 52, 53, 54, - 55, 56, -1, -1, 59, 60, 61, 62, 63, -1, - 65, 66, 67, 68, -1, -1, 71, -1, 73, 74, - 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, - 85, 86, 87, -1, 89, 90, 91, 92, -1, -1, - -1, 96, -1, -1, -1, 100, 101, 102, 103, 104, - 105, 106, 107, 108, -1, 110, -1, 112, 113, 114, - 115, 116, 117, -1, 119, 120, 121, -1, -1, 124, - 125, 126, 127, 128, -1, 130, 131, 132, -1, 134, - 135, 136, -1, 138, 139, 140, 141, -1, 143, 144, - 145, -1, -1, 148, -1, 150, 151, 152, 153, -1, - 155, -1, 157, 158, -1, 160, 161, 162, 163, -1, - 165, -1, -1, -1, 169, -1, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, - 185, 186, 187, -1, 189, 190, -1, 192, 193, 194, - 195, 196, 197, -1, 199, -1, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, -1, -1, 213, -1, - 215, 216, 217, -1, 219, 220, 221, -1, -1, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, -1, 247, 248, 249, 250, -1, -1, 253, 254, - 255, 256, 257, -1, 259, -1, -1, 262, 263, 264, - -1, -1, 267, -1, 269, 270, 271, -1, 273, 274, - 275, 276, 277, 278, 279, 280, -1, -1, 283, 284, - -1, 286, -1, 288, 289, 290, -1, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - -1, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, 318, 319, 320, 321, 322, 323, -1, - 325, 326, 327, 328, 329, 330, 331, 332, -1, 334, - 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, -1, 364, - 365, -1, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, -1, 379, 380, -1, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, -1, -1, 394, - 395, 396, 397, 398, -1, -1, 401, 402, 403, 404, - 405, -1, 407, -1, 409, 410, 411, 412, 413, 414, - -1, -1, 417, -1, -1, 420, 421, 422, 423, 424, - 425, 3, -1, -1, -1, -1, -1, -1, -1, -1, - 435, 436, 437, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, -1, 47, 48, 49, 50, -1, - 52, 53, 54, 55, 56, -1, -1, 59, 60, 61, - 62, 63, -1, 65, 66, 67, 68, -1, -1, 71, - -1, 73, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, - 92, -1, -1, -1, 96, -1, -1, -1, 100, 101, - 102, 103, 104, 105, 106, 107, 108, -1, 110, -1, - 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, - -1, -1, 124, 125, 126, 127, 128, -1, 130, 131, - 132, -1, 134, 135, 136, -1, 138, 139, 140, 141, - -1, 143, 144, 145, -1, -1, 148, -1, 150, 151, - 152, 153, -1, 155, -1, 157, 158, -1, 160, 161, - 162, 163, -1, 165, -1, -1, -1, 169, -1, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, -1, - 182, 183, 184, 185, 186, 187, -1, 189, 190, -1, - 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, -1, - -1, 213, -1, 215, 216, 217, -1, 219, 220, 221, - -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, -1, 247, 248, 249, 250, -1, - -1, 253, 254, 255, 256, 257, -1, 259, -1, -1, - 262, 263, 264, -1, -1, 267, -1, 269, 270, 271, - -1, 273, 274, 275, 276, 277, 278, 279, 280, -1, - -1, 283, 284, -1, 286, -1, 288, 289, 290, -1, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, -1, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, 318, 319, 320, 321, - 322, 323, -1, 325, 326, 327, 328, 329, 330, 331, - 332, -1, 334, 335, 336, 337, 338, -1, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - -1, -1, 364, 365, -1, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, -1, 379, 380, -1, - 382, -1, -1, 385, 386, 387, 388, 389, 390, 391, - -1, -1, 394, 395, 396, 397, 398, -1, -1, 401, - 402, 403, 404, 405, -1, 407, -1, 409, 410, 411, - 412, 413, 414, -1, -1, 417, -1, -1, 420, 421, - 422, 423, 424, 425, 3, -1, -1, -1, -1, -1, - -1, -1, -1, 435, 436, 437, -1, -1, -1, 18, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, -1, 52, 53, 54, 55, 56, -1, -1, - 59, 60, 61, 62, 63, -1, 65, 66, 67, 68, - -1, -1, 71, -1, 73, 74, 75, 76, 77, 78, - 79, 80, -1, 82, 83, 84, 85, 86, 87, -1, - 89, 90, 91, 92, -1, -1, -1, 96, -1, -1, - -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, - -1, 110, -1, 112, 113, 114, 115, 116, 117, -1, - 119, 120, 121, -1, -1, 124, 125, 126, 127, 128, - -1, 130, 131, 132, -1, 134, 135, 136, -1, 138, - 139, 140, 141, -1, 143, 144, 145, -1, -1, 148, - -1, 150, 151, 152, 153, -1, 155, -1, 157, 158, - -1, 160, 161, 162, 163, -1, 165, -1, -1, -1, - 169, -1, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, -1, 182, 183, 184, 185, 186, 187, -1, - 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, - 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, -1, -1, 213, -1, 215, 216, 217, -1, - 219, 220, 221, -1, -1, 224, 225, 226, 227, 228, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, -1, 247, 248, - 249, 250, -1, -1, 253, 254, 255, 256, 257, -1, - 259, -1, -1, 262, 263, 264, -1, -1, 267, -1, - 269, 270, 271, -1, 273, 274, 275, 276, 277, 278, - 279, 280, -1, -1, 283, 284, -1, 286, -1, 288, - 289, 290, -1, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, -1, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, 318, - 319, 320, 321, 322, 323, -1, 325, 326, 327, 328, - 329, 330, 331, 332, -1, 334, 335, 336, 337, 338, - -1, 340, 341, -1, 343, 344, 345, 346, 347, 348, - 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, -1, 364, 365, -1, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, -1, - 379, 380, -1, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, -1, -1, 394, 395, 396, 397, 398, - -1, -1, 401, 402, 403, 404, 405, -1, 407, -1, - 409, 410, 411, 412, 413, 414, -1, -1, 417, -1, - -1, 420, 421, 422, 423, 424, 425, 3, -1, -1, - -1, -1, -1, -1, -1, -1, 435, 436, 437, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - -1, -1, 48, -1, -1, -1, 52, 53, 54, 55, - 56, -1, -1, 59, 60, -1, -1, 63, -1, 65, - 66, 67, 68, -1, -1, 71, -1, 73, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, -1, 89, 90, 91, 92, -1, -1, -1, - 96, -1, -1, -1, 100, 101, 102, 103, 104, 105, - -1, -1, 108, -1, 110, -1, 112, 113, 114, 115, - 116, 117, -1, 119, 120, 121, -1, -1, 124, 125, - 126, 127, 128, -1, 130, 131, 132, -1, 134, 135, - 136, -1, 138, 139, 140, 141, -1, 143, 144, 145, - -1, -1, 148, -1, 150, 151, -1, 153, -1, 155, - -1, 157, 158, -1, 160, 161, 162, 163, -1, 165, - -1, -1, -1, 169, -1, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, - 186, 187, -1, 189, 190, -1, 192, 193, 194, 195, - -1, -1, -1, -1, -1, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, -1, -1, 213, -1, 215, - 216, 217, -1, 219, 220, 221, -1, -1, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, -1, 241, -1, 243, 244, -1, - -1, 247, 248, 249, 250, -1, -1, 253, -1, 255, - 256, 257, -1, 259, -1, -1, 262, 263, 264, -1, - -1, 267, -1, 269, 270, 271, -1, 273, 274, 275, - 276, 277, 278, 279, 280, -1, -1, 283, 284, -1, - 286, -1, 288, 289, 290, -1, 292, 293, 294, 295, - 296, 297, 298, 299, -1, 301, 302, 303, 304, -1, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, 318, 319, 320, 321, 322, 323, -1, 325, - 326, 327, 328, 329, 330, 331, 332, -1, 334, 335, - 336, 337, 338, -1, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, -1, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, -1, -1, 364, 365, - -1, 367, 368, 369, 370, 371, 372, 373, -1, -1, - -1, -1, -1, 379, 380, -1, 382, -1, -1, 385, - 386, 387, 388, 389, 390, 391, -1, -1, 394, 395, - 396, 397, 398, -1, -1, 401, 402, 403, 404, 405, - -1, -1, -1, 409, 410, 411, 412, 413, 414, -1, - -1, 417, -1, -1, 420, 421, 422, 423, 424, 425, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, - 436, 437 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = -{ - 0, 18, 28, 30, 31, 45, 65, 67, 68, 73, - 75, 86, 88, 105, 108, 121, 123, 127, 133, 141, - 143, 149, 164, 180, 219, 220, 225, 237, 248, 281, - 289, 301, 306, 307, 309, 314, 319, 322, 327, 332, - 333, 340, 344, 354, 366, 385, 395, 401, 406, 419, - 440, 454, 461, 462, 463, 464, 470, 471, 473, 474, - 475, 476, 477, 478, 479, 481, 482, 486, 498, 503, - 504, 507, 508, 509, 521, 524, 525, 541, 578, 581, - 584, 585, 586, 593, 599, 601, 603, 604, 607, 610, - 611, 615, 616, 625, 629, 630, 631, 632, 633, 636, - 638, 639, 640, 641, 642, 649, 650, 663, 664, 668, - 670, 671, 672, 682, 684, 691, 692, 695, 696, 697, - 698, 699, 705, 707, 710, 714, 718, 719, 729, 730, - 733, 738, 749, 772, 775, 776, 777, 780, 783, 785, - 787, 789, 790, 795, 796, 799, 800, 801, 804, 805, - 812, 813, 815, 816, 817, 822, 824, 825, 831, 832, - 833, 834, 835, 836, 838, 839, 841, 842, 844, 847, - 848, 853, 859, 862, 864, 865, 873, 875, 880, 887, - 891, 892, 893, 894, 895, 896, 899, 934, 379, 422, - 818, 25, 71, 85, 103, 109, 125, 136, 144, 156, - 161, 167, 184, 209, 230, 262, 284, 294, 321, 326, - 328, 334, 337, 365, 366, 369, 373, 382, 387, 399, - 412, 600, 818, 3, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 37, 38, 40, 41, - 43, 44, 45, 46, 47, 49, 50, 52, 53, 54, - 55, 56, 59, 60, 61, 62, 63, 65, 66, 67, - 68, 69, 73, 74, 75, 76, 78, 79, 80, 82, - 83, 84, 85, 86, 87, 90, 91, 92, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 110, 112, 113, - 114, 115, 116, 117, 119, 120, 121, 124, 125, 126, - 127, 128, 130, 131, 132, 134, 135, 136, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 148, 150, 151, - 152, 153, 155, 157, 161, 162, 163, 165, 166, 168, - 169, 171, 172, 173, 174, 175, 177, 178, 179, 180, - 182, 183, 184, 185, 186, 187, 189, 191, 192, 193, - 194, 195, 196, 197, 199, 201, 204, 206, 207, 208, - 209, 210, 213, 214, 216, 219, 220, 221, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 242, 243, 244, 245, 247, - 248, 250, 252, 253, 254, 255, 256, 257, 259, 262, - 263, 264, 267, 268, 270, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 283, 284, 285, 286, 287, 288, - 289, 290, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 318, 319, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 334, 335, 336, 337, 338, 340, 341, 342, 343, 344, - 346, 347, 348, 349, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 364, 365, 367, 369, - 370, 371, 372, 373, 375, 376, 379, 380, 381, 382, - 383, 385, 386, 387, 388, 389, 390, 391, 394, 395, - 396, 397, 398, 401, 402, 403, 404, 405, 406, 407, - 409, 411, 412, 413, 414, 417, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 888, 1056, 1070, 1074, 1075, 410, - 849, 260, 290, 818, 48, 454, 532, 20, 25, 37, - 58, 71, 81, 103, 109, 125, 136, 144, 156, 163, - 167, 221, 262, 265, 284, 321, 328, 337, 369, 370, - 372, 373, 382, 387, 393, 396, 399, 542, 583, 687, - 739, 750, 26, 289, 1056, 888, 26, 283, 335, 370, - 372, 5, 208, 781, 782, 1065, 20, 25, 37, 58, - 71, 85, 103, 125, 136, 144, 156, 161, 167, 184, - 230, 262, 273, 284, 321, 326, 328, 334, 337, 366, - 369, 373, 380, 382, 387, 399, 412, 600, 700, 818, - 1056, 88, 410, 454, 578, 581, 584, 848, 854, 862, - 865, 873, 880, 887, 891, 9, 19, 26, 43, 151, - 157, 159, 181, 210, 243, 292, 308, 445, 446, 715, - 716, 888, 1064, 1066, 26, 88, 305, 333, 720, 721, - 722, 1070, 156, 1070, 1061, 1065, 366, 902, 715, 1070, - 314, 340, 344, 379, 1056, 273, 230, 103, 184, 328, - 365, 366, 454, 791, 792, 327, 1070, 26, 338, 375, - 379, 490, 499, 500, 1070, 23, 164, 720, 721, 290, - 818, 1070, 207, 26, 122, 904, 905, 59, 82, 221, - 239, 321, 328, 338, 375, 379, 425, 487, 488, 489, - 490, 26, 338, 375, 379, 490, 379, 261, 945, 1054, - 1070, 902, 447, 1070, 160, 454, 850, 454, 1049, 303, - 897, 898, 1056, 897, 892, 893, 896, 0, 457, 849, - 137, 198, 266, 392, 906, 907, 892, 894, 895, 114, - 194, 398, 458, 3, 42, 48, 71, 77, 89, 96, - 158, 160, 176, 190, 202, 203, 205, 215, 217, 241, - 249, 269, 271, 320, 345, 368, 410, 1062, 1070, 1071, - 1074, 1076, 702, 1070, 702, 1057, 1070, 293, 702, 382, - 702, 1056, 1070, 102, 366, 728, 1062, 3, 99, 339, - 1067, 1068, 1072, 1074, 1075, 1076, 26, 175, 1054, 255, - 412, 8, 15, 16, 17, 66, 148, 441, 442, 443, - 445, 446, 447, 448, 449, 450, 779, 1015, 1016, 1070, - 175, 1056, 26, 1067, 1068, 1056, 1056, 175, 1054, 1056, - 314, 340, 26, 175, 945, 1056, 330, 1056, 702, 228, - 1067, 1068, 175, 1054, 208, 111, 204, 246, 299, 819, - 820, 821, 1054, 1060, 1070, 20, 25, 58, 71, 72, - 81, 85, 103, 125, 136, 144, 156, 161, 184, 209, - 230, 262, 284, 321, 326, 328, 334, 337, 366, 369, - 373, 380, 382, 387, 412, 600, 708, 1065, 861, 865, - 873, 880, 891, 1054, 232, 1062, 1056, 454, 702, 382, - 1057, 702, 382, 175, 1056, 102, 366, 370, 372, 1067, - 1068, 370, 372, 66, 148, 779, 312, 1056, 1067, 175, - 483, 1070, 1056, 1056, 330, 1056, 702, 228, 1067, 303, - 334, 366, 412, 230, 85, 184, 161, 326, 380, 386, - 594, 26, 1056, 889, 497, 1065, 1072, 782, 232, 175, - 1062, 1056, 175, 786, 175, 1057, 3, 47, 49, 50, - 61, 62, 106, 107, 126, 152, 175, 196, 197, 199, - 240, 242, 254, 300, 342, 348, 375, 376, 407, 704, - 960, 962, 964, 966, 968, 970, 971, 972, 974, 975, - 976, 979, 980, 1071, 1074, 382, 102, 366, 175, 1062, - 175, 1068, 1069, 77, 412, 66, 148, 175, 779, 52, - 175, 1056, 175, 1069, 175, 1056, 175, 1056, 175, 1056, - 330, 786, 175, 1056, 175, 704, 175, 228, 1069, 208, - 175, 701, 702, 454, 863, 542, 854, 406, 848, 855, - 856, 857, 1072, 849, 1066, 716, 717, 26, 717, 1066, - 717, 26, 717, 1066, 717, 717, 717, 1066, 1064, 1064, - 888, 717, 293, 454, 454, 561, 561, 561, 260, 377, - 458, 561, 328, 945, 946, 458, 814, 500, 488, 490, - 26, 490, 1065, 454, 860, 52, 412, 410, 793, 794, - 1054, 1056, 1070, 42, 437, 204, 456, 263, 263, 260, - 159, 1065, 377, 154, 711, 260, 4, 6, 7, 8, - 10, 34, 47, 49, 50, 57, 58, 61, 62, 69, - 71, 93, 94, 95, 96, 97, 98, 99, 106, 107, - 142, 146, 147, 152, 166, 168, 196, 197, 199, 214, - 222, 223, 240, 242, 246, 251, 252, 254, 262, 272, - 285, 300, 324, 339, 348, 362, 375, 376, 381, 383, - 384, 393, 399, 407, 427, 428, 429, 430, 431, 432, - 433, 434, 438, 445, 446, 447, 454, 892, 963, 966, - 969, 970, 971, 973, 974, 975, 979, 980, 984, 986, - 987, 988, 990, 1011, 1012, 1013, 1017, 1036, 1041, 1051, - 1052, 1062, 1063, 1064, 1065, 1070, 1050, 1051, 1065, 26, - 505, 1053, 1054, 338, 487, 109, 496, 1065, 497, 1065, - 42, 63, 487, 437, 349, 820, 263, 159, 377, 443, - 42, 437, 204, 821, 454, 1054, 447, 452, 456, 1042, - 1044, 946, 3, 158, 160, 410, 845, 846, 848, 158, - 851, 109, 984, 1047, 1048, 897, 458, 454, 852, 455, - 455, 463, 1054, 26, 122, 903, 903, 52, 903, 149, - 154, 218, 258, 910, 912, 913, 928, 930, 931, 932, - 906, 907, 159, 200, 945, 947, 1049, 454, 762, 1044, - 274, 310, 340, 456, 703, 274, 310, 340, 3, 80, - 131, 224, 274, 281, 310, 340, 369, 371, 419, 498, - 501, 826, 827, 828, 829, 734, 22, 127, 274, 310, - 340, 403, 512, 1056, 340, 22, 127, 398, 480, 423, - 175, 945, 54, 87, 117, 145, 178, 213, 246, 274, - 275, 310, 318, 325, 332, 340, 352, 360, 414, 498, - 502, 765, 773, 454, 751, 310, 480, 181, 142, 22, - 28, 68, 117, 120, 127, 130, 155, 186, 244, 246, - 256, 264, 274, 310, 313, 314, 340, 403, 510, 511, - 619, 4, 446, 591, 1066, 26, 175, 1054, 702, 702, - 454, 778, 456, 142, 260, 181, 472, 310, 419, 440, - 465, 472, 260, 274, 310, 142, 53, 101, 183, 231, - 234, 244, 273, 310, 315, 340, 354, 510, 588, 589, - 274, 310, 411, 619, 627, 500, 488, 181, 142, 310, - 340, 510, 274, 310, 314, 340, 78, 119, 276, 371, - 260, 22, 28, 127, 274, 310, 340, 522, 523, 154, - 310, 340, 465, 501, 142, 310, 340, 510, 1056, 216, - 111, 261, 424, 458, 819, 400, 843, 260, 232, 1062, - 454, 1056, 960, 382, 102, 366, 1062, 255, 412, 66, - 148, 779, 1056, 1056, 330, 154, 1056, 960, 208, 702, - 455, 561, 1056, 454, 677, 762, 64, 960, 159, 454, - 673, 1056, 465, 35, 837, 1056, 246, 465, 423, 175, - 1054, 465, 702, 702, 673, 396, 542, 260, 465, 246, - 42, 484, 387, 626, 274, 602, 78, 119, 276, 371, - 24, 44, 195, 651, 35, 673, 154, 465, 412, 175, - 1054, 175, 579, 1054, 1054, 412, 702, 77, 740, 1062, - 1056, 154, 600, 48, 100, 193, 244, 329, 142, 762, - 55, 316, 513, 142, 454, 142, 409, 977, 977, 977, - 454, 965, 965, 287, 454, 967, 142, 61, 62, 977, - 965, 962, 421, 440, 454, 981, 454, 981, 458, 513, - 34, 961, 62, 454, 978, 104, 173, 233, 236, 331, - 435, 454, 982, 983, 703, 965, 423, 142, 751, 142, - 458, 175, 701, 175, 702, 175, 702, 142, 778, 1069, - 142, 260, 142, 142, 260, 142, 513, 142, 78, 119, - 276, 371, 154, 142, 260, 142, 513, 142, 154, 175, - 175, 497, 142, 458, 513, 984, 1020, 366, 455, 458, - 147, 260, 384, 494, 497, 591, 858, 854, 717, 888, - 717, 888, 717, 888, 717, 888, 717, 888, 888, 888, - 717, 888, 454, 562, 563, 1070, 562, 26, 103, 125, - 156, 161, 208, 209, 328, 334, 366, 369, 387, 723, - 1053, 1069, 722, 1056, 181, 458, 876, 1065, 960, 1023, - 35, 1069, 740, 455, 458, 216, 1070, 154, 154, 723, - 1069, 327, 1070, 497, 260, 454, 1045, 452, 892, 1024, - 984, 1040, 454, 454, 154, 454, 454, 892, 454, 454, - 454, 454, 454, 454, 984, 454, 454, 454, 454, 454, - 454, 454, 454, 892, 454, 454, 454, 454, 454, 454, - 454, 454, 984, 984, 984, 892, 984, 1020, 1044, 1065, - 454, 1065, 3, 8, 11, 15, 16, 17, 32, 35, - 40, 46, 70, 176, 181, 202, 203, 217, 249, 262, - 265, 345, 438, 441, 442, 443, 445, 446, 447, 448, - 449, 450, 1015, 1017, 1019, 420, 999, 271, 984, 200, - 458, 900, 454, 1065, 1044, 900, 112, 177, 506, 458, - 63, 109, 497, 35, 3, 109, 221, 495, 591, 980, - 1065, 1065, 83, 124, 996, 92, 109, 491, 492, 494, - 591, 109, 491, 216, 1054, 984, 1043, 3, 26, 30, - 31, 32, 33, 34, 35, 36, 39, 51, 57, 58, - 64, 70, 72, 81, 88, 93, 94, 95, 97, 98, - 99, 109, 111, 118, 122, 123, 129, 133, 137, 147, - 149, 154, 156, 159, 164, 167, 170, 181, 188, 198, - 200, 211, 212, 218, 222, 223, 246, 251, 258, 260, - 261, 265, 266, 282, 291, 305, 317, 333, 339, 350, - 363, 366, 374, 377, 378, 384, 392, 393, 399, 400, - 408, 415, 416, 418, 419, 447, 1059, 1073, 1074, 1075, - 1076, 1077, 1042, 84, 315, 706, 455, 458, 849, 455, - 458, 898, 1055, 1056, 35, 852, 894, 894, 908, 909, - 984, 894, 151, 243, 919, 206, 244, 299, 343, 398, - 26, 914, 984, 915, 917, 984, 986, 928, 929, 913, - 912, 910, 911, 154, 931, 256, 933, 910, 928, 947, - 866, 1054, 35, 1070, 340, 181, 191, 266, 268, 342, - 408, 447, 755, 756, 757, 759, 761, 763, 960, 1071, - 274, 310, 340, 377, 377, 328, 1059, 456, 377, 377, - 328, 218, 377, 377, 369, 487, 274, 826, 828, 443, - 830, 154, 164, 181, 319, 735, 736, 64, 81, 138, - 156, 291, 393, 558, 559, 81, 109, 246, 377, 81, - 377, 109, 246, 328, 81, 120, 130, 274, 310, 669, - 328, 608, 25, 58, 71, 85, 125, 136, 156, 161, - 230, 262, 328, 334, 337, 366, 373, 380, 387, 412, - 600, 1056, 142, 310, 340, 510, 260, 591, 260, 332, - 213, 377, 1070, 377, 251, 591, 113, 201, 328, 338, - 379, 489, 316, 340, 765, 774, 455, 752, 755, 377, - 399, 369, 1054, 72, 138, 175, 549, 558, 1070, 72, - 81, 797, 260, 260, 324, 326, 382, 81, 797, 29, - 313, 324, 326, 382, 324, 1054, 155, 186, 256, 702, - 454, 377, 377, 174, 454, 517, 227, 369, 396, 419, - 421, 517, 81, 458, 4, 274, 181, 142, 117, 310, - 340, 510, 400, 400, 245, 960, 274, 340, 779, 1056, - 1054, 103, 501, 377, 467, 501, 1054, 377, 377, 1054, - 591, 52, 590, 591, 591, 101, 231, 234, 52, 377, - 465, 328, 465, 244, 589, 377, 377, 251, 1065, 619, - 369, 945, 81, 377, 797, 328, 377, 377, 517, 517, - 702, 702, 702, 702, 1054, 41, 405, 41, 41, 377, - 41, 377, 328, 458, 399, 637, 1068, 377, 467, 1054, - 377, 328, 274, 310, 299, 311, 336, 493, 819, 1060, - 1070, 1054, 762, 960, 260, 202, 423, 751, 591, 702, - 702, 778, 260, 202, 260, 78, 119, 276, 371, 960, - 260, 202, 702, 202, 377, 419, 533, 387, 3, 678, - 679, 673, 454, 35, 702, 674, 675, 1073, 24, 826, - 960, 260, 142, 605, 1056, 246, 454, 466, 687, 400, - 303, 412, 1054, 466, 142, 1068, 88, 164, 485, 541, - 585, 650, 718, 738, 822, 1065, 627, 628, 1068, 224, - 702, 702, 702, 702, 256, 114, 194, 385, 398, 652, - 653, 134, 298, 454, 637, 466, 1054, 246, 587, 588, - 246, 35, 256, 454, 561, 561, 175, 582, 1054, 154, - 175, 741, 1060, 454, 753, 35, 960, 208, 419, 421, - 890, 329, 1062, 513, 960, 1057, 454, 1020, 1064, 704, - 977, 977, 34, 961, 375, 375, 1064, 1064, 960, 452, - 452, 340, 1064, 377, 377, 377, 454, 377, 1064, 965, - 175, 1056, 1062, 513, 1069, 1068, 142, 513, 142, 400, - 142, 400, 779, 513, 513, 1056, 702, 1069, 1056, 702, - 1056, 1056, 960, 1056, 702, 704, 1069, 637, 142, 142, - 513, 701, 702, 455, 458, 175, 1054, 854, 856, 888, - 888, 888, 888, 888, 888, 562, 455, 458, 455, 162, - 335, 367, 1055, 701, 102, 337, 727, 728, 1055, 255, - 1055, 1053, 1053, 1055, 701, 377, 419, 731, 137, 218, - 634, 635, 20, 140, 324, 343, 877, 945, 250, 878, - 455, 458, 861, 377, 1054, 791, 792, 794, 721, 720, - 721, 159, 165, 732, 1070, 25, 72, 103, 125, 136, - 156, 161, 209, 230, 321, 328, 334, 366, 369, 387, - 412, 600, 712, 1020, 1042, 453, 1020, 1024, 1025, 415, - 1037, 1038, 984, 1020, 454, 1064, 1064, 3, 104, 173, - 233, 236, 331, 435, 1026, 1027, 1065, 1020, 1020, 1020, - 1064, 1064, 984, 779, 984, 1028, 324, 445, 446, 454, - 985, 986, 1017, 1030, 455, 1020, 984, 1020, 1031, 984, - 51, 159, 212, 378, 984, 1020, 1034, 1020, 238, 986, - 984, 994, 995, 996, 238, 984, 996, 455, 458, 1064, - 982, 960, 984, 984, 984, 984, 1073, 375, 39, 363, - 1046, 702, 984, 454, 892, 1035, 122, 124, 147, 246, - 251, 256, 384, 394, 984, 454, 984, 377, 46, 176, - 181, 217, 345, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 26, 33, 350, 1014, 167, 150, 1000, - 324, 454, 1011, 163, 221, 366, 370, 372, 396, 901, - 1054, 1052, 159, 935, 26, 122, 408, 447, 455, 757, - 984, 1021, 1022, 1071, 935, 1054, 379, 454, 1065, 458, - 455, 453, 459, 174, 174, 513, 1054, 846, 847, 1054, - 1047, 455, 458, 454, 458, 36, 118, 400, 747, 454, - 916, 1066, 343, 206, 261, 458, 324, 325, 918, 1053, - 250, 347, 879, 929, 911, 400, 874, 109, 454, 867, - 891, 35, 1070, 454, 881, 882, 883, 884, 885, 1070, - 268, 52, 1071, 455, 757, 759, 756, 759, 1071, 266, - 455, 458, 703, 377, 377, 328, 1068, 1056, 1056, 1059, - 1068, 1056, 1056, 1068, 1057, 1056, 109, 494, 1066, 321, - 399, 720, 328, 164, 720, 454, 1056, 400, 742, 206, - 206, 400, 454, 577, 175, 1056, 251, 1068, 1056, 1056, - 984, 251, 1056, 1056, 29, 313, 377, 377, 1056, 377, - 609, 1062, 454, 702, 702, 960, 382, 102, 366, 728, - 412, 66, 148, 779, 1056, 702, 1056, 702, 330, 154, - 960, 702, 208, 169, 244, 274, 310, 404, 612, 613, - 614, 945, 377, 797, 328, 251, 144, 113, 201, 1068, - 1056, 260, 1056, 455, 458, 1067, 1069, 1056, 310, 510, - 175, 549, 246, 960, 1056, 1070, 1056, 144, 216, 1056, - 26, 399, 1056, 175, 1056, 175, 1070, 326, 382, 326, - 382, 216, 1056, 26, 399, 1056, 216, 324, 1054, 22, - 127, 340, 620, 621, 622, 623, 1073, 1068, 1056, 109, - 160, 247, 400, 516, 519, 520, 1073, 1056, 259, 68, - 259, 1056, 511, 377, 369, 1054, 260, 377, 797, 328, - 1058, 1070, 1058, 458, 455, 458, 377, 328, 454, 260, - 310, 377, 646, 1057, 1067, 3, 80, 132, 186, 280, - 391, 399, 402, 468, 310, 1068, 1056, 310, 340, 510, - 588, 591, 702, 1056, 591, 1056, 591, 1068, 1056, 1056, - 310, 340, 510, 1056, 1056, 1056, 1056, 1068, 1056, 22, - 28, 127, 274, 310, 340, 274, 310, 340, 673, 310, - 340, 310, 340, 117, 310, 959, 1070, 175, 683, 1070, - 175, 1070, 1068, 1056, 1056, 1056, 22, 523, 337, 1067, - 310, 340, 510, 1056, 1056, 377, 377, 76, 390, 299, - 202, 35, 125, 702, 251, 709, 1065, 202, 202, 400, - 400, 202, 702, 709, 702, 208, 702, 709, 202, 709, - 296, 527, 259, 159, 377, 526, 184, 443, 455, 458, - 984, 960, 455, 458, 443, 652, 551, 1073, 1056, 55, - 159, 328, 411, 606, 613, 614, 142, 217, 543, 545, - 547, 549, 555, 558, 23, 181, 321, 364, 468, 469, - 154, 1058, 412, 1054, 154, 647, 483, 1070, 484, 265, - 542, 156, 1065, 673, 673, 673, 673, 256, 260, 265, - 454, 673, 957, 958, 959, 337, 454, 142, 142, 141, - 891, 702, 543, 1070, 419, 421, 573, 419, 518, 246, - 35, 561, 1065, 246, 260, 455, 754, 755, 760, 35, - 208, 318, 380, 418, 764, 765, 766, 260, 208, 497, - 172, 172, 154, 762, 35, 1020, 455, 455, 513, 452, - 437, 437, 455, 455, 1064, 453, 1064, 1070, 455, 173, - 233, 983, 233, 983, 983, 1064, 236, 455, 142, 513, - 751, 701, 702, 1058, 702, 1058, 778, 260, 513, 260, - 513, 513, 208, 260, 513, 513, 337, 154, 497, 513, - 984, 246, 455, 563, 181, 181, 181, 423, 1055, 458, - 591, 592, 167, 724, 725, 1068, 23, 732, 377, 454, - 159, 140, 343, 140, 343, 324, 398, 235, 960, 1068, - 419, 580, 1054, 1056, 159, 260, 724, 52, 513, 1062, - 960, 382, 366, 1062, 255, 412, 960, 208, 702, 455, - 453, 453, 458, 984, 129, 1038, 1039, 35, 455, 984, - 455, 455, 455, 159, 455, 455, 455, 455, 455, 458, - 455, 282, 1029, 455, 454, 985, 985, 1020, 11, 15, - 16, 17, 181, 202, 262, 441, 442, 443, 445, 446, - 447, 448, 449, 450, 1017, 985, 455, 455, 154, 159, - 1032, 1033, 455, 35, 1034, 1020, 1034, 1034, 159, 455, - 455, 1073, 279, 998, 35, 455, 458, 984, 1073, 458, - 984, 1045, 984, 455, 437, 985, 985, 135, 1020, 159, - 122, 124, 147, 251, 256, 384, 394, 454, 135, 779, - 984, 363, 1046, 984, 1035, 984, 377, 454, 892, 454, - 454, 270, 1004, 454, 1020, 370, 372, 370, 372, 1054, - 902, 902, 902, 211, 325, 454, 892, 936, 937, 938, - 945, 950, 987, 989, 990, 1062, 1070, 416, 955, 1021, - 1021, 1022, 455, 13, 14, 458, 906, 907, 955, 820, - 1064, 982, 492, 984, 1043, 852, 1056, 861, 909, 262, - 1015, 1018, 439, 748, 984, 918, 398, 915, 226, 936, - 416, 956, 406, 868, 869, 1070, 260, 870, 1070, 885, - 886, 458, 935, 443, 1045, 763, 703, 759, 759, 52, - 761, 449, 1068, 1056, 1056, 1069, 1069, 260, 1055, 263, - 260, 984, 559, 1058, 454, 454, 454, 577, 184, 562, - 661, 142, 513, 377, 1068, 1056, 497, 762, 960, 1056, - 423, 702, 702, 702, 702, 778, 78, 119, 276, 371, - 960, 1056, 595, 1056, 169, 404, 377, 377, 595, 612, - 619, 310, 340, 510, 1056, 1056, 1056, 192, 1056, 251, - 755, 273, 340, 377, 246, 142, 264, 617, 661, 127, - 314, 340, 512, 619, 798, 1056, 332, 142, 513, 142, - 513, 1056, 1056, 1056, 1056, 332, 332, 216, 622, 623, - 622, 455, 458, 624, 1065, 184, 455, 458, 443, 456, - 1068, 1056, 310, 340, 510, 144, 1056, 1056, 1056, 274, - 310, 340, 22, 127, 274, 310, 340, 960, 245, 960, - 1068, 1056, 802, 803, 1073, 1054, 377, 1069, 400, 643, - 218, 280, 251, 1065, 280, 1069, 397, 377, 377, 328, - 273, 340, 81, 377, 797, 328, 377, 377, 228, 228, - 228, 377, 377, 328, 377, 377, 328, 377, 328, 377, - 328, 260, 377, 513, 960, 246, 1065, 340, 798, 142, - 513, 377, 1056, 377, 328, 1068, 1056, 709, 960, 702, - 202, 709, 709, 1058, 1058, 709, 202, 202, 1056, 202, - 709, 357, 358, 528, 1065, 527, 169, 262, 445, 446, - 591, 676, 759, 1018, 1065, 1077, 3, 679, 455, 455, - 675, 676, 260, 64, 70, 81, 109, 111, 188, 246, - 251, 291, 305, 393, 552, 553, 554, 141, 415, 465, - 497, 1056, 497, 617, 1054, 1054, 455, 458, 1069, 167, - 321, 1069, 1064, 387, 1054, 561, 26, 114, 194, 333, - 398, 648, 377, 645, 42, 484, 312, 366, 102, 518, - 562, 1054, 653, 680, 681, 1065, 455, 458, 1056, 562, - 1054, 579, 1054, 1056, 580, 454, 544, 455, 259, 517, - 259, 260, 574, 517, 35, 142, 891, 518, 377, 142, - 1054, 455, 458, 109, 443, 767, 1065, 497, 366, 758, - 759, 154, 768, 419, 766, 769, 114, 194, 333, 398, - 810, 1056, 169, 891, 513, 960, 455, 1064, 981, 981, - 453, 453, 978, 455, 1056, 513, 513, 400, 513, 400, - 513, 513, 702, 702, 1056, 702, 1056, 637, 513, 142, - 328, 328, 328, 1055, 728, 458, 1068, 419, 458, 726, - 263, 946, 337, 140, 140, 102, 244, 1069, 723, 513, - 1068, 762, 202, 751, 591, 202, 702, 202, 1024, 374, - 984, 133, 960, 455, 984, 984, 984, 1032, 455, 1020, - 458, 960, 985, 985, 985, 985, 122, 124, 246, 256, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 984, 984, 1033, 1032, 960, 455, 455, 455, 1020, 455, - 458, 52, 986, 455, 1073, 995, 288, 361, 997, 455, - 458, 411, 991, 35, 455, 1065, 984, 32, 32, 984, - 455, 984, 159, 454, 1023, 984, 455, 135, 985, 985, - 135, 135, 984, 984, 907, 416, 454, 1005, 1070, 455, - 1020, 458, 902, 902, 902, 902, 1054, 1054, 1054, 892, - 950, 159, 892, 937, 938, 35, 939, 940, 1070, 458, - 89, 160, 190, 205, 215, 241, 320, 942, 940, 35, - 939, 941, 1070, 440, 954, 454, 1044, 984, 167, 920, - 458, 906, 906, 906, 984, 984, 408, 1022, 455, 920, - 455, 453, 455, 454, 748, 151, 210, 455, 261, 92, - 984, 317, 872, 455, 458, 1045, 79, 872, 455, 458, - 882, 956, 1047, 455, 449, 763, 387, 162, 335, 367, - 388, 737, 154, 737, 455, 454, 565, 566, 744, 989, - 1070, 562, 562, 661, 1060, 455, 111, 188, 244, 246, - 662, 1056, 1056, 35, 1056, 400, 400, 702, 702, 702, - 702, 208, 703, 1068, 1056, 377, 797, 328, 377, 192, - 52, 369, 1056, 142, 549, 454, 551, 246, 517, 102, - 246, 356, 359, 517, 387, 1056, 1070, 332, 621, 1056, - 520, 676, 1073, 273, 340, 377, 797, 328, 1056, 377, - 377, 377, 328, 161, 262, 359, 685, 686, 161, 262, - 693, 694, 377, 377, 328, 455, 455, 455, 455, 458, - 443, 310, 1056, 454, 419, 644, 1066, 1065, 1065, 1065, - 1056, 1056, 1056, 52, 369, 1056, 1056, 1056, 1056, 1056, - 1056, 154, 154, 312, 154, 175, 1068, 1056, 1056, 1068, - 1056, 1056, 1056, 1056, 1056, 1056, 144, 1056, 70, 514, - 142, 24, 44, 387, 1070, 1056, 619, 1056, 1056, 455, - 202, 709, 202, 202, 709, 709, 202, 709, 465, 528, - 595, 661, 419, 421, 1054, 454, 702, 1056, 985, 112, - 177, 111, 251, 206, 1054, 769, 295, 665, 666, 1070, - 605, 454, 556, 187, 572, 547, 1069, 1069, 960, 454, - 518, 1069, 643, 1068, 175, 1054, 423, 154, 654, 455, - 458, 959, 617, 455, 587, 35, 256, 454, 863, 546, - 548, 550, 558, 1070, 573, 572, 75, 369, 575, 891, - 582, 580, 575, 1065, 1060, 742, 760, 984, 984, 458, - 454, 764, 387, 458, 673, 377, 454, 595, 455, 453, - 513, 1058, 1058, 513, 513, 513, 513, 337, 1055, 1055, - 1055, 591, 164, 725, 455, 1056, 102, 732, 159, 202, - 251, 713, 1065, 202, 202, 713, 202, 713, 984, 455, - 455, 1033, 455, 984, 159, 122, 124, 256, 454, 455, - 426, 993, 1020, 304, 52, 417, 417, 455, 984, 244, - 984, 458, 992, 962, 984, 984, 984, 1023, 455, 984, - 32, 32, 984, 984, 135, 455, 455, 984, 1006, 1070, - 455, 984, 1054, 1054, 1054, 1054, 940, 941, 454, 455, - 1070, 454, 937, 205, 269, 943, 937, 943, 205, 942, - 943, 205, 368, 948, 454, 1070, 454, 267, 1021, 52, - 170, 927, 455, 455, 455, 1022, 1065, 927, 1065, 779, - 256, 1051, 891, 869, 260, 454, 871, 443, 885, 872, - 387, 455, 377, 720, 159, 661, 984, 455, 458, 419, - 70, 745, 745, 455, 455, 769, 112, 177, 186, 111, - 402, 513, 960, 1058, 1058, 1056, 1056, 1056, 1056, 1056, - 1069, 1056, 549, 618, 622, 251, 251, 1066, 1070, 960, - 513, 513, 443, 52, 369, 1056, 1056, 1056, 1056, 1068, - 1056, 1056, 1064, 1064, 960, 458, 1064, 1064, 458, 1068, - 1056, 1056, 803, 245, 676, 377, 984, 64, 1069, 1056, - 377, 377, 1055, 1055, 702, 1055, 142, 1056, 702, 1065, - 1065, 960, 513, 513, 202, 709, 709, 709, 709, 454, - 529, 530, 400, 534, 535, 161, 191, 161, 159, 660, - 984, 246, 553, 769, 561, 400, 576, 1062, 32, 141, - 181, 543, 139, 182, 454, 337, 400, 562, 35, 644, - 484, 246, 454, 1056, 128, 655, 415, 657, 1065, 518, - 891, 702, 543, 580, 455, 458, 419, 574, 573, 114, - 127, 288, 1056, 419, 823, 35, 159, 260, 454, 1065, - 757, 770, 771, 1071, 769, 960, 154, 1054, 159, 377, - 788, 189, 596, 513, 513, 513, 1056, 263, 200, 513, - 724, 713, 713, 713, 713, 455, 985, 159, 454, 1023, - 454, 455, 458, 455, 986, 304, 455, 405, 353, 455, - 455, 455, 984, 984, 984, 455, 278, 1007, 455, 951, - 952, 989, 939, 454, 1055, 937, 260, 400, 944, 937, - 205, 937, 1062, 958, 454, 958, 1070, 906, 91, 168, - 323, 454, 921, 922, 923, 924, 925, 926, 984, 984, - 418, 1001, 906, 1001, 455, 888, 81, 743, 744, 123, - 454, 892, 1049, 724, 260, 724, 455, 769, 566, 262, - 779, 702, 702, 746, 746, 305, 769, 576, 455, 377, - 340, 878, 455, 458, 514, 676, 1069, 1056, 377, 454, - 1062, 779, 686, 454, 454, 694, 1056, 455, 454, 340, - 878, 1056, 1056, 419, 440, 840, 312, 840, 840, 154, - 514, 709, 536, 537, 1073, 48, 90, 115, 131, 135, - 155, 158, 171, 251, 259, 297, 531, 465, 116, 728, - 35, 784, 784, 1054, 661, 455, 576, 229, 564, 184, - 454, 666, 295, 454, 455, 26, 74, 82, 110, 185, - 359, 557, 557, 1053, 1056, 1058, 455, 891, 142, 617, - 324, 355, 656, 454, 141, 35, 580, 544, 455, 548, - 264, 575, 574, 325, 325, 56, 64, 221, 891, 702, - 1054, 743, 759, 455, 458, 387, 955, 351, 351, 455, - 595, 244, 404, 597, 598, 1056, 513, 985, 1023, 455, - 994, 1020, 52, 244, 436, 52, 906, 455, 458, 35, - 953, 1055, 455, 984, 454, 937, 944, 454, 455, 958, - 455, 455, 454, 341, 454, 455, 458, 1002, 1003, 1070, - 455, 1056, 455, 458, 247, 398, 726, 737, 513, 745, - 576, 454, 747, 747, 1054, 576, 661, 1056, 369, 622, - 400, 515, 340, 878, 1056, 1023, 751, 154, 689, 778, - 1023, 1023, 984, 369, 701, 702, 701, 702, 1055, 513, - 455, 458, 447, 454, 494, 538, 591, 837, 1065, 837, - 246, 251, 297, 837, 837, 529, 1065, 784, 38, 179, - 154, 244, 560, 160, 277, 346, 260, 568, 569, 570, - 369, 455, 1062, 5, 667, 572, 455, 617, 148, 688, - 518, 823, 1054, 984, 295, 891, 573, 572, 551, 575, - 64, 263, 64, 580, 742, 455, 764, 770, 960, 123, - 419, 419, 404, 595, 617, 455, 455, 455, 304, 405, - 1020, 298, 325, 1008, 954, 951, 454, 455, 1055, 1020, - 455, 1020, 454, 1020, 922, 458, 35, 955, 744, 340, - 159, 746, 416, 567, 779, 748, 748, 561, 661, 1056, - 984, 369, 455, 266, 330, 302, 690, 689, 455, 455, - 455, 1056, 840, 537, 494, 539, 540, 1065, 1065, 251, - 562, 447, 562, 1065, 1065, 128, 186, 114, 398, 260, - 570, 260, 569, 1056, 454, 455, 458, 337, 702, 35, - 35, 454, 455, 1062, 823, 574, 573, 263, 263, 454, - 518, 769, 27, 195, 811, 161, 161, 46, 92, 389, - 984, 1009, 1010, 1009, 455, 958, 455, 455, 455, 921, - 455, 1003, 1005, 881, 724, 747, 454, 661, 455, 564, - 878, 1056, 1062, 52, 690, 878, 702, 455, 458, 562, - 324, 55, 244, 316, 340, 571, 571, 455, 5, 1056, - 685, 891, 454, 575, 574, 743, 575, 247, 454, 806, - 808, 813, 865, 873, 880, 891, 728, 728, 1010, 324, - 153, 286, 153, 286, 455, 311, 949, 455, 955, 513, - 748, 984, 568, 878, 751, 702, 540, 657, 21, 109, - 251, 617, 823, 4, 658, 659, 1064, 1065, 1073, 575, - 455, 955, 807, 808, 809, 892, 893, 458, 458, 32, - 454, 455, 661, 141, 455, 458, 518, 455, 457, 377, - 159, 1010, 984, 295, 659, 575, 809, 351, 351, 455, - 1062, 955, 419, 419, 454, 161, 161, 658, 728, 728, - 455 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 460, 461, 462, 462, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 464, 465, 465, 465, 466, 466, 467, 467, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 469, 469, - 469, 469, 469, 469, 470, 471, 472, 472, 473, 473, - 474, 475, 476, 476, 477, 477, 478, 479, 480, 480, - 481, 481, 482, 482, 482, 482, 483, 483, 484, 484, - 485, 485, 485, 485, 485, 485, 486, 486, 486, 486, - 487, 487, 487, 488, 488, 488, 488, 489, 489, 489, - 489, 489, 489, 489, 489, 489, 489, 489, 490, 490, - 491, 491, 492, 492, 493, 493, 493, 493, 494, 494, - 494, 494, 495, 495, 495, 495, 495, 495, 495, 496, - 496, 496, 497, 497, 498, 498, 499, 499, 499, 499, - 500, 500, 501, 501, 502, 502, 503, 503, 503, 503, - 503, 503, 503, 504, 505, 505, 506, 506, 507, 508, - 508, 508, 508, 508, 509, 509, 509, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 510, 510, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 512, 512, 513, 513, 513, 514, - 514, 515, 515, 516, 516, 516, 516, 517, 518, 518, - 519, 519, 520, 520, 520, 520, 521, 522, 522, 523, - 523, 523, 523, 524, 524, 525, 525, 526, 526, 527, - 527, 528, 528, 528, 529, 529, 530, 530, 531, 531, - 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, - 531, 531, 532, 532, 533, 533, 534, 534, 535, 535, - 536, 536, 537, 538, 538, 538, 538, 538, 539, 539, - 540, 541, 541, 541, 541, 542, 542, 542, 542, 542, - 542, 542, 542, 543, 543, 544, 544, 545, 545, 546, - 546, 547, 547, 547, 548, 548, 549, 550, 551, 551, - 552, 552, 552, 552, 553, 553, 553, 553, 553, 553, - 553, 554, 554, 554, 554, 555, 556, 556, 556, 557, - 557, 557, 557, 557, 557, 558, 558, 559, 559, 559, - 559, 559, 559, 559, 560, 560, 561, 561, 562, 562, - 563, 564, 564, 564, 564, 565, 565, 566, 566, 567, - 567, 568, 568, 568, 568, 568, 569, 570, 571, 571, - 571, 571, 571, 572, 572, 573, 573, 573, 573, 574, - 574, 574, 574, 575, 575, 576, 576, 577, 578, 578, - 579, 580, 580, 580, 581, 581, 582, 583, 583, 584, - 585, 585, 586, 586, 587, 587, 588, 588, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 590, 590, 591, 591, 591, 592, 592, 593, 593, 594, - 594, 595, 595, 596, 596, 597, 597, 598, 598, 599, - 599, 600, 600, 601, 602, 602, 603, 603, 604, 604, - 605, 605, 606, 606, 606, 606, 607, 608, 608, 609, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 611, 612, 612, 612, 612, - 613, 613, 614, 614, 615, 615, 616, 616, 617, 617, - 618, 618, 619, 620, 620, 621, 621, 621, 621, 622, - 623, 624, 625, 626, 626, 627, 627, 628, 628, 629, - 629, 630, 630, 630, 631, 631, 632, 632, 633, 634, - 634, 635, 635, 636, 637, 637, 638, 638, 639, 640, - 641, 642, 642, 643, 643, 644, 644, 645, 645, 646, - 646, 647, 647, 648, 648, 648, 648, 648, 649, 650, - 650, 651, 651, 651, 652, 652, 653, 653, 653, 653, - 653, 654, 654, 655, 655, 656, 656, 657, 657, 658, - 658, 658, 659, 659, 659, 659, 660, 660, 661, 661, - 662, 662, 662, 662, 662, 662, 663, 663, 664, 664, - 665, 665, 666, 667, 667, 668, 669, 669, 669, 669, - 670, 671, 672, 672, 672, 672, 672, 672, 672, 672, - 672, 672, 672, 672, 672, 672, 673, 674, 674, 675, - 675, 676, 676, 676, 676, 676, 677, 678, 678, 679, - 680, 680, 681, 681, 682, 682, 682, 683, 683, 684, - 685, 685, 686, 686, 686, 686, 686, 687, 687, 688, - 688, 689, 689, 689, 690, 690, 691, 692, 692, 693, - 693, 694, 694, 695, 695, 696, 696, 697, 698, 699, - 699, 699, 699, 699, 699, 699, 699, 700, 700, 700, - 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, - 700, 700, 700, 701, 701, 702, 702, 703, 703, 704, - 704, 705, 706, 706, 706, 707, 707, 707, 707, 707, - 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - 707, 707, 707, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 709, 709, 710, 710, 710, - 710, 710, 710, 710, 711, 711, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 713, 713, 714, - 714, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 716, 716, 717, - 717, 718, 719, 719, 720, 720, 720, 720, 720, 721, - 721, 722, 722, 722, 722, 723, 723, 723, 723, 723, - 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, - 723, 724, 724, 725, 725, 726, 726, 727, 727, 728, - 729, 730, 730, 731, 731, 732, 732, 733, 734, 734, - 735, 735, 735, 736, 736, 736, 737, 737, 737, 737, - 738, 738, 739, 739, 740, 740, 741, 741, 742, 742, - 743, 743, 744, 744, 744, 745, 745, 746, 746, 747, - 747, 747, 748, 748, 748, 749, 749, 749, 750, 750, - 751, 751, 752, 752, 753, 753, 754, 754, 755, 755, - 755, 755, 755, 756, 756, 756, 756, 756, 757, 758, - 759, 759, 759, 760, 760, 760, 761, 762, 762, 762, - 762, 763, 763, 764, 764, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, - 765, 766, 766, 766, 766, 766, 767, 767, 768, 768, - 769, 769, 770, 771, 771, 772, 773, 773, 774, 774, - 775, 775, 776, 776, 777, 777, 778, 778, 778, 778, - 779, 779, 780, 781, 781, 782, 782, 783, 783, 783, - 784, 784, 784, 785, 786, 786, 787, 788, 788, 788, - 788, 789, 790, 790, 790, 790, 791, 791, 792, 792, - 792, 793, 793, 794, 795, 795, 796, 796, 796, 796, - 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, - 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, - 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, - 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, - 796, 796, 796, 796, 797, 797, 798, 798, 799, 799, - 799, 799, 800, 800, 800, 800, 800, 800, 800, 800, - 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, - 800, 800, 800, 800, 800, 800, 801, 802, 802, 803, - 803, 804, 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, 804, 804, - 805, 806, 806, 806, 807, 807, 808, 808, 808, 808, - 808, 809, 809, 810, 810, 810, 810, 811, 811, 811, - 812, 812, 813, 814, 814, 815, 816, 816, 817, 817, - 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, - 817, 817, 818, 818, 818, 819, 819, 819, 819, 819, - 820, 820, 820, 821, 821, 822, 822, 822, 822, 823, - 823, 823, 823, 824, 825, 826, 826, 827, 827, 828, - 828, 828, 829, 829, 829, 829, 829, 829, 829, 830, - 830, 831, 831, 831, 832, 833, 833, 834, 834, 835, - 836, 836, 836, 836, 836, 836, 836, 837, 837, 838, - 839, 839, 839, 839, 839, 839, 840, 840, 841, 842, - 842, 842, 843, 843, 844, 844, 844, 844, 844, 845, - 845, 846, 846, 846, 846, 846, 847, 847, 848, 848, - 849, 849, 850, 850, 851, 851, 852, 852, 853, 853, - 853, 853, 854, 854, 854, 854, 854, 854, 854, 854, - 854, 855, 855, 856, 857, 857, 858, 858, 858, 859, - 860, 860, 861, 861, 861, 861, 862, 862, 863, 863, - 864, 864, 864, 864, 865, 866, 866, 867, 867, 867, - 868, 868, 869, 870, 870, 870, 871, 871, 871, 872, - 872, 873, 874, 874, 875, 876, 876, 877, 877, 877, - 877, 877, 877, 877, 877, 878, 878, 879, 879, 879, - 880, 881, 881, 882, 882, 883, 884, 884, 885, 886, - 886, 887, 888, 889, 889, 889, 889, 889, 890, 890, - 890, 891, 891, 892, 892, 893, 893, 893, 893, 893, - 893, 893, 893, 894, 894, 895, 895, 895, 895, 895, - 895, 895, 896, 896, 896, 897, 897, 898, 899, 899, - 900, 900, 901, 901, 901, 901, 901, 901, 901, 901, - 901, 902, 902, 903, 903, 903, 904, 904, 905, 905, - 906, 906, 907, 908, 908, 909, 909, 910, 910, 910, - 910, 911, 911, 912, 912, 912, 913, 913, 914, 914, - 915, 916, 916, 916, 917, 918, 918, 919, 919, 920, - 920, 921, 921, 922, 922, 922, 922, 922, 923, 924, - 925, 926, 927, 927, 928, 928, 929, 929, 930, 930, - 931, 932, 932, 932, 932, 933, 933, 934, 934, 935, - 935, 936, 936, 937, 937, 937, 937, 937, 937, 937, - 937, 938, 938, 938, 938, 938, 938, 939, 939, 939, - 939, 940, 940, 941, 941, 941, 941, 941, 942, 942, - 942, 942, 943, 943, 944, 944, 945, 945, 945, 945, - 946, 946, 947, 947, 947, 948, 949, 949, 950, 950, - 951, 952, 952, 953, 953, 954, 954, 955, 955, 956, - 956, 956, 957, 957, 958, 958, 959, 960, 960, 960, - 960, 960, 960, 961, 961, 961, 962, 962, 962, 962, - 962, 962, 962, 963, 963, 963, 963, 964, 964, 965, - 965, 966, 966, 966, 966, 966, 966, 966, 966, 966, - 966, 966, 967, 967, 968, 968, 969, 969, 970, 971, - 972, 972, 973, 973, 974, 975, 976, 976, 976, 976, - 976, 976, 977, 977, 978, 978, 979, 979, 979, 979, - 980, 981, 981, 981, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, 983, 983, - 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 986, 986, - 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, - 986, 986, 987, 987, 987, 987, 987, 987, 987, 988, - 988, 989, 989, 990, 990, 990, 990, 990, 990, 990, - 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, - 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, - 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, - 990, 990, 990, 990, 990, 991, 991, 992, 992, 992, - 992, 993, 994, 994, 995, 995, 996, 996, 997, 997, - 997, 998, 998, 998, 998, 999, 999, 1000, 1000, 1001, - 1001, 1002, 1002, 1003, 1004, 1004, 1004, 1005, 1006, 1006, - 1007, 1007, 1008, 1008, 1008, 1009, 1009, 1010, 1010, 1010, - 1010, 1010, 1011, 1011, 1011, 1012, 1012, 1013, 1014, 1014, - 1014, 1015, 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1017, 1017, 1018, 1018, 1019, - 1019, 1019, 1019, 1019, 1019, 1020, 1020, 1021, 1021, 1022, - 1022, 1022, 1023, 1023, 1024, 1024, 1024, 1025, 1025, 1026, - 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, - 1028, 1029, 1030, 1030, 1031, 1031, 1031, 1031, 1031, 1031, - 1032, 1033, 1034, 1034, 1034, 1035, 1035, 1036, 1037, 1037, - 1038, 1039, 1039, 1040, 1040, 1041, 1041, 1042, 1042, 1042, - 1042, 1043, 1043, 1044, 1044, 1045, 1045, 1046, 1046, 1047, - 1047, 1048, 1048, 1049, 1050, 1050, 1051, 1051, 1052, 1052, - 1052, 1052, 1053, 1053, 1054, 1054, 1055, 1055, 1056, 1057, - 1058, 1059, 1060, 1061, 1062, 1062, 1063, 1063, 1063, 1063, - 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1064, - 1065, 1066, 1066, 1066, 1067, 1068, 1068, 1068, 1069, 1069, - 1070, 1070, 1070, 1071, 1071, 1071, 1072, 1072, 1072, 1072, - 1073, 1073, 1073, 1073, 1073, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1075, 1076, 1076, 1076, 1076, 1076, 1076, - 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, - 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1077, 1077, 1077, - 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, - 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, - 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, - 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, - 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, - 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, - 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, - 1077, 1077, 1077, 1077 -}; - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 5, 1, 1, 0, 2, 0, 2, 0, 2, - 2, 3, 3, 1, 3, 3, 2, 1, 1, 2, - 2, 2, 3, 3, 5, 5, 0, 3, 5, 5, - 5, 4, 3, 5, 3, 5, 5, 6, 1, 1, - 3, 5, 6, 4, 9, 7, 1, 0, 2, 0, - 1, 1, 1, 1, 1, 1, 3, 2, 3, 3, - 2, 5, 1, 3, 3, 3, 3, 1, 3, 3, - 2, 2, 2, 2, 3, 3, 3, 3, 1, 3, - 1, 3, 1, 1, 2, 2, 2, 1, 1, 1, - 1, 1, 1, 1, 3, 5, 1, 1, 1, 1, - 1, 0, 1, 1, 2, 3, 1, 2, 3, 2, - 1, 1, 2, 1, 2, 1, 3, 3, 2, 3, - 4, 3, 2, 4, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 4, 6, 10, 13, 4, 6, - 10, 13, 4, 6, 4, 6, 5, 7, 11, 14, - 1, 3, 2, 5, 3, 6, 4, 6, 6, 6, - 5, 5, 6, 6, 4, 8, 4, 2, 4, 3, - 6, 4, 3, 3, 3, 3, 2, 2, 3, 4, - 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, - 2, 3, 2, 2, 3, 3, 2, 2, 3, 4, - 4, 4, 5, 1, 3, 2, 1, 1, 0, 2, - 0, 2, 0, 1, 1, 1, 3, 3, 2, 0, - 1, 3, 3, 1, 5, 3, 4, 1, 3, 4, - 6, 4, 8, 2, 2, 11, 9, 1, 1, 1, - 0, 1, 1, 1, 1, 3, 2, 0, 1, 1, - 1, 3, 3, 1, 1, 3, 3, 3, 3, 4, - 3, 2, 1, 0, 2, 0, 3, 0, 1, 0, - 1, 3, 2, 1, 1, 1, 3, 0, 1, 3, - 1, 11, 14, 10, 13, 1, 1, 2, 2, 2, - 2, 1, 0, 1, 0, 3, 0, 1, 3, 1, - 3, 1, 1, 1, 1, 1, 4, 4, 2, 0, - 3, 1, 1, 2, 2, 1, 3, 4, 5, 2, - 5, 1, 2, 2, 2, 3, 3, 3, 0, 1, - 1, 1, 1, 1, 1, 3, 1, 5, 7, 3, - 8, 4, 9, 11, 2, 0, 3, 0, 1, 3, - 1, 2, 2, 2, 0, 1, 3, 3, 6, 4, - 0, 1, 1, 2, 2, 0, 3, 3, 2, 1, - 1, 2, 2, 4, 0, 2, 2, 2, 0, 3, - 4, 4, 0, 2, 0, 4, 0, 3, 7, 10, - 5, 2, 3, 0, 8, 11, 4, 1, 0, 6, - 5, 8, 4, 6, 1, 0, 1, 2, 2, 1, - 2, 3, 2, 2, 2, 2, 3, 3, 1, 3, - 1, 0, 1, 2, 1, 1, 3, 6, 10, 1, - 0, 1, 2, 2, 0, 2, 2, 1, 0, 5, - 7, 1, 0, 7, 2, 0, 3, 5, 5, 8, - 2, 0, 2, 2, 2, 1, 5, 2, 0, 2, - 7, 10, 6, 6, 6, 6, 7, 7, 9, 9, - 6, 7, 6, 8, 8, 8, 8, 6, 6, 7, - 7, 8, 6, 9, 6, 7, 2, 2, 2, 2, - 1, 2, 1, 0, 6, 8, 7, 6, 4, 0, - 1, 3, 4, 1, 3, 1, 2, 2, 2, 2, - 1, 1, 10, 2, 0, 2, 2, 1, 0, 4, - 6, 5, 4, 4, 11, 14, 5, 7, 11, 2, - 1, 4, 0, 8, 1, 1, 7, 9, 8, 9, - 8, 6, 8, 4, 0, 5, 0, 2, 0, 2, - 0, 2, 0, 1, 1, 1, 1, 1, 8, 15, - 20, 1, 1, 2, 1, 3, 1, 1, 1, 3, - 1, 3, 0, 1, 0, 1, 1, 4, 0, 1, - 3, 0, 1, 1, 1, 1, 2, 0, 0, 2, - 2, 1, 2, 2, 2, 2, 6, 8, 11, 13, - 1, 3, 5, 1, 3, 5, 1, 2, 2, 1, - 8, 4, 5, 4, 4, 4, 3, 7, 8, 6, - 6, 6, 6, 6, 4, 5, 3, 1, 3, 3, - 1, 1, 1, 1, 1, 1, 3, 1, 3, 3, - 1, 0, 1, 3, 7, 9, 9, 3, 0, 13, - 1, 3, 5, 6, 4, 7, 2, 1, 0, 2, - 0, 2, 4, 0, 1, 0, 6, 8, 8, 1, - 3, 5, 5, 7, 9, 7, 9, 5, 6, 6, - 4, 4, 6, 4, 6, 5, 7, 1, 1, 1, - 2, 1, 2, 2, 2, 1, 1, 1, 1, 3, - 3, 3, 3, 1, 3, 1, 2, 2, 3, 1, - 3, 5, 2, 2, 0, 6, 6, 6, 7, 7, - 7, 8, 9, 8, 8, 6, 9, 8, 9, 9, - 7, 10, 7, 2, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 2, 1, 3, - 2, 3, 3, 3, 3, 1, 1, 8, 8, 8, - 9, 9, 9, 9, 2, 0, 1, 1, 2, 2, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, - 2, 1, 2, 3, 3, 3, 3, 4, 4, 3, - 3, 3, 4, 4, 3, 4, 4, 1, 1, 1, - 0, 7, 7, 10, 1, 1, 2, 4, 5, 1, - 3, 2, 2, 2, 2, 1, 2, 2, 4, 3, - 2, 2, 2, 2, 3, 2, 2, 2, 5, 5, - 5, 1, 3, 1, 2, 3, 0, 1, 3, 2, - 6, 6, 9, 3, 0, 3, 0, 5, 2, 0, - 3, 3, 3, 7, 7, 10, 1, 1, 1, 1, - 14, 17, 1, 0, 1, 0, 1, 0, 2, 0, - 1, 3, 5, 5, 7, 2, 0, 1, 0, 1, - 1, 0, 2, 2, 0, 9, 12, 7, 2, 0, - 3, 2, 1, 3, 3, 2, 1, 3, 3, 3, - 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 4, 5, 1, 3, 3, 1, 3, 3, 5, - 6, 1, 3, 1, 2, 4, 5, 1, 1, 1, - 1, 3, 3, 2, 2, 1, 2, 2, 2, 1, - 2, 2, 2, 2, 1, 1, 1, 3, 3, 5, - 2, 0, 2, 1, 3, 5, 1, 2, 1, 0, - 5, 7, 5, 7, 5, 7, 3, 5, 5, 5, - 1, 3, 2, 1, 2, 1, 2, 11, 10, 10, - 2, 2, 0, 9, 2, 0, 10, 11, 11, 5, - 5, 8, 3, 3, 6, 6, 1, 1, 1, 1, - 1, 1, 3, 1, 5, 5, 7, 6, 6, 6, - 6, 8, 8, 6, 6, 7, 9, 9, 8, 10, - 6, 6, 6, 8, 6, 8, 6, 8, 7, 9, - 6, 8, 7, 9, 8, 10, 9, 11, 8, 10, - 9, 11, 8, 8, 7, 6, 6, 6, 8, 8, - 8, 8, 6, 9, 1, 0, 2, 0, 7, 9, - 8, 7, 7, 6, 6, 6, 6, 6, 7, 9, - 9, 6, 8, 8, 8, 8, 8, 6, 8, 6, - 8, 7, 9, 7, 9, 6, 8, 1, 3, 3, - 3, 7, 6, 6, 6, 6, 6, 7, 7, 7, - 9, 9, 6, 6, 6, 8, 8, 8, 6, 7, - 13, 1, 1, 3, 3, 1, 1, 1, 1, 1, - 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, - 6, 8, 3, 2, 0, 2, 2, 2, 2, 3, - 3, 2, 2, 2, 2, 3, 2, 5, 4, 3, - 3, 3, 1, 1, 0, 3, 2, 2, 1, 2, - 1, 3, 2, 1, 0, 9, 11, 12, 14, 3, - 4, 4, 0, 2, 5, 1, 0, 1, 2, 3, - 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, - 0, 5, 4, 6, 4, 3, 5, 4, 4, 6, - 4, 6, 6, 5, 7, 9, 6, 1, 0, 6, - 11, 11, 11, 13, 9, 11, 1, 1, 10, 4, - 2, 5, 2, 0, 4, 5, 5, 4, 6, 1, - 3, 1, 1, 1, 1, 1, 2, 4, 1, 1, - 1, 0, 1, 0, 1, 0, 3, 0, 2, 4, - 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 2, 1, 1, 1, 1, 0, 5, - 3, 0, 1, 1, 1, 1, 3, 9, 3, 0, - 2, 3, 2, 3, 7, 1, 3, 1, 4, 2, - 1, 3, 2, 8, 5, 0, 4, 3, 0, 2, - 0, 7, 2, 0, 5, 3, 0, 2, 2, 2, - 3, 1, 3, 1, 2, 1, 0, 1, 2, 0, - 8, 1, 3, 1, 1, 3, 5, 5, 2, 1, - 3, 7, 1, 0, 3, 2, 2, 2, 0, 2, - 2, 1, 1, 3, 3, 1, 2, 4, 4, 2, - 3, 5, 5, 1, 1, 9, 9, 1, 2, 4, - 4, 4, 2, 2, 3, 1, 3, 6, 1, 0, - 2, 0, 3, 3, 4, 4, 4, 4, 3, 2, - 1, 1, 0, 1, 1, 0, 1, 5, 1, 0, - 1, 0, 3, 1, 3, 4, 3, 2, 2, 1, - 1, 1, 0, 2, 4, 5, 2, 3, 1, 1, - 1, 1, 3, 0, 1, 1, 1, 1, 1, 3, - 0, 1, 3, 1, 1, 1, 1, 1, 2, 4, - 4, 5, 2, 0, 1, 3, 1, 0, 1, 2, - 3, 2, 4, 2, 3, 2, 0, 2, 3, 2, - 0, 1, 3, 2, 3, 2, 3, 2, 3, 1, - 4, 3, 4, 5, 4, 5, 4, 5, 2, 4, - 1, 1, 0, 1, 4, 5, 4, 0, 2, 2, - 2, 1, 1, 0, 4, 2, 1, 2, 2, 4, - 1, 3, 1, 2, 3, 6, 4, 0, 2, 6, - 2, 1, 3, 4, 0, 2, 0, 2, 0, 2, - 4, 0, 1, 0, 1, 3, 3, 2, 3, 5, - 6, 2, 3, 3, 4, 0, 1, 1, 1, 1, - 1, 2, 4, 1, 1, 1, 1, 2, 3, 3, - 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 1, 3, 0, 1, 1, 1, 1, 5, 2, - 1, 1, 1, 1, 5, 2, 2, 2, 1, 3, - 3, 2, 1, 0, 3, 0, 5, 2, 5, 2, - 1, 3, 3, 0, 1, 1, 1, 1, 1, 1, - 3, 3, 3, 3, 3, 3, 3, 0, 1, 4, - 1, 3, 3, 5, 2, 2, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, - 2, 3, 3, 2, 2, 3, 5, 4, 6, 3, - 5, 4, 6, 4, 6, 5, 7, 3, 2, 4, - 2, 3, 3, 4, 3, 4, 3, 4, 5, 6, - 6, 7, 6, 7, 6, 7, 3, 4, 4, 6, - 2, 3, 4, 1, 3, 2, 2, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 5, 6, 6, 7, 3, 4, 1, 1, - 2, 4, 1, 1, 1, 2, 2, 2, 2, 1, - 1, 4, 3, 5, 6, 8, 6, 6, 4, 4, - 1, 1, 1, 5, 1, 1, 4, 1, 4, 1, - 4, 1, 4, 1, 1, 1, 1, 1, 1, 6, - 4, 4, 4, 4, 6, 5, 5, 5, 4, 6, - 4, 4, 4, 4, 5, 7, 7, 9, 5, 4, - 6, 5, 7, 7, 7, 2, 3, 3, 3, 4, - 0, 4, 1, 3, 3, 1, 1, 1, 2, 2, - 0, 2, 4, 4, 6, 5, 0, 5, 0, 2, - 0, 1, 3, 3, 2, 2, 0, 6, 1, 0, - 3, 0, 2, 2, 0, 1, 4, 2, 2, 2, - 2, 2, 4, 3, 5, 4, 3, 5, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 1, 4, 1, - 4, 1, 2, 1, 2, 1, 3, 1, 3, 1, - 3, 3, 1, 3, 3, 3, 2, 1, 3, 3, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 4, - 3, 2, 3, 0, 3, 3, 2, 2, 1, 0, - 2, 2, 3, 2, 1, 1, 3, 5, 1, 2, - 4, 2, 0, 1, 0, 1, 2, 2, 2, 3, - 5, 1, 0, 1, 2, 0, 2, 1, 0, 1, - 1, 1, 3, 3, 1, 0, 1, 3, 3, 2, - 1, 1, 1, 3, 1, 2, 1, 3, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 2, 6, 2, 3, 5, 1, 1, 1, 1, - 1, 1, 2, 2, 1, 1, 1, 1, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1 + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, -1, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, -1, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + -1, 146, 147, 148, -1, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, -1, -1, -1, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, -1, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, -1, -1, 252, 253, 254, + 255, -1, -1, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, -1, 293, -1, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, -1, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, -1, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, -1, 393, -1, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, -1, 418, 419, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 448, 449, 450, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, -1, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, -1, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, -1, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, -1, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, -1, 146, 147, 148, -1, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, -1, -1, -1, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, -1, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, -1, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, -1, -1, 252, + 253, 254, 255, 256, -1, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, -1, 275, 276, 277, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, -1, + 293, -1, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + -1, -1, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, -1, + 393, -1, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 448, 449, 450, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, -1, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, -1, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, -1, 146, 147, 148, + -1, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, -1, -1, -1, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, -1, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, -1, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, -1, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, -1, 275, 276, 277, -1, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, -1, 293, -1, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, -1, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, -1, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, -1, 393, -1, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 448, + 449, 450, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, -1, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, -1, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + -1, 146, 147, 148, -1, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, -1, -1, -1, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + -1, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, -1, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, + 255, -1, -1, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, -1, + 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, -1, 293, -1, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, -1, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, -1, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, -1, 393, -1, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 448, 449, 450, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, -1, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, -1, 146, 147, 148, -1, -1, + 151, -1, 153, 154, 155, 156, 157, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, -1, + -1, -1, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, -1, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, -1, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, -1, + -1, 252, 253, 254, 255, -1, -1, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, -1, 275, 276, 277, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, -1, 293, -1, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, -1, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, -1, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, -1, 393, -1, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 448, 449, 450, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + -1, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, -1, 146, + 147, 148, -1, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, -1, -1, -1, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, -1, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, -1, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, -1, -1, 252, 253, 254, 255, -1, + -1, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, -1, 275, 276, + 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, -1, 293, -1, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, -1, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, -1, 393, -1, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 448, 449, 450, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, -1, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, -1, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, -1, 146, 147, 148, -1, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, -1, -1, -1, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, -1, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, -1, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, -1, -1, 252, + 253, 254, 255, -1, -1, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, -1, 275, 276, 277, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, -1, + 293, -1, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + -1, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, -1, + 393, -1, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 448, 449, 450, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, -1, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, -1, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, -1, 146, 147, 148, + -1, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, -1, -1, -1, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, -1, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, -1, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, -1, -1, 252, 253, 254, 255, -1, -1, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, -1, 275, 276, 277, -1, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, -1, 293, -1, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, -1, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, -1, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, -1, 393, -1, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 448, + 449, 450, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, -1, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, -1, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + -1, 146, 147, 148, -1, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, -1, -1, -1, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + -1, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, -1, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, -1, -1, 252, 253, 254, + 255, -1, -1, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, -1, + 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, -1, 293, -1, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, -1, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, -1, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, -1, 393, -1, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 448, 449, 450, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, -1, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, -1, 146, 147, 148, -1, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, -1, + -1, -1, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, -1, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, -1, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, -1, + -1, 252, 253, 254, 255, -1, -1, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, -1, 275, 276, 277, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, -1, 293, -1, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, -1, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, -1, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, -1, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, -1, 393, -1, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 448, 449, 450, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + -1, -1, 49, -1, -1, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, -1, -1, 64, -1, 66, + 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, + 107, -1, -1, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, -1, 146, + 147, 148, -1, -1, 151, -1, 153, 154, -1, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, -1, -1, -1, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, -1, 196, + 197, 198, 199, -1, -1, -1, -1, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, -1, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, -1, 245, -1, + 247, 248, 249, -1, -1, 252, 253, 254, 255, -1, + -1, 258, -1, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, -1, 275, 276, + 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, -1, 293, -1, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, -1, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, -1, 353, 354, 355, 356, + 357, -1, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, -1, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, -1, + -1, -1, -1, 390, 391, -1, 393, -1, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + -1, -1, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 448, 449, 450, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, -1, -1, -1, -1, -1, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, -1, + -1, 64, -1, 66, 67, 68, 69, -1, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, -1, -1, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, -1, 146, 147, 148, -1, -1, 151, -1, + 153, 154, -1, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, -1, -1, -1, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, -1, 196, 197, 198, 199, -1, -1, -1, + -1, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, -1, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, -1, -1, -1, 247, 248, 249, -1, -1, 252, + 253, -1, 255, -1, -1, 258, -1, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, -1, -1, 276, -1, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, -1, + 293, -1, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, -1, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, -1, + 353, 354, -1, 356, 357, -1, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + -1, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, -1, -1, -1, -1, 390, 391, -1, + 393, -1, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, -1, -1, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 448, 449, 450 }; +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 18, 28, 30, 31, 46, 66, 68, 69, 75, + 77, 88, 90, 107, 110, 124, 126, 130, 136, 144, + 146, 152, 168, 184, 223, 224, 229, 241, 253, 288, + 296, 309, 315, 316, 318, 323, 328, 331, 336, 342, + 343, 350, 354, 364, 377, 396, 406, 412, 417, 430, + 453, 467, 474, 475, 476, 477, 483, 484, 486, 487, + 488, 489, 491, 495, 507, 512, 513, 516, 517, 518, + 538, 541, 542, 558, 601, 602, 605, 608, 609, 610, + 618, 624, 626, 628, 629, 632, 635, 636, 640, 649, + 653, 654, 655, 656, 659, 661, 662, 663, 664, 672, + 673, 692, 696, 698, 699, 700, 710, 712, 719, 720, + 723, 724, 725, 726, 727, 735, 737, 741, 746, 750, + 751, 759, 760, 763, 768, 779, 806, 809, 810, 811, + 816, 819, 821, 823, 825, 826, 831, 832, 835, 836, + 837, 841, 842, 845, 846, 849, 850, 851, 858, 860, + 861, 862, 867, 869, 870, 876, 877, 878, 879, 880, + 881, 882, 884, 885, 887, 888, 890, 893, 894, 899, + 905, 908, 910, 911, 920, 922, 927, 932, 936, 937, + 938, 939, 940, 941, 944, 979, 390, 433, 863, 25, + 72, 87, 105, 111, 128, 139, 147, 159, 164, 171, + 188, 213, 234, 268, 291, 301, 304, 330, 335, 337, + 344, 347, 366, 372, 376, 377, 380, 384, 393, 398, + 410, 423, 625, 863, 3, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 37, 38, 40, + 41, 42, 44, 45, 46, 47, 48, 50, 51, 53, + 54, 55, 56, 57, 60, 61, 62, 63, 64, 66, + 67, 68, 69, 70, 74, 75, 76, 77, 78, 80, + 81, 82, 84, 85, 86, 87, 88, 89, 92, 93, + 94, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 112, 114, 115, 116, 117, 118, 119, 121, 122, 123, + 124, 127, 128, 129, 130, 131, 133, 134, 135, 137, + 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 151, 153, 154, 155, 156, 158, 160, 164, 165, + 166, 167, 169, 170, 172, 173, 175, 176, 177, 178, + 179, 181, 182, 183, 184, 186, 187, 188, 189, 190, + 191, 193, 195, 196, 197, 198, 199, 200, 201, 203, + 205, 208, 210, 211, 212, 213, 214, 217, 218, 220, + 223, 224, 225, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 246, 247, 248, 249, 250, 252, 253, 255, 257, 258, + 259, 260, 261, 262, 264, 265, 268, 269, 270, 273, + 274, 276, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 290, 291, 292, 293, 294, 295, 296, 297, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 327, 328, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 344, 345, 346, 347, 348, 350, 351, 352, 353, + 354, 356, 357, 358, 359, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 375, 376, + 378, 380, 381, 382, 383, 384, 386, 387, 390, 391, + 392, 393, 394, 396, 397, 398, 399, 400, 401, 402, + 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, + 417, 418, 420, 422, 423, 424, 425, 428, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 933, 1104, + 1118, 1122, 1123, 421, 895, 266, 297, 863, 49, 467, + 549, 20, 25, 37, 59, 72, 83, 105, 111, 128, + 139, 147, 159, 167, 171, 225, 268, 271, 291, 304, + 330, 337, 347, 366, 372, 380, 381, 383, 384, 393, + 398, 404, 407, 410, 559, 607, 715, 769, 780, 26, + 296, 1104, 933, 26, 290, 345, 381, 383, 5, 212, + 817, 818, 1113, 20, 25, 37, 59, 72, 87, 105, + 128, 139, 147, 159, 164, 171, 188, 234, 268, 280, + 291, 304, 330, 335, 337, 344, 347, 366, 372, 377, + 380, 384, 391, 393, 398, 410, 423, 625, 728, 729, + 730, 863, 1104, 90, 421, 467, 602, 605, 608, 894, + 900, 908, 911, 920, 927, 932, 936, 9, 19, 26, + 44, 154, 160, 162, 185, 214, 248, 299, 317, 458, + 459, 747, 748, 933, 1112, 1114, 26, 90, 313, 343, + 752, 753, 754, 1118, 159, 1118, 1109, 1113, 377, 947, + 747, 1118, 323, 350, 354, 390, 1104, 280, 234, 105, + 188, 337, 376, 377, 467, 827, 828, 336, 1118, 26, + 348, 386, 390, 499, 508, 509, 1118, 23, 168, 752, + 753, 297, 863, 1118, 211, 26, 125, 949, 950, 60, + 84, 225, 243, 330, 337, 348, 386, 390, 436, 496, + 497, 498, 499, 26, 348, 386, 390, 499, 390, 267, + 990, 1102, 1118, 947, 460, 1118, 163, 467, 896, 467, + 311, 942, 943, 1104, 942, 937, 938, 941, 0, 470, + 895, 140, 202, 272, 403, 951, 952, 937, 939, 940, + 116, 198, 409, 471, 3, 43, 49, 72, 79, 91, + 98, 161, 163, 180, 194, 206, 207, 209, 219, 221, + 245, 254, 275, 277, 329, 355, 379, 421, 796, 1110, + 1118, 1119, 1122, 1124, 732, 1118, 732, 1105, 1118, 300, + 732, 393, 1104, 104, 377, 784, 1110, 1118, 1124, 3, + 101, 349, 1115, 1116, 1120, 1122, 1123, 1124, 26, 179, + 1102, 260, 423, 8, 15, 16, 17, 67, 151, 454, + 455, 456, 458, 459, 460, 461, 462, 463, 813, 815, + 1066, 1067, 1118, 179, 1104, 1104, 26, 1115, 1116, 1104, + 1104, 179, 1102, 1104, 732, 1104, 323, 350, 26, 179, + 990, 1104, 340, 1104, 732, 26, 232, 1115, 1116, 179, + 1102, 212, 113, 208, 251, 307, 864, 865, 866, 1102, + 1108, 1118, 20, 25, 59, 72, 73, 83, 87, 105, + 128, 139, 147, 159, 164, 188, 213, 234, 268, 291, + 304, 330, 335, 337, 344, 347, 366, 372, 377, 380, + 384, 391, 393, 398, 423, 625, 738, 739, 1113, 907, + 911, 920, 927, 936, 1102, 236, 1110, 1104, 467, 179, + 732, 393, 1105, 732, 393, 179, 1104, 104, 377, 381, + 383, 1115, 1116, 381, 383, 67, 151, 813, 321, 1104, + 1104, 1115, 179, 492, 1118, 179, 1104, 179, 732, 1104, + 1104, 340, 1104, 732, 232, 1115, 311, 344, 377, 423, + 234, 87, 188, 164, 335, 391, 397, 619, 26, 1104, + 934, 506, 1113, 1120, 818, 236, 179, 796, 797, 1104, + 179, 822, 179, 1105, 3, 48, 50, 51, 62, 63, + 108, 109, 129, 155, 179, 200, 201, 203, 244, 246, + 259, 308, 352, 358, 386, 387, 418, 734, 1012, 1014, + 1016, 1018, 1020, 1022, 1023, 1024, 1026, 1027, 1028, 1030, + 1031, 1119, 1122, 393, 104, 377, 179, 783, 784, 179, + 1116, 1117, 79, 423, 67, 151, 179, 814, 815, 53, + 179, 1117, 179, 1104, 179, 1104, 340, 822, 179, 734, + 179, 232, 1117, 212, 179, 731, 732, 179, 1103, 1104, + 179, 1104, 467, 909, 559, 900, 417, 894, 901, 902, + 903, 1120, 895, 1114, 748, 749, 26, 749, 1114, 749, + 26, 749, 1114, 749, 749, 749, 1114, 1112, 1112, 933, + 749, 300, 467, 467, 579, 579, 579, 266, 388, 471, + 579, 337, 990, 991, 471, 859, 509, 497, 499, 26, + 499, 1113, 467, 906, 53, 423, 421, 829, 830, 1102, + 1104, 1118, 43, 450, 208, 469, 269, 269, 266, 162, + 1113, 388, 157, 742, 266, 4, 6, 7, 8, 10, + 34, 48, 50, 51, 58, 59, 62, 63, 70, 72, + 95, 96, 97, 98, 99, 100, 101, 108, 109, 111, + 145, 149, 150, 155, 170, 172, 200, 201, 203, 218, + 226, 227, 244, 246, 251, 256, 257, 259, 268, 278, + 292, 308, 333, 349, 358, 373, 386, 387, 392, 394, + 395, 404, 410, 418, 438, 439, 440, 441, 443, 444, + 445, 446, 451, 458, 459, 460, 467, 937, 1015, 1018, + 1021, 1022, 1023, 1025, 1026, 1027, 1030, 1031, 1035, 1037, + 1038, 1039, 1041, 1062, 1063, 1064, 1068, 1087, 1092, 1099, + 1100, 1110, 1111, 1112, 1113, 1118, 1098, 1099, 1113, 26, + 514, 1101, 1102, 348, 496, 111, 505, 1113, 506, 1113, + 43, 64, 496, 450, 359, 865, 269, 162, 388, 456, + 43, 450, 208, 866, 467, 1102, 460, 465, 469, 1093, + 1095, 991, 3, 161, 163, 421, 891, 892, 894, 161, + 897, 1035, 1071, 942, 471, 467, 898, 468, 468, 476, + 1102, 26, 125, 948, 948, 53, 948, 152, 157, 222, + 263, 955, 957, 958, 973, 975, 976, 977, 951, 952, + 162, 204, 990, 992, 467, 281, 319, 350, 467, 794, + 1095, 281, 315, 319, 350, 469, 733, 281, 319, 350, + 3, 82, 134, 228, 281, 288, 319, 350, 380, 382, + 430, 507, 510, 871, 872, 873, 874, 764, 22, 130, + 281, 319, 350, 414, 522, 1104, 22, 130, 350, 409, + 490, 434, 179, 990, 55, 89, 119, 148, 182, 217, + 251, 281, 282, 319, 327, 334, 342, 350, 362, 370, + 425, 507, 511, 799, 807, 467, 781, 1095, 319, 490, + 185, 145, 22, 28, 69, 119, 123, 130, 133, 158, + 190, 249, 251, 261, 270, 281, 319, 322, 323, 350, + 414, 519, 521, 643, 4, 458, 459, 616, 1114, 26, + 179, 1102, 732, 732, 467, 812, 281, 350, 469, 145, + 266, 22, 130, 281, 319, 350, 185, 485, 319, 430, + 453, 478, 485, 266, 281, 319, 145, 35, 54, 103, + 187, 235, 238, 249, 280, 319, 324, 344, 350, 364, + 519, 613, 614, 281, 319, 422, 643, 651, 281, 319, + 350, 82, 123, 133, 281, 315, 319, 350, 509, 497, + 185, 145, 41, 121, 319, 350, 519, 520, 281, 319, + 323, 350, 80, 122, 283, 382, 266, 22, 28, 130, + 281, 319, 350, 539, 540, 485, 157, 319, 478, 485, + 145, 319, 350, 519, 1104, 220, 113, 267, 435, 471, + 864, 411, 889, 266, 236, 796, 467, 1104, 1012, 393, + 104, 377, 784, 260, 423, 67, 151, 815, 1104, 1104, + 340, 157, 1104, 1012, 212, 732, 1104, 468, 579, 1104, + 467, 705, 794, 65, 1012, 251, 162, 467, 701, 1104, + 478, 35, 883, 1104, 251, 478, 434, 179, 1102, 478, + 732, 732, 701, 407, 559, 266, 157, 843, 844, 478, + 251, 43, 493, 251, 398, 650, 251, 898, 82, 281, + 627, 80, 122, 283, 382, 24, 45, 199, 674, 35, + 701, 157, 179, 478, 423, 179, 1102, 179, 603, 1102, + 1102, 423, 732, 79, 770, 1110, 1104, 157, 625, 49, + 102, 197, 249, 339, 145, 56, 325, 471, 523, 523, + 145, 467, 145, 420, 1029, 1029, 1029, 467, 1017, 1017, + 294, 467, 1019, 145, 62, 63, 1029, 1017, 1014, 432, + 453, 467, 1032, 467, 1032, 471, 523, 34, 1013, 467, + 106, 177, 237, 240, 341, 448, 467, 1033, 1034, 733, + 1017, 434, 145, 471, 523, 145, 471, 179, 731, 179, + 732, 179, 732, 145, 471, 523, 1117, 145, 145, 523, + 145, 80, 122, 283, 382, 157, 145, 523, 145, 157, + 179, 179, 506, 145, 471, 523, 145, 471, 523, 145, + 266, 1071, 377, 468, 471, 150, 266, 395, 503, 506, + 616, 904, 900, 749, 933, 749, 933, 749, 933, 749, + 933, 749, 933, 933, 933, 749, 933, 467, 580, 581, + 1118, 580, 26, 105, 128, 159, 164, 212, 213, 337, + 344, 377, 380, 398, 755, 1101, 1117, 754, 1104, 185, + 471, 923, 1113, 1012, 1074, 35, 1117, 770, 468, 471, + 220, 1118, 157, 157, 755, 1117, 336, 1118, 506, 266, + 467, 1096, 465, 937, 1075, 1035, 1091, 467, 467, 157, + 467, 467, 937, 467, 467, 467, 467, 467, 467, 1035, + 467, 467, 467, 467, 467, 467, 467, 467, 937, 467, + 467, 467, 467, 467, 467, 467, 467, 1035, 1035, 1035, + 937, 1035, 1071, 1095, 1113, 467, 1113, 3, 8, 11, + 15, 16, 17, 32, 35, 40, 47, 71, 180, 185, + 206, 207, 221, 254, 268, 271, 355, 451, 454, 455, + 456, 458, 459, 460, 461, 462, 463, 1066, 1068, 1070, + 431, 1050, 277, 1035, 204, 471, 945, 467, 1113, 1095, + 945, 114, 181, 515, 471, 64, 111, 506, 35, 3, + 111, 225, 504, 616, 1031, 1113, 1113, 85, 127, 1047, + 94, 111, 500, 501, 503, 616, 111, 500, 220, 1102, + 1035, 1094, 3, 26, 30, 31, 32, 33, 34, 35, + 36, 39, 52, 58, 59, 65, 71, 73, 83, 90, + 95, 96, 97, 99, 100, 101, 111, 113, 120, 125, + 126, 132, 136, 140, 150, 152, 157, 159, 162, 168, + 171, 174, 185, 192, 202, 204, 215, 216, 222, 226, + 227, 251, 256, 263, 266, 267, 271, 272, 289, 298, + 313, 326, 343, 349, 360, 374, 377, 385, 388, 389, + 395, 403, 404, 410, 411, 419, 426, 427, 429, 430, + 460, 1107, 1121, 1122, 1123, 1124, 1125, 1093, 86, 324, + 736, 468, 471, 895, 468, 471, 943, 1103, 35, 898, + 939, 939, 953, 954, 1035, 939, 154, 248, 964, 210, + 249, 307, 353, 409, 26, 959, 1035, 960, 962, 1035, + 1037, 973, 974, 958, 957, 955, 956, 157, 976, 261, + 978, 955, 973, 992, 912, 1102, 35, 1118, 350, 1071, + 388, 388, 337, 185, 195, 272, 274, 352, 419, 460, + 787, 788, 789, 791, 793, 795, 1012, 1119, 388, 422, + 388, 337, 1107, 469, 388, 388, 337, 222, 388, 388, + 380, 496, 281, 871, 873, 456, 875, 157, 168, 185, + 328, 765, 766, 65, 83, 141, 159, 298, 404, 576, + 577, 83, 111, 251, 388, 83, 388, 111, 251, 337, + 83, 123, 133, 281, 319, 697, 337, 633, 20, 25, + 59, 72, 87, 128, 139, 159, 164, 234, 268, 337, + 344, 347, 377, 384, 391, 398, 423, 625, 1104, 145, + 319, 350, 519, 266, 616, 266, 342, 217, 388, 1118, + 388, 256, 616, 115, 205, 337, 348, 390, 498, 325, + 350, 799, 808, 468, 782, 787, 388, 410, 380, 1102, + 73, 141, 179, 566, 576, 1118, 73, 83, 833, 266, + 266, 333, 335, 393, 83, 833, 29, 322, 333, 335, + 393, 333, 1102, 158, 190, 261, 732, 467, 388, 388, + 178, 467, 527, 231, 380, 407, 430, 432, 527, 83, + 471, 4, 4, 281, 185, 145, 119, 319, 350, 519, + 411, 411, 250, 1012, 388, 337, 467, 813, 1104, 1102, + 377, 377, 388, 388, 377, 701, 105, 350, 510, 388, + 480, 510, 1102, 388, 388, 1102, 1014, 616, 53, 615, + 616, 616, 103, 235, 238, 53, 388, 478, 242, 337, + 478, 249, 614, 388, 388, 256, 1113, 643, 388, 388, + 337, 1113, 388, 304, 388, 304, 701, 380, 990, 285, + 285, 83, 388, 833, 337, 388, 388, 527, 527, 732, + 732, 732, 732, 1102, 42, 416, 42, 42, 388, 42, + 388, 416, 337, 471, 510, 410, 660, 1116, 388, 480, + 510, 1102, 388, 337, 281, 319, 307, 320, 346, 502, + 864, 1108, 1118, 1102, 206, 1012, 266, 206, 434, 206, + 616, 732, 732, 206, 266, 266, 80, 122, 283, 382, + 1012, 266, 206, 206, 206, 388, 430, 550, 398, 3, + 706, 707, 701, 467, 35, 145, 732, 702, 703, 1121, + 24, 871, 1012, 266, 145, 630, 1104, 251, 285, 467, + 479, 715, 411, 311, 423, 1102, 26, 377, 430, 803, + 479, 145, 1116, 90, 168, 494, 558, 609, 673, 750, + 768, 867, 145, 1113, 651, 652, 145, 266, 1113, 1116, + 228, 732, 732, 732, 732, 261, 116, 198, 396, 409, + 675, 676, 137, 306, 467, 660, 251, 479, 1102, 251, + 611, 613, 251, 35, 261, 285, 467, 579, 579, 179, + 606, 1102, 157, 179, 771, 1108, 467, 785, 35, 1012, + 212, 430, 432, 935, 339, 797, 796, 1012, 1105, 467, + 1071, 1112, 734, 1029, 1029, 34, 1013, 386, 386, 1112, + 1112, 1012, 465, 465, 1112, 388, 388, 388, 467, 388, + 1112, 1017, 783, 784, 1117, 1116, 145, 523, 145, 411, + 145, 411, 814, 815, 523, 1117, 1104, 1104, 1012, 734, + 1117, 660, 145, 145, 523, 731, 732, 1103, 1104, 1104, + 732, 468, 179, 1102, 900, 902, 933, 933, 933, 933, + 933, 933, 580, 468, 471, 468, 165, 345, 378, 1103, + 731, 104, 347, 783, 1103, 260, 1103, 1101, 1101, 1103, + 731, 388, 430, 761, 140, 222, 657, 658, 20, 143, + 333, 353, 924, 990, 255, 925, 468, 471, 907, 388, + 1102, 827, 828, 830, 753, 752, 753, 162, 169, 762, + 1118, 25, 73, 105, 128, 139, 159, 164, 213, 234, + 304, 330, 337, 344, 372, 377, 380, 398, 423, 625, + 743, 744, 1071, 1093, 466, 1071, 1075, 1076, 426, 1088, + 1089, 1035, 1071, 467, 1112, 1112, 3, 106, 177, 237, + 240, 341, 448, 1077, 1078, 1113, 1071, 1071, 1071, 1112, + 1112, 1035, 813, 1035, 1079, 333, 458, 459, 467, 1036, + 1037, 1068, 1081, 468, 1071, 1035, 1071, 1082, 1035, 52, + 162, 216, 389, 1035, 1071, 1085, 1071, 242, 1037, 1035, + 1045, 1046, 1047, 242, 1035, 1047, 468, 471, 1112, 1033, + 1012, 1035, 1035, 1035, 1035, 1121, 386, 39, 374, 1097, + 732, 1035, 467, 937, 1086, 125, 127, 150, 251, 256, + 261, 395, 405, 1035, 467, 1035, 388, 47, 180, 185, + 221, 355, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 26, 33, 360, 1065, 171, 153, 1051, 333, + 467, 1062, 167, 225, 377, 381, 383, 407, 946, 1102, + 1100, 162, 980, 26, 125, 419, 460, 468, 789, 1035, + 1072, 1073, 1119, 980, 1102, 390, 467, 1113, 471, 468, + 466, 472, 178, 178, 523, 1102, 892, 893, 1102, 1035, + 468, 467, 471, 36, 120, 411, 777, 467, 961, 1114, + 353, 210, 267, 471, 333, 334, 963, 1101, 255, 357, + 926, 974, 956, 411, 921, 111, 279, 467, 913, 936, + 35, 1118, 467, 928, 929, 930, 1118, 468, 1116, 1104, + 1104, 274, 53, 1119, 468, 789, 791, 788, 791, 1119, + 272, 468, 471, 733, 1116, 1104, 1104, 1107, 1116, 1104, + 1104, 1116, 1105, 1104, 111, 503, 1114, 330, 410, 752, + 337, 168, 752, 467, 1104, 411, 772, 210, 210, 411, + 467, 600, 179, 1104, 256, 1116, 1104, 1104, 1035, 256, + 1104, 1104, 29, 322, 388, 388, 1104, 388, 634, 236, + 796, 467, 732, 732, 1012, 393, 104, 377, 784, 423, + 67, 151, 815, 1104, 732, 1104, 732, 340, 157, 1012, + 732, 212, 173, 249, 281, 319, 415, 637, 638, 639, + 990, 388, 833, 337, 256, 147, 115, 205, 1116, 1104, + 266, 1104, 468, 471, 1115, 1117, 1104, 319, 519, 179, + 566, 251, 1012, 1104, 1118, 1104, 147, 220, 1104, 26, + 410, 1104, 179, 1104, 179, 1118, 335, 393, 335, 393, + 220, 1104, 26, 410, 1104, 220, 333, 1102, 22, 130, + 350, 644, 645, 646, 647, 1121, 1116, 1104, 111, 163, + 252, 411, 526, 529, 530, 1121, 1104, 264, 69, 264, + 1104, 521, 388, 380, 1102, 266, 388, 833, 337, 1106, + 1118, 1106, 471, 468, 471, 1116, 1104, 838, 839, 1121, + 266, 319, 388, 668, 991, 991, 1116, 1104, 991, 1105, + 1115, 3, 82, 135, 190, 287, 402, 410, 413, 481, + 319, 1116, 1104, 319, 350, 519, 613, 616, 732, 1104, + 616, 732, 1104, 616, 1116, 1104, 1116, 1104, 1104, 1116, + 803, 1104, 847, 848, 1121, 1104, 319, 350, 519, 520, + 1102, 1102, 1104, 1104, 1104, 1104, 1116, 1104, 22, 28, + 130, 281, 319, 350, 281, 319, 350, 701, 319, 350, + 319, 350, 119, 319, 1004, 1118, 179, 711, 1118, 179, + 1118, 1116, 1104, 1104, 1113, 1104, 22, 540, 347, 1115, + 319, 350, 519, 1104, 1104, 388, 388, 78, 401, 307, + 256, 740, 1113, 35, 128, 732, 740, 740, 206, 411, + 411, 740, 732, 732, 212, 732, 740, 740, 740, 303, + 544, 264, 162, 388, 543, 188, 456, 468, 471, 1035, + 1012, 732, 468, 471, 456, 675, 568, 1121, 1104, 56, + 162, 337, 422, 631, 638, 639, 145, 261, 221, 560, + 562, 564, 566, 573, 576, 23, 185, 330, 375, 481, + 482, 157, 1106, 423, 1102, 35, 669, 378, 991, 701, + 492, 1118, 493, 271, 559, 1104, 159, 732, 1071, 304, + 1113, 701, 701, 701, 701, 261, 266, 271, 467, 701, + 1002, 1003, 1004, 347, 145, 467, 145, 145, 144, 936, + 732, 261, 560, 1118, 430, 432, 596, 430, 528, 251, + 35, 579, 1113, 251, 266, 468, 786, 787, 792, 35, + 212, 327, 391, 429, 798, 799, 800, 266, 212, 506, + 176, 176, 157, 523, 35, 1071, 468, 468, 523, 465, + 450, 450, 468, 468, 1112, 466, 1112, 468, 177, 237, + 1034, 237, 1034, 1034, 1112, 240, 468, 523, 731, 732, + 1106, 732, 1106, 523, 523, 212, 523, 347, 157, 506, + 523, 523, 266, 523, 251, 468, 581, 185, 185, 185, + 434, 1103, 616, 617, 171, 756, 757, 1116, 23, 762, + 388, 467, 162, 143, 353, 143, 353, 333, 409, 239, + 1012, 1116, 430, 604, 1102, 1104, 162, 266, 756, 53, + 523, 796, 1012, 393, 377, 784, 260, 423, 1012, 212, + 732, 1104, 468, 466, 466, 471, 1035, 132, 1089, 1090, + 35, 468, 1035, 468, 468, 468, 162, 468, 468, 468, + 468, 468, 471, 468, 289, 1080, 468, 467, 1036, 1036, + 1071, 11, 15, 16, 17, 185, 206, 268, 454, 455, + 456, 458, 459, 460, 461, 462, 463, 1068, 1036, 468, + 468, 157, 162, 1083, 1084, 468, 35, 1085, 1071, 1085, + 1085, 162, 468, 468, 1121, 286, 1049, 35, 468, 471, + 1035, 1121, 471, 1035, 1096, 1035, 468, 450, 1036, 1036, + 138, 1071, 162, 125, 127, 150, 256, 261, 395, 405, + 467, 138, 813, 1035, 374, 1097, 1035, 1086, 1035, 388, + 467, 937, 467, 467, 276, 1055, 467, 1071, 381, 383, + 381, 383, 1102, 947, 947, 947, 215, 334, 447, 467, + 937, 981, 982, 983, 990, 995, 1005, 1038, 1040, 1041, + 1110, 1118, 427, 1000, 1072, 1072, 1073, 468, 13, 14, + 471, 951, 952, 1000, 865, 1112, 1033, 501, 1035, 1094, + 898, 907, 954, 268, 1066, 1069, 452, 778, 1035, 963, + 409, 960, 230, 981, 427, 1001, 417, 376, 410, 914, + 915, 916, 1118, 266, 917, 1118, 930, 931, 471, 980, + 456, 1096, 795, 733, 791, 791, 53, 793, 462, 1117, + 1117, 266, 1103, 269, 266, 1035, 577, 1106, 467, 467, + 467, 600, 188, 580, 690, 145, 523, 388, 1116, 1104, + 506, 1104, 1012, 1104, 434, 732, 732, 732, 732, 80, + 122, 283, 382, 1012, 1104, 620, 1104, 173, 415, 388, + 388, 620, 637, 643, 319, 350, 519, 1104, 1104, 1104, + 196, 1104, 256, 787, 280, 350, 388, 251, 145, 270, + 641, 690, 22, 130, 323, 324, 350, 522, 531, 532, + 643, 834, 1104, 342, 145, 523, 145, 523, 1104, 1104, + 1104, 1104, 342, 342, 220, 646, 647, 646, 468, 471, + 648, 1113, 188, 468, 471, 456, 469, 1116, 1104, 319, + 350, 519, 147, 1104, 1104, 1104, 281, 319, 350, 22, + 130, 281, 319, 350, 1012, 250, 1012, 468, 471, 456, + 1102, 388, 1117, 411, 665, 222, 287, 256, 1113, 287, + 1117, 408, 388, 388, 337, 471, 803, 280, 350, 83, + 388, 833, 337, 157, 533, 388, 388, 232, 232, 232, + 388, 388, 337, 388, 388, 337, 388, 337, 388, 337, + 266, 388, 523, 1012, 251, 1113, 350, 834, 145, 523, + 388, 388, 1104, 388, 337, 1116, 1104, 1012, 732, 206, + 740, 1106, 1106, 206, 206, 1104, 206, 367, 368, 545, + 1113, 544, 173, 250, 268, 458, 459, 616, 704, 791, + 1069, 1113, 1125, 3, 707, 468, 468, 162, 701, 703, + 704, 266, 65, 71, 83, 111, 113, 166, 192, 251, + 256, 298, 313, 404, 569, 570, 572, 144, 426, 478, + 506, 1104, 506, 641, 1102, 1102, 1102, 468, 471, 1117, + 171, 330, 1117, 1112, 398, 1102, 579, 3, 157, 670, + 43, 493, 321, 377, 650, 104, 898, 162, 847, 528, + 580, 1102, 676, 708, 709, 1113, 468, 471, 1104, 157, + 580, 1102, 603, 1102, 1104, 604, 467, 561, 1102, 468, + 264, 527, 264, 266, 597, 527, 35, 145, 936, 528, + 388, 145, 1102, 468, 471, 111, 456, 801, 1113, 506, + 377, 790, 791, 157, 802, 800, 803, 116, 198, 343, + 409, 856, 1104, 173, 936, 1012, 468, 1112, 1032, 1032, + 466, 466, 468, 523, 411, 523, 411, 523, 1104, 1104, + 660, 523, 732, 145, 337, 337, 337, 1103, 471, 1116, + 430, 471, 758, 269, 991, 347, 143, 143, 104, 249, + 1117, 755, 523, 1116, 206, 206, 206, 616, 206, 206, + 206, 1075, 385, 1035, 136, 1012, 468, 1035, 1035, 1035, + 1083, 468, 1071, 471, 1012, 1036, 1036, 1036, 1036, 125, + 127, 251, 261, 1036, 1036, 1036, 1036, 1036, 1036, 1036, + 1036, 1036, 1036, 1035, 1035, 1084, 1083, 1012, 468, 468, + 468, 1071, 468, 471, 53, 1037, 468, 1121, 1046, 295, + 371, 1048, 468, 471, 422, 1042, 35, 468, 1113, 1035, + 32, 32, 1035, 468, 1035, 162, 467, 1074, 1035, 468, + 138, 1036, 1036, 138, 138, 1035, 1035, 952, 427, 467, + 1056, 1118, 468, 1071, 471, 947, 947, 947, 947, 1102, + 1102, 1102, 937, 995, 1005, 162, 467, 937, 982, 983, + 35, 984, 985, 1118, 471, 91, 163, 194, 209, 219, + 245, 329, 987, 985, 35, 984, 986, 1118, 985, 453, + 999, 467, 1095, 1035, 171, 965, 471, 951, 951, 951, + 1035, 1035, 419, 1073, 468, 965, 468, 466, 468, 467, + 778, 154, 214, 468, 267, 94, 1035, 326, 919, 416, + 468, 471, 1096, 81, 919, 468, 471, 929, 1001, 1035, + 468, 462, 795, 398, 165, 338, 345, 378, 399, 767, + 157, 767, 468, 467, 583, 584, 774, 1040, 1118, 580, + 580, 690, 1108, 468, 113, 192, 249, 251, 691, 1104, + 1104, 35, 1104, 411, 411, 732, 732, 732, 732, 212, + 733, 1116, 1104, 388, 833, 337, 388, 196, 53, 380, + 1104, 145, 566, 467, 568, 166, 178, 251, 527, 478, + 104, 166, 251, 366, 369, 527, 614, 350, 532, 398, + 1104, 1118, 342, 645, 1104, 530, 704, 1121, 280, 350, + 388, 833, 337, 1104, 388, 388, 388, 337, 164, 268, + 369, 713, 714, 164, 268, 721, 722, 388, 388, 337, + 468, 468, 468, 839, 250, 616, 791, 840, 1069, 1113, + 1125, 319, 1104, 467, 430, 666, 1114, 1113, 1113, 1113, + 1104, 1104, 1104, 848, 53, 380, 1104, 1104, 1104, 1104, + 417, 1104, 1104, 157, 157, 321, 157, 179, 1116, 1104, + 1104, 1116, 1104, 1104, 1104, 1104, 1104, 1104, 147, 1104, + 71, 524, 145, 24, 45, 398, 1118, 1104, 1113, 643, + 1104, 1104, 468, 206, 740, 206, 206, 740, 740, 206, + 740, 478, 545, 620, 690, 430, 432, 732, 1102, 467, + 732, 1104, 1036, 29, 53, 571, 114, 181, 113, 256, + 210, 1102, 803, 302, 693, 694, 1118, 630, 285, 467, + 561, 574, 191, 590, 564, 1117, 1117, 1012, 467, 528, + 26, 116, 198, 343, 409, 671, 388, 667, 1116, 179, + 1102, 652, 434, 266, 981, 803, 314, 677, 468, 471, + 1004, 641, 660, 468, 611, 35, 261, 285, 467, 909, + 563, 565, 567, 576, 1118, 285, 591, 592, 561, 590, + 77, 380, 598, 936, 606, 604, 598, 1113, 1108, 772, + 792, 1035, 1035, 471, 467, 798, 398, 471, 388, 467, + 620, 468, 466, 1106, 1106, 523, 347, 523, 1103, 1103, + 1103, 616, 168, 757, 468, 1104, 104, 762, 162, 256, + 745, 1113, 745, 745, 206, 745, 745, 745, 1035, 468, + 468, 1084, 468, 1035, 162, 125, 127, 261, 467, 468, + 437, 1044, 1071, 312, 53, 428, 428, 468, 1035, 249, + 1035, 471, 1043, 1014, 1035, 1035, 1035, 1074, 468, 1035, + 32, 32, 1035, 1035, 138, 468, 468, 1035, 1057, 1118, + 468, 1035, 1102, 1102, 1102, 1102, 985, 986, 985, 467, + 442, 1037, 468, 1118, 467, 982, 209, 275, 988, 982, + 988, 209, 987, 988, 209, 379, 993, 467, 1118, 467, + 273, 1072, 53, 174, 972, 468, 468, 468, 1073, 1113, + 972, 1113, 813, 261, 1099, 936, 279, 936, 916, 266, + 467, 918, 456, 930, 919, 398, 468, 388, 752, 162, + 690, 1035, 468, 471, 430, 71, 775, 775, 468, 468, + 803, 114, 181, 190, 113, 413, 523, 1012, 1106, 1106, + 1104, 1104, 1104, 1104, 1104, 1117, 1104, 566, 642, 646, + 571, 179, 256, 616, 571, 256, 1114, 1118, 1012, 523, + 523, 456, 53, 380, 1104, 1104, 1104, 1104, 1116, 1104, + 1104, 1112, 1112, 1012, 471, 1112, 1112, 471, 1116, 1104, + 1104, 388, 1035, 65, 1117, 1104, 388, 388, 162, 185, + 1103, 1103, 732, 1103, 145, 1104, 732, 1113, 1113, 1012, + 523, 523, 206, 740, 740, 740, 740, 467, 546, 547, + 411, 551, 552, 164, 195, 164, 162, 689, 1035, 251, + 570, 111, 35, 803, 579, 411, 599, 1110, 32, 144, + 185, 261, 560, 533, 142, 186, 467, 347, 411, 580, + 35, 1117, 665, 493, 251, 467, 159, 1104, 1071, 247, + 265, 678, 679, 680, 157, 683, 1113, 347, 528, 936, + 732, 261, 560, 604, 468, 471, 430, 568, 53, 596, + 533, 591, 116, 130, 295, 1104, 430, 868, 35, 162, + 266, 467, 1113, 789, 804, 805, 1119, 803, 1012, 157, + 1102, 162, 388, 824, 193, 621, 523, 523, 523, 1104, + 269, 204, 523, 756, 745, 468, 1036, 162, 467, 1074, + 467, 468, 471, 468, 1037, 312, 468, 416, 363, 468, + 468, 468, 1035, 1035, 1035, 468, 285, 1058, 468, 996, + 997, 1040, 467, 1049, 984, 467, 1103, 982, 266, 411, + 989, 982, 209, 982, 1110, 1003, 467, 1003, 1118, 951, + 93, 172, 332, 467, 966, 967, 968, 969, 970, 971, + 1035, 1035, 429, 1052, 951, 1052, 468, 933, 914, 83, + 773, 774, 126, 1035, 756, 266, 756, 468, 803, 584, + 268, 813, 732, 732, 776, 776, 313, 803, 599, 468, + 388, 350, 925, 468, 471, 35, 145, 524, 704, 1117, + 1104, 388, 467, 784, 813, 815, 714, 467, 467, 722, + 1104, 468, 467, 350, 925, 1104, 1104, 467, 467, 430, + 453, 886, 321, 886, 886, 157, 524, 740, 553, 554, + 1121, 49, 92, 117, 134, 138, 158, 161, 175, 256, + 264, 305, 548, 478, 118, 784, 35, 820, 820, 1102, + 690, 468, 178, 599, 233, 582, 188, 467, 694, 302, + 467, 1102, 468, 347, 26, 76, 84, 112, 178, 189, + 369, 575, 575, 1101, 1104, 1106, 468, 936, 666, 145, + 104, 641, 162, 679, 333, 377, 681, 131, 684, 426, + 686, 1104, 35, 604, 561, 1102, 468, 565, 270, 3, + 593, 1122, 597, 591, 596, 334, 334, 57, 65, 225, + 936, 732, 1102, 773, 791, 468, 471, 398, 1000, 361, + 361, 468, 620, 249, 415, 622, 623, 1104, 523, 1036, + 1074, 468, 1045, 1071, 53, 249, 449, 53, 951, 468, + 471, 35, 998, 111, 1010, 1011, 1036, 74, 1103, 468, + 1035, 467, 982, 989, 467, 468, 1003, 468, 468, 467, + 351, 467, 468, 471, 1053, 1054, 1118, 468, 416, 1104, + 468, 471, 252, 409, 758, 767, 523, 775, 599, 467, + 777, 777, 1102, 599, 690, 1104, 380, 646, 178, 411, + 525, 350, 925, 1104, 1074, 157, 717, 717, 1074, 1074, + 1035, 380, 235, 238, 256, 534, 536, 537, 616, 1113, + 534, 535, 731, 732, 731, 732, 1103, 523, 468, 471, + 460, 467, 503, 555, 616, 883, 1113, 883, 251, 256, + 305, 883, 883, 546, 1113, 820, 38, 183, 157, 249, + 578, 467, 612, 163, 284, 356, 266, 586, 587, 588, + 380, 468, 1110, 5, 695, 561, 590, 1104, 468, 641, + 151, 716, 528, 868, 1102, 434, 981, 883, 333, 365, + 685, 467, 144, 641, 936, 591, 561, 590, 568, 467, + 598, 596, 597, 65, 269, 65, 604, 772, 468, 798, + 804, 1012, 126, 430, 430, 415, 620, 641, 468, 468, + 468, 312, 416, 1071, 306, 334, 1059, 999, 996, 467, + 1036, 468, 471, 35, 1006, 1007, 1118, 468, 1103, 1071, + 468, 1071, 467, 1071, 967, 471, 35, 936, 1000, 774, + 350, 162, 776, 427, 585, 813, 778, 778, 579, 690, + 1104, 612, 1035, 380, 468, 272, 340, 310, 718, 718, + 468, 468, 468, 1104, 468, 471, 468, 471, 886, 554, + 503, 556, 557, 1113, 1113, 256, 580, 460, 580, 1113, + 1113, 131, 190, 613, 116, 409, 266, 588, 266, 587, + 1104, 467, 468, 471, 533, 347, 641, 732, 35, 35, + 467, 1104, 682, 1118, 1035, 302, 868, 596, 533, 591, + 467, 594, 595, 1040, 1118, 597, 598, 269, 269, 467, + 528, 803, 27, 199, 857, 164, 164, 47, 94, 400, + 1035, 1060, 1061, 1060, 468, 1003, 471, 1011, 1121, 468, + 471, 157, 1012, 468, 468, 468, 966, 468, 1054, 1056, + 928, 756, 777, 467, 690, 468, 582, 925, 1104, 784, + 53, 925, 388, 537, 534, 732, 468, 471, 580, 333, + 468, 56, 249, 325, 350, 589, 589, 468, 5, 347, + 1104, 713, 936, 641, 468, 1110, 597, 591, 596, 1035, + 468, 471, 775, 775, 598, 773, 598, 252, 467, 852, + 854, 858, 911, 920, 927, 936, 784, 784, 1061, 333, + 156, 293, 156, 293, 468, 1037, 1007, 273, 3, 111, + 251, 256, 1008, 1009, 320, 994, 468, 1000, 523, 778, + 1035, 586, 925, 732, 467, 557, 686, 21, 111, 256, + 1104, 641, 868, 467, 598, 596, 597, 468, 595, 776, + 776, 468, 1000, 853, 854, 855, 937, 938, 471, 471, + 32, 1049, 1036, 1036, 256, 1009, 467, 468, 690, 536, + 144, 641, 4, 687, 688, 1112, 1113, 1121, 597, 598, + 775, 528, 468, 470, 388, 162, 1061, 74, 1035, 468, + 302, 468, 471, 598, 776, 598, 855, 361, 361, 1006, + 468, 1110, 688, 1000, 430, 430, 468, 467, 164, 164, + 687, 784, 784, 468 +}; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ + +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif #define YYRECOVERING() (!!yyerrstatus) @@ -22991,13 +25305,13 @@ do \ else \ { \ yyerror (&yylloc, yyscanner, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) + YYERROR; \ + } \ +while (YYID (0)) /* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYTERROR 1 +#define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. @@ -23007,7 +25321,7 @@ while (0) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ - if (N) \ + if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ @@ -23021,27 +25335,12 @@ while (0) (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ - while (0) + while (YYID (0)) #endif #define YYRHSLOC(Rhs, K) ((Rhs)[K]) -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - - /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ @@ -23051,28 +25350,36 @@ do { \ /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ -YY_ATTRIBUTE_UNUSED +__attribute__((__unused__)) +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static unsigned yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) +#else +static unsigned +yy_location_print_ (yyo, yylocp) + FILE *yyo; + YYLTYPE const * const yylocp; +#endif { unsigned res = 0; int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; if (0 <= yylocp->first_line) { - res += YYFPRINTF (yyo, "%d", yylocp->first_line); + res += fprintf (yyo, "%d", yylocp->first_line); if (0 <= yylocp->first_column) - res += YYFPRINTF (yyo, ".%d", yylocp->first_column); + res += fprintf (yyo, ".%d", yylocp->first_column); } if (0 <= yylocp->last_line) { if (yylocp->first_line < yylocp->last_line) { - res += YYFPRINTF (yyo, "-%d", yylocp->last_line); + res += fprintf (yyo, "-%d", yylocp->last_line); if (0 <= end_col) - res += YYFPRINTF (yyo, ".%d", end_col); + res += fprintf (yyo, ".%d", end_col); } else if (0 <= end_col && yylocp->first_column < end_col) - res += YYFPRINTF (yyo, "-%d", end_col); + res += fprintf (yyo, "-%d", end_col); } return res; } @@ -23086,36 +25393,75 @@ yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) #endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, Location, yyscanner); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) +/* YYLEX -- calling `yylex' with the right arguments. */ +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, &yylloc, yyscanner) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, Location, yyscanner); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; + core_yyscan_t yyscanner; +#endif { FILE *yyo = yyoutput; YYUSE (yyo); - YYUSE (yylocationp); - YYUSE (yyscanner); if (!yyvaluep) return; + YYUSE (yylocationp); + YYUSE (yyscanner); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); # endif - YYUSE (yytype); + switch (yytype) + { + default: + break; + } } @@ -23123,11 +25469,24 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue | Print this symbol on YYOUTPUT. | `--------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; + core_yyscan_t yyscanner; +#endif { - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); YY_LOCATION_PRINT (yyoutput, *yylocationp); YYFPRINTF (yyoutput, ": "); @@ -23140,8 +25499,16 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYL | TOP (included). | `------------------------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -23152,42 +25519,51 @@ yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, core_yyscan_t yyscanner) +#else static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, core_yyscan_t yyscanner) +yy_reduce_print (yyvsp, yylsp, yyrule, yyscanner) + YYSTYPE *yyvsp; + YYLTYPE *yylsp; + int yyrule; + core_yyscan_t yyscanner; +#endif { - unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; + unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , &(yylsp[(yyi + 1) - (yynrhs)]) , yyscanner); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , &(yylsp[(yyi + 1) - (yynrhs)]) , yyscanner); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, yylsp, Rule, yyscanner); \ -} while (0) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, yylsp, Rule, yyscanner); \ +} while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -23201,7 +25577,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -23224,8 +25600,15 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -23241,8 +25624,16 @@ yystrlen (const char *yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif { char *yyd = yydest; const char *yys = yysrc; @@ -23272,27 +25663,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -23315,11 +25706,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; + const char *yyformat = YY_NULL; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -23327,6 +25718,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -23376,7 +25771,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -23443,19 +25838,35 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, core_yyscan_t yyscanner) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, yylocationp, yyscanner) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + YYLTYPE *yylocationp; + core_yyscan_t yyscanner; +#endif { YYUSE (yyvaluep); YYUSE (yylocationp); YYUSE (yyscanner); + if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END + switch (yytype) + { + + default: + break; + } } @@ -23465,27 +25876,66 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio | yyparse. | `----------*/ +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) int yyparse (core_yyscan_t yyscanner) +#else +int +yyparse (yyscanner) + core_yyscan_t yyscanner; +#endif +#endif { /* The lookahead symbol. */ int yychar; -/* The semantic value of the lookahead symbol. */ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ -YY_INITIAL_VALUE (static YYSTYPE yyval_default;) -YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); - -/* Location data for the lookahead symbol. */ +static YYSTYPE yyval_default; +# define YY_INITIAL_VALUE(Value) = Value +#endif static YYLTYPE yyloc_default # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL = { 1, 1, 1, 1 } # endif ; +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); + +/* Location data for the lookahead symbol. */ YYLTYPE yylloc = yyloc_default; + /* Number of syntax errors so far. */ int yynerrs; @@ -23494,9 +25944,9 @@ YYLTYPE yylloc = yyloc_default; int yyerrstatus; /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - 'yyls': related to locations. + `yyss': related to states. + `yyvs': related to semantic values. + `yyls': related to locations. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -23575,26 +26025,26 @@ YYLTYPE yylloc = yyloc_default; #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - YYLTYPE *yyls1 = yyls; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yyls1, yysize * sizeof (*yylsp), - &yystacksize); - - yyls = yyls1; - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + YYLTYPE *yyls1 = yyls; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + + yyls = yyls1; + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -23602,23 +26052,23 @@ YYLTYPE yylloc = yyloc_default; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); - YYSTACK_RELOCATE (yyls_alloc, yyls); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); + YYSTACK_RELOCATE (yyls_alloc, yyls); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -23628,10 +26078,10 @@ YYLTYPE yylloc = yyloc_default; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -23660,7 +26110,7 @@ yybackup: if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (&yylval, &yylloc, yyscanner); + yychar = YYLEX; } if (yychar <= YYEOF) @@ -23725,7 +26175,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. + `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -23740,2985 +26190,3359 @@ yyreduce: switch (yyn) { case 2: -#line 769 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 813 "gram.y" { - pg_yyget_extra(yyscanner)->parsetree = (yyvsp[0].list); + pg_yyget_extra(yyscanner)->parsetree = (yyvsp[(1) - (1)].list); } -#line 23748 "gram.c" /* yacc.c:1646 */ break; case 3: -#line 776 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 829 "gram.y" { - if ((yyvsp[0].node) != NULL) - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + if ((yyvsp[(1) - (3)].list) != NIL) + { + /* update length of previous stmt */ + updateRawStmtEnd(llast_node(RawStmt, (yyvsp[(1) - (3)].list)), (yylsp[(2) - (3)])); + } + if ((yyvsp[(3) - (3)].node) != NULL) + (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeRawStmt((yyvsp[(3) - (3)].node), (yylsp[(2) - (3)]) + 1)); else - (yyval.list) = (yyvsp[-2].list); + (yyval.list) = (yyvsp[(1) - (3)].list); } -#line 23759 "gram.c" /* yacc.c:1646 */ break; case 4: -#line 783 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 841 "gram.y" { - if ((yyvsp[0].node) != NULL) - (yyval.list) = list_make1((yyvsp[0].node)); + if ((yyvsp[(1) - (1)].node) != NULL) + (yyval.list) = list_make1(makeRawStmt((yyvsp[(1) - (1)].node), 0)); else (yyval.list) = NIL; } -#line 23770 "gram.c" /* yacc.c:1646 */ break; - case 130: -#line 918 "gram.y" /* yacc.c:1646 */ + case 128: +/* Line 1792 of yacc.c */ +#line 974 "gram.y" { (yyval.node) = NULL; } -#line 23776 "gram.c" /* yacc.c:1646 */ break; - case 131: -#line 929 "gram.y" /* yacc.c:1646 */ + case 129: +/* Line 1792 of yacc.c */ +#line 985 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_ROLE; - n->role = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->role = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 23788 "gram.c" /* yacc.c:1646 */ + break; + + case 130: +/* Line 1792 of yacc.c */ +#line 995 "gram.y" + {} + break; + + case 131: +/* Line 1792 of yacc.c */ +#line 996 "gram.y" + {} break; case 132: -#line 939 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 997 "gram.y" {} -#line 23794 "gram.c" /* yacc.c:1646 */ break; case 133: -#line 940 "gram.y" /* yacc.c:1646 */ - {} -#line 23800 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1006 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 134: -#line 941 "gram.y" /* yacc.c:1646 */ - {} -#line 23806 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1007 "gram.y" + { (yyval.list) = NIL; } break; case 135: -#line 950 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 23812 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1011 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 136: -#line 951 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1012 "gram.y" { (yyval.list) = NIL; } -#line 23818 "gram.c" /* yacc.c:1646 */ break; case 137: -#line 955 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 23824 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1017 "gram.y" + { + (yyval.defelt) = makeDefElem("password", + (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); + } break; case 138: -#line 956 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = NIL; } -#line 23830 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1022 "gram.y" + { + (yyval.defelt) = makeDefElem("password", NULL, (yylsp[(1) - (2)])); + } break; case 139: -#line 961 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1026 "gram.y" { + /* + * These days, passwords are always stored in encrypted + * form, so there is no difference between PASSWORD and + * ENCRYPTED PASSWORD. + */ (yyval.defelt) = makeDefElem("password", - (Node *)makeString((yyvsp[0].str))); + (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 23839 "gram.c" /* yacc.c:1646 */ break; case 140: -#line 966 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1036 "gram.y" { - (yyval.defelt) = makeDefElem("password", NULL); + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("UNENCRYPTED PASSWORD is no longer supported"), + errhint("Remove UNENCRYPTED to store the password in encrypted form instead."), + parser_errposition((yylsp[(1) - (3)])))); } -#line 23847 "gram.c" /* yacc.c:1646 */ break; case 141: -#line 970 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1044 "gram.y" { - (yyval.defelt) = makeDefElem("encryptedPassword", - (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 23856 "gram.c" /* yacc.c:1646 */ break; case 142: -#line 975 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1048 "gram.y" { - (yyval.defelt) = makeDefElem("unencryptedPassword", - (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("connectionlimit", (Node *)makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); } -#line 23865 "gram.c" /* yacc.c:1646 */ break; case 143: -#line 980 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1052 "gram.y" { - (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("validUntil", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 23873 "gram.c" /* yacc.c:1646 */ break; case 144: -#line 984 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1057 "gram.y" { - (yyval.defelt) = makeDefElem("connectionlimit", (Node *)makeInteger((yyvsp[0].ival))); + (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } -#line 23881 "gram.c" /* yacc.c:1646 */ break; case 145: -#line 988 "gram.y" /* yacc.c:1646 */ - { - (yyval.defelt) = makeDefElem("validUntil", (Node *)makeString((yyvsp[0].str))); - } -#line 23889 "gram.c" /* yacc.c:1646 */ - break; - - case 146: -#line 993 "gram.y" /* yacc.c:1646 */ - { - (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[0].list)); - } -#line 23897 "gram.c" /* yacc.c:1646 */ - break; - - case 147: -#line 997 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1061 "gram.y" { /* * We handle identifiers that aren't parser keywords with * the following special-case codes, to avoid bloating the * size of the main parser. */ - if (strcmp((yyvsp[0].str), "superuser") == 0) - (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(TRUE)); - else if (strcmp((yyvsp[0].str), "nosuperuser") == 0) - (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(FALSE)); - else if (strcmp((yyvsp[0].str), "createrole") == 0) - (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(TRUE)); - else if (strcmp((yyvsp[0].str), "nocreaterole") == 0) - (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(FALSE)); - else if (strcmp((yyvsp[0].str), "replication") == 0) - (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(TRUE)); - else if (strcmp((yyvsp[0].str), "noreplication") == 0) - (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(FALSE)); - else if (strcmp((yyvsp[0].str), "createdb") == 0) - (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(TRUE)); - else if (strcmp((yyvsp[0].str), "nocreatedb") == 0) - (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(FALSE)); - else if (strcmp((yyvsp[0].str), "login") == 0) - (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(TRUE)); - else if (strcmp((yyvsp[0].str), "nologin") == 0) - (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(FALSE)); - else if (strcmp((yyvsp[0].str), "bypassrls") == 0) - (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(TRUE)); - else if (strcmp((yyvsp[0].str), "nobypassrls") == 0) - (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(FALSE)); - else if (strcmp((yyvsp[0].str), "noinherit") == 0) + if (strcmp((yyvsp[(1) - (1)].str), "superuser") == 0) + (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "nosuperuser") == 0) + (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "createrole") == 0) + (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "nocreaterole") == 0) + (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "replication") == 0) + (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "noreplication") == 0) + (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "createdb") == 0) + (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "nocreatedb") == 0) + (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "login") == 0) + (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "nologin") == 0) + (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "bypassrls") == 0) + (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "nobypassrls") == 0) + (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "noinherit") == 0) { /* * Note that INHERIT is a keyword, so it's handled by main parser, but * NOINHERIT is handled here. */ - (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(FALSE)); + (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); } else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("unrecognized role option \"%s\"", (yyvsp[0].str)), - parser_errposition((yylsp[0])))); + errmsg("unrecognized role option \"%s\"", (yyvsp[(1) - (1)].str)), + parser_errposition((yylsp[(1) - (1)])))); } -#line 23946 "gram.c" /* yacc.c:1646 */ break; - case 148: -#line 1044 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = (yyvsp[0].defelt); } -#line 23952 "gram.c" /* yacc.c:1646 */ + case 146: +/* Line 1792 of yacc.c */ +#line 1108 "gram.y" + { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); } break; - case 149: -#line 1047 "gram.y" /* yacc.c:1646 */ + case 147: +/* Line 1792 of yacc.c */ +#line 1111 "gram.y" { - (yyval.defelt) = makeDefElem("sysid", (Node *)makeInteger((yyvsp[0].ival))); + (yyval.defelt) = makeDefElem("sysid", (Node *)makeInteger((yyvsp[(2) - (2)].ival)), (yylsp[(1) - (2)])); } -#line 23960 "gram.c" /* yacc.c:1646 */ break; - case 150: -#line 1051 "gram.y" /* yacc.c:1646 */ + case 148: +/* Line 1792 of yacc.c */ +#line 1115 "gram.y" { - (yyval.defelt) = makeDefElem("adminmembers", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("adminmembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } -#line 23968 "gram.c" /* yacc.c:1646 */ break; - case 151: -#line 1055 "gram.y" /* yacc.c:1646 */ + case 149: +/* Line 1792 of yacc.c */ +#line 1119 "gram.y" { - (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } -#line 23976 "gram.c" /* yacc.c:1646 */ break; - case 152: -#line 1059 "gram.y" /* yacc.c:1646 */ + case 150: +/* Line 1792 of yacc.c */ +#line 1123 "gram.y" { - (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 23984 "gram.c" /* yacc.c:1646 */ break; - case 153: -#line 1063 "gram.y" /* yacc.c:1646 */ + case 151: +/* Line 1792 of yacc.c */ +#line 1127 "gram.y" { - (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 23992 "gram.c" /* yacc.c:1646 */ break; - case 154: -#line 1077 "gram.y" /* yacc.c:1646 */ + case 152: +/* Line 1792 of yacc.c */ +#line 1141 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_USER; - n->role = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->role = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 24004 "gram.c" /* yacc.c:1646 */ break; - case 155: -#line 1095 "gram.y" /* yacc.c:1646 */ + case 153: +/* Line 1792 of yacc.c */ +#line 1159 "gram.y" + { + AlterRoleStmt *n = makeNode(AlterRoleStmt); + n->role = (yyvsp[(3) - (5)].rolespec); + n->action = +1; /* add, if there are members */ + n->options = (yyvsp[(5) - (5)].list); + (yyval.node) = (Node *)n; + } + break; + + case 154: +/* Line 1792 of yacc.c */ +#line 1167 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); - n->role = (yyvsp[-2].node); + n->role = (yyvsp[(3) - (5)].rolespec); n->action = +1; /* add, if there are members */ - n->options = (yyvsp[0].list); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 24016 "gram.c" /* yacc.c:1646 */ + break; + + case 155: +/* Line 1792 of yacc.c */ +#line 1177 "gram.y" + { (yyval.str) = NULL; } break; case 156: -#line 1105 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = NULL; } -#line 24022 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1178 "gram.y" + { (yyval.str) = (yyvsp[(3) - (3)].str); } break; case 157: -#line 1106 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 24028 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1183 "gram.y" + { + AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); + n->role = (yyvsp[(3) - (5)].rolespec); + n->database = (yyvsp[(4) - (5)].str); + n->setstmt = (yyvsp[(5) - (5)].vsetstmt); + (yyval.node) = (Node *)n; + } break; case 158: -#line 1111 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1191 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); - n->role = (yyvsp[-2].node); - n->database = (yyvsp[-1].str); - n->setstmt = (yyvsp[0].vsetstmt); + n->role = NULL; + n->database = (yyvsp[(4) - (5)].str); + n->setstmt = (yyvsp[(5) - (5)].vsetstmt); (yyval.node) = (Node *)n; } -#line 24040 "gram.c" /* yacc.c:1646 */ break; case 159: -#line 1119 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1199 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); - n->role = NULL; - n->database = (yyvsp[-1].str); - n->setstmt = (yyvsp[0].vsetstmt); + n->role = (yyvsp[(3) - (5)].rolespec); + n->database = (yyvsp[(4) - (5)].str); + n->setstmt = (yyvsp[(5) - (5)].vsetstmt); (yyval.node) = (Node *)n; } -#line 24052 "gram.c" /* yacc.c:1646 */ break; case 160: -#line 1137 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1207 "gram.y" { - AlterRoleStmt *n = makeNode(AlterRoleStmt); - n->role = (yyvsp[-2].node); - n->action = +1; /* add, if there are members */ - n->options = (yyvsp[0].list); + AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); + n->role = NULL; + n->database = (yyvsp[(4) - (5)].str); + n->setstmt = (yyvsp[(5) - (5)].vsetstmt); (yyval.node) = (Node *)n; - } -#line 24064 "gram.c" /* yacc.c:1646 */ + } break; case 161: -#line 1149 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1228 "gram.y" { - AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); - n->role = (yyvsp[-1].node); - n->database = NULL; - n->setstmt = (yyvsp[0].vsetstmt); + DropRoleStmt *n = makeNode(DropRoleStmt); + n->missing_ok = FALSE; + n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; } -#line 24076 "gram.c" /* yacc.c:1646 */ break; case 162: -#line 1170 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1235 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = FALSE; - n->roles = (yyvsp[0].list); + n->missing_ok = TRUE; + n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 24087 "gram.c" /* yacc.c:1646 */ break; case 163: -#line 1177 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1242 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = TRUE; - n->roles = (yyvsp[0].list); + n->missing_ok = FALSE; + n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; } -#line 24098 "gram.c" /* yacc.c:1646 */ break; case 164: -#line 1196 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1249 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = FALSE; - n->roles = (yyvsp[0].list); + n->roles = (yyvsp[(5) - (5)].list); + n->missing_ok = TRUE; (yyval.node) = (Node *)n; } -#line 24109 "gram.c" /* yacc.c:1646 */ break; case 165: -#line 1203 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1256 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); - n->roles = (yyvsp[0].list); - n->missing_ok = TRUE; + n->missing_ok = FALSE; + n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; } -#line 24120 "gram.c" /* yacc.c:1646 */ break; case 166: -#line 1220 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1263 "gram.y" { - CreateRoleStmt *n = makeNode(CreateRoleStmt); - n->stmt_type = ROLESTMT_GROUP; - n->role = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + DropRoleStmt *n = makeNode(DropRoleStmt); + n->missing_ok = TRUE; + n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 24132 "gram.c" /* yacc.c:1646 */ break; case 167: -#line 1238 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1280 "gram.y" { - AlterRoleStmt *n = makeNode(AlterRoleStmt); - n->role = (yyvsp[-3].node); - n->action = (yyvsp[-2].ival); - n->options = list_make1(makeDefElem("rolemembers", - (Node *)(yyvsp[0].list))); + CreateRoleStmt *n = makeNode(CreateRoleStmt); + n->stmt_type = ROLESTMT_GROUP; + n->role = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 24145 "gram.c" /* yacc.c:1646 */ break; case 168: -#line 1248 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = +1; } -#line 24151 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1298 "gram.y" + { + AlterRoleStmt *n = makeNode(AlterRoleStmt); + n->role = (yyvsp[(3) - (6)].rolespec); + n->action = (yyvsp[(4) - (6)].ival); + n->options = list_make1(makeDefElem("rolemembers", + (Node *)(yyvsp[(6) - (6)].list), (yylsp[(6) - (6)]))); + (yyval.node) = (Node *)n; + } break; case 169: -#line 1249 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = -1; } -#line 24157 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1308 "gram.y" + { (yyval.ival) = +1; } break; case 170: -#line 1262 "gram.y" /* yacc.c:1646 */ - { - DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = FALSE; - n->roles = (yyvsp[0].list); - (yyval.node) = (Node *)n; - } -#line 24168 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1309 "gram.y" + { (yyval.ival) = -1; } break; case 171: -#line 1269 "gram.y" /* yacc.c:1646 */ - { - DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = TRUE; - n->roles = (yyvsp[0].list); - (yyval.node) = (Node *)n; - } -#line 24179 "gram.c" /* yacc.c:1646 */ - break; - - case 172: -#line 1286 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1321 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* One can omit the schema name or the authorization id. */ - n->schemaname = (yyvsp[-3].str); - n->authrole = (yyvsp[-1].node); - n->schemaElts = (yyvsp[0].list); + n->schemaname = (yyvsp[(3) - (6)].str); + n->authrole = (yyvsp[(5) - (6)].rolespec); + n->schemaElts = (yyvsp[(6) - (6)].list); n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 24193 "gram.c" /* yacc.c:1646 */ break; - case 173: -#line 1296 "gram.y" /* yacc.c:1646 */ + case 172: +/* Line 1792 of yacc.c */ +#line 1331 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* ...but not both */ - n->schemaname = (yyvsp[-1].str); + n->schemaname = (yyvsp[(3) - (4)].str); n->authrole = NULL; - n->schemaElts = (yyvsp[0].list); + n->schemaElts = (yyvsp[(4) - (4)].list); n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 24207 "gram.c" /* yacc.c:1646 */ break; - case 174: -#line 1306 "gram.y" /* yacc.c:1646 */ + case 173: +/* Line 1792 of yacc.c */ +#line 1341 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* schema name can be omitted here, too */ - n->schemaname = (yyvsp[-3].str); - n->authrole = (yyvsp[-1].node); - if ((yyvsp[0].list) != NIL) + n->schemaname = (yyvsp[(6) - (9)].str); + n->authrole = (yyvsp[(8) - (9)].rolespec); + if ((yyvsp[(9) - (9)].list) != NIL) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), - parser_errposition((yylsp[0])))); - n->schemaElts = (yyvsp[0].list); + parser_errposition((yylsp[(9) - (9)])))); + n->schemaElts = (yyvsp[(9) - (9)].list); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 24226 "gram.c" /* yacc.c:1646 */ break; - case 175: -#line 1321 "gram.y" /* yacc.c:1646 */ + case 174: +/* Line 1792 of yacc.c */ +#line 1356 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* ...but not here */ - n->schemaname = (yyvsp[-1].str); + n->schemaname = (yyvsp[(6) - (7)].str); n->authrole = NULL; - if ((yyvsp[0].list) != NIL) + if ((yyvsp[(7) - (7)].list) != NIL) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), - parser_errposition((yylsp[0])))); - n->schemaElts = (yyvsp[0].list); + parser_errposition((yylsp[(7) - (7)])))); + n->schemaElts = (yyvsp[(7) - (7)].list); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 24245 "gram.c" /* yacc.c:1646 */ break; - case 176: -#line 1338 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 24251 "gram.c" /* yacc.c:1646 */ + case 175: +/* Line 1792 of yacc.c */ +#line 1373 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 177: -#line 1339 "gram.y" /* yacc.c:1646 */ + case 176: +/* Line 1792 of yacc.c */ +#line 1374 "gram.y" { (yyval.str) = NULL; } -#line 24257 "gram.c" /* yacc.c:1646 */ break; - case 178: -#line 1344 "gram.y" /* yacc.c:1646 */ + case 177: +/* Line 1792 of yacc.c */ +#line 1379 "gram.y" { if ((yyloc) < 0) /* see comments for YYLLOC_DEFAULT */ - (yyloc) = (yylsp[0]); - (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); + (yyloc) = (yylsp[(2) - (2)]); + (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } -#line 24267 "gram.c" /* yacc.c:1646 */ break; - case 179: -#line 1350 "gram.y" /* yacc.c:1646 */ + case 178: +/* Line 1792 of yacc.c */ +#line 1385 "gram.y" { (yyval.list) = NIL; } -#line 24273 "gram.c" /* yacc.c:1646 */ break; - case 186: -#line 1378 "gram.y" /* yacc.c:1646 */ + case 185: +/* Line 1792 of yacc.c */ +#line 1413 "gram.y" { - VariableSetStmt *n = (yyvsp[0].vsetstmt); + VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->type = T_PgpoolVariableSetStmt; /* Hack to keep changes minumum */ n->is_local = false; (yyval.node) = (Node *) n; } -#line 24284 "gram.c" /* yacc.c:1646 */ break; - case 187: -#line 1385 "gram.y" /* yacc.c:1646 */ + case 186: +/* Line 1792 of yacc.c */ +#line 1420 "gram.y" { - VariableSetStmt *n = (yyvsp[0].vsetstmt); + VariableSetStmt *n = (yyvsp[(2) - (2)].vsetstmt); n->is_local = false; (yyval.node) = (Node *) n; } -#line 24294 "gram.c" /* yacc.c:1646 */ break; - case 188: -#line 1391 "gram.y" /* yacc.c:1646 */ + case 187: +/* Line 1792 of yacc.c */ +#line 1426 "gram.y" { - VariableSetStmt *n = (yyvsp[0].vsetstmt); + VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = true; (yyval.node) = (Node *) n; } -#line 24304 "gram.c" /* yacc.c:1646 */ break; - case 189: -#line 1397 "gram.y" /* yacc.c:1646 */ + case 188: +/* Line 1792 of yacc.c */ +#line 1432 "gram.y" { - VariableSetStmt *n = (yyvsp[0].vsetstmt); + VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = false; (yyval.node) = (Node *) n; } -#line 24314 "gram.c" /* yacc.c:1646 */ break; - case 190: -#line 1406 "gram.y" /* yacc.c:1646 */ + case 189: +/* Line 1792 of yacc.c */ +#line 1441 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; n->name = "TRANSACTION"; - n->args = (yyvsp[0].list); + n->args = (yyvsp[(2) - (2)].list); (yyval.vsetstmt) = n; } -#line 24326 "gram.c" /* yacc.c:1646 */ break; - case 191: -#line 1414 "gram.y" /* yacc.c:1646 */ + case 190: +/* Line 1792 of yacc.c */ +#line 1449 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; n->name = "SESSION CHARACTERISTICS"; - n->args = (yyvsp[0].list); + n->args = (yyvsp[(5) - (5)].list); (yyval.vsetstmt) = n; } -#line 24338 "gram.c" /* yacc.c:1646 */ break; - case 193: -#line 1426 "gram.y" /* yacc.c:1646 */ + case 192: +/* Line 1792 of yacc.c */ +#line 1461 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; - n->name = (yyvsp[-2].str); - n->args = (yyvsp[0].list); + n->name = (yyvsp[(1) - (3)].str); + n->args = (yyvsp[(3) - (3)].list); (yyval.vsetstmt) = n; } -#line 24350 "gram.c" /* yacc.c:1646 */ break; - case 194: -#line 1434 "gram.y" /* yacc.c:1646 */ + case 193: +/* Line 1792 of yacc.c */ +#line 1469 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; - n->name = (yyvsp[-2].str); - n->args = (yyvsp[0].list); + n->name = (yyvsp[(1) - (3)].str); + n->args = (yyvsp[(3) - (3)].list); (yyval.vsetstmt) = n; } -#line 24362 "gram.c" /* yacc.c:1646 */ break; - case 195: -#line 1442 "gram.y" /* yacc.c:1646 */ + case 194: +/* Line 1792 of yacc.c */ +#line 1477 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; - n->name = (yyvsp[-2].str); + n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; } -#line 24373 "gram.c" /* yacc.c:1646 */ break; - case 196: -#line 1449 "gram.y" /* yacc.c:1646 */ + case 195: +/* Line 1792 of yacc.c */ +#line 1484 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; - n->name = (yyvsp[-2].str); + n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; } -#line 24384 "gram.c" /* yacc.c:1646 */ break; - case 197: -#line 1457 "gram.y" /* yacc.c:1646 */ - {(yyval.vsetstmt) = (yyvsp[0].vsetstmt);} -#line 24390 "gram.c" /* yacc.c:1646 */ + case 196: +/* Line 1792 of yacc.c */ +#line 1492 "gram.y" + {(yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt);} break; - case 198: -#line 1459 "gram.y" /* yacc.c:1646 */ + case 197: +/* Line 1792 of yacc.c */ +#line 1494 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_CURRENT; - n->name = (yyvsp[-2].str); + n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; } -#line 24401 "gram.c" /* yacc.c:1646 */ break; - case 199: -#line 1467 "gram.y" /* yacc.c:1646 */ + case 198: +/* Line 1792 of yacc.c */ +#line 1502 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "timezone"; - if ((yyvsp[0].node) != NULL) - n->args = list_make1((yyvsp[0].node)); + if ((yyvsp[(3) - (3)].node) != NULL) + n->args = list_make1((yyvsp[(3) - (3)].node)); else n->kind = VAR_SET_DEFAULT; (yyval.vsetstmt) = n; } -#line 24416 "gram.c" /* yacc.c:1646 */ break; - case 200: -#line 1478 "gram.y" /* yacc.c:1646 */ + case 199: +/* Line 1792 of yacc.c */ +#line 1513 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("current database cannot be changed"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(2) - (2)])))); (yyval.vsetstmt) = NULL; /*not reached*/ } -#line 24428 "gram.c" /* yacc.c:1646 */ break; - case 201: -#line 1486 "gram.y" /* yacc.c:1646 */ + case 200: +/* Line 1792 of yacc.c */ +#line 1521 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "search_path"; - n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; } -#line 24440 "gram.c" /* yacc.c:1646 */ break; - case 202: -#line 1494 "gram.y" /* yacc.c:1646 */ + case 201: +/* Line 1792 of yacc.c */ +#line 1529 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "client_encoding"; - if ((yyvsp[0].str) != NULL) - n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + if ((yyvsp[(2) - (2)].str) != NULL) + n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); else n->kind = VAR_SET_DEFAULT; (yyval.vsetstmt) = n; } -#line 24455 "gram.c" /* yacc.c:1646 */ break; - case 203: -#line 1505 "gram.y" /* yacc.c:1646 */ + case 202: +/* Line 1792 of yacc.c */ +#line 1540 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "role"; - n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; } -#line 24467 "gram.c" /* yacc.c:1646 */ break; - case 204: -#line 1513 "gram.y" /* yacc.c:1646 */ + case 203: +/* Line 1792 of yacc.c */ +#line 1548 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "session_authorization"; - n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + n->args = list_make1(makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; } -#line 24479 "gram.c" /* yacc.c:1646 */ break; - case 205: -#line 1521 "gram.y" /* yacc.c:1646 */ + case 204: +/* Line 1792 of yacc.c */ +#line 1556 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; n->name = "session_authorization"; (yyval.vsetstmt) = n; } -#line 24490 "gram.c" /* yacc.c:1646 */ break; - case 206: -#line 1528 "gram.y" /* yacc.c:1646 */ + case 205: +/* Line 1792 of yacc.c */ +#line 1563 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "xmloption"; - n->args = list_make1(makeStringConst((yyvsp[0].ival) == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", (yylsp[0]))); + n->args = list_make1(makeStringConst((yyvsp[(3) - (3)].ival) == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; } -#line 24502 "gram.c" /* yacc.c:1646 */ break; - case 207: -#line 1537 "gram.y" /* yacc.c:1646 */ + case 206: +/* Line 1792 of yacc.c */ +#line 1572 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; n->name = "TRANSACTION SNAPSHOT"; - n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + n->args = list_make1(makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; } -#line 24514 "gram.c" /* yacc.c:1646 */ + break; + + case 207: +/* Line 1792 of yacc.c */ +#line 1581 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 208: -#line 1546 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 24520 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1583 "gram.y" + { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); } break; case 209: -#line 1548 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = psprintf("%s.%s", (yyvsp[-2].str), (yyvsp[0].str)); } -#line 24526 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1586 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 210: -#line 1551 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 24532 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1587 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 211: -#line 1552 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 24538 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1591 "gram.y" + { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } break; case 212: -#line 1556 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); } -#line 24544 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1593 "gram.y" + { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); } break; case 213: -#line 1558 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeAConst((yyvsp[0].value), (yylsp[0])); } -#line 24550 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1596 "gram.y" + { (yyval.str) = "read uncommitted"; } break; case 214: -#line 1561 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = "read uncommitted"; } -#line 24556 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1597 "gram.y" + { (yyval.str) = "read committed"; } break; case 215: -#line 1562 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = "read committed"; } -#line 24562 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1598 "gram.y" + { (yyval.str) = "repeatable read"; } break; case 216: -#line 1563 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = "repeatable read"; } -#line 24568 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1599 "gram.y" + { (yyval.str) = "serializable"; } break; case 217: -#line 1564 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = "serializable"; } -#line 24574 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1603 "gram.y" + { (yyval.str) = "true"; } break; case 218: -#line 1568 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = "true"; } -#line 24580 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1604 "gram.y" + { (yyval.str) = "false"; } break; case 219: -#line 1569 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = "false"; } -#line 24586 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1605 "gram.y" + { (yyval.str) = "on"; } break; case 220: -#line 1570 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = "on"; } -#line 24592 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1611 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 221: -#line 1576 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 24598 "gram.c" /* yacc.c:1646 */ - break; - - case 222: -#line 1589 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1624 "gram.y" { - (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 24606 "gram.c" /* yacc.c:1646 */ break; - case 223: -#line 1593 "gram.y" /* yacc.c:1646 */ + case 222: +/* Line 1792 of yacc.c */ +#line 1628 "gram.y" { - (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 24614 "gram.c" /* yacc.c:1646 */ break; - case 224: -#line 1597 "gram.y" /* yacc.c:1646 */ + case 223: +/* Line 1792 of yacc.c */ +#line 1632 "gram.y" { - TypeName *t = (yyvsp[-2].typnam); - if ((yyvsp[0].list) != NIL) + TypeName *t = (yyvsp[(1) - (3)].typnam); + if ((yyvsp[(3) - (3)].list) != NIL) { - A_Const *n = (A_Const *) linitial((yyvsp[0].list)); + A_Const *n = (A_Const *) linitial((yyvsp[(3) - (3)].list)); if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(3) - (3)])))); } - t->typmods = (yyvsp[0].list); - (yyval.node) = makeStringConstCast((yyvsp[-1].str), (yylsp[-1]), t); + t->typmods = (yyvsp[(3) - (3)].list); + (yyval.node) = makeStringConstCast((yyvsp[(2) - (3)].str), (yylsp[(2) - (3)]), t); } -#line 24633 "gram.c" /* yacc.c:1646 */ break; - case 225: -#line 1612 "gram.y" /* yacc.c:1646 */ + case 224: +/* Line 1792 of yacc.c */ +#line 1647 "gram.y" { - TypeName *t = (yyvsp[-4].typnam); + TypeName *t = (yyvsp[(1) - (5)].typnam); t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), - makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); - (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); + (yyval.node) = makeStringConstCast((yyvsp[(5) - (5)].str), (yylsp[(5) - (5)]), t); } -#line 24644 "gram.c" /* yacc.c:1646 */ + break; + + case 225: +/* Line 1792 of yacc.c */ +#line 1653 "gram.y" + { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); } break; case 226: -#line 1618 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeAConst((yyvsp[0].value), (yylsp[0])); } -#line 24650 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1654 "gram.y" + { (yyval.node) = NULL; } break; case 227: -#line 1619 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1655 "gram.y" { (yyval.node) = NULL; } -#line 24656 "gram.c" /* yacc.c:1646 */ break; case 228: -#line 1620 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = NULL; } -#line 24662 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1659 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 229: -#line 1624 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 24668 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1660 "gram.y" + { (yyval.str) = NULL; } break; case 230: -#line 1625 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1661 "gram.y" { (yyval.str) = NULL; } -#line 24674 "gram.c" /* yacc.c:1646 */ break; case 231: -#line 1626 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = NULL; } -#line 24680 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1665 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 232: -#line 1630 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 24686 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1666 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 233: -#line 1631 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 24692 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1670 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(2) - (2)].vsetstmt); } break; case 234: -#line 1635 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[0].vsetstmt); } -#line 24698 "gram.c" /* yacc.c:1646 */ - break; - - case 235: -#line 1637 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1672 "gram.y" { - VariableSetStmt *n = (yyvsp[0].vsetstmt); + VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->type = T_PgpoolVariableSetStmt; /* Hack to keep the changes minumum */ (yyval.node) = (Node *) n; } -#line 24708 "gram.c" /* yacc.c:1646 */ break; - case 236: -#line 1645 "gram.y" /* yacc.c:1646 */ - { (yyval.vsetstmt) = (yyvsp[0].vsetstmt); } -#line 24714 "gram.c" /* yacc.c:1646 */ + case 235: +/* Line 1792 of yacc.c */ +#line 1680 "gram.y" + { (yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt); } break; - case 237: -#line 1647 "gram.y" /* yacc.c:1646 */ + case 236: +/* Line 1792 of yacc.c */ +#line 1682 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "timezone"; (yyval.vsetstmt) = n; } -#line 24725 "gram.c" /* yacc.c:1646 */ break; - case 238: -#line 1654 "gram.y" /* yacc.c:1646 */ + case 237: +/* Line 1792 of yacc.c */ +#line 1689 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "transaction_isolation"; (yyval.vsetstmt) = n; } -#line 24736 "gram.c" /* yacc.c:1646 */ break; - case 239: -#line 1661 "gram.y" /* yacc.c:1646 */ + case 238: +/* Line 1792 of yacc.c */ +#line 1696 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "session_authorization"; (yyval.vsetstmt) = n; } -#line 24747 "gram.c" /* yacc.c:1646 */ break; - case 240: -#line 1671 "gram.y" /* yacc.c:1646 */ + case 239: +/* Line 1792 of yacc.c */ +#line 1706 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(1) - (1)].str); (yyval.vsetstmt) = n; } -#line 24758 "gram.c" /* yacc.c:1646 */ break; - case 241: -#line 1678 "gram.y" /* yacc.c:1646 */ + case 240: +/* Line 1792 of yacc.c */ +#line 1713 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET_ALL; (yyval.vsetstmt) = n; } -#line 24768 "gram.c" /* yacc.c:1646 */ + break; + + case 241: +/* Line 1792 of yacc.c */ +#line 1722 "gram.y" + { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); } break; case 242: -#line 1687 "gram.y" /* yacc.c:1646 */ - { (yyval.vsetstmt) = (yyvsp[0].vsetstmt); } -#line 24774 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1723 "gram.y" + { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); } break; case 243: -#line 1688 "gram.y" /* yacc.c:1646 */ - { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[0].node); } -#line 24780 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1728 "gram.y" + { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); } break; case 244: -#line 1693 "gram.y" /* yacc.c:1646 */ - { (yyval.vsetstmt) = (yyvsp[0].vsetstmt); } -#line 24786 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1729 "gram.y" + { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); } break; case 245: -#line 1694 "gram.y" /* yacc.c:1646 */ - { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[0].node); } -#line 24792 "gram.c" /* yacc.c:1646 */ - break; - - case 246: -#line 1701 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1736 "gram.y" { VariableShowStmt *n = (VariableShowStmt *)newNode(sizeof(VariableShowStmt),T_PgpoolVariableShowStmt); - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; } -#line 24802 "gram.c" /* yacc.c:1646 */ break; - case 247: -#line 1707 "gram.y" /* yacc.c:1646 */ + case 246: +/* Line 1792 of yacc.c */ +#line 1742 "gram.y" { VariableShowStmt *n = (VariableShowStmt *)newNode(sizeof(VariableShowStmt),T_PgpoolVariableShowStmt); n->name = "all"; (yyval.node) = (Node *) n; } -#line 24812 "gram.c" /* yacc.c:1646 */ break; - case 248: -#line 1713 "gram.y" /* yacc.c:1646 */ + case 247: +/* Line 1792 of yacc.c */ +#line 1748 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); - n->name = (yyvsp[0].str); + n->name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; } -#line 24822 "gram.c" /* yacc.c:1646 */ break; - case 249: -#line 1719 "gram.y" /* yacc.c:1646 */ + case 248: +/* Line 1792 of yacc.c */ +#line 1754 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "timezone"; (yyval.node) = (Node *) n; } -#line 24832 "gram.c" /* yacc.c:1646 */ break; - case 250: -#line 1725 "gram.y" /* yacc.c:1646 */ + case 249: +/* Line 1792 of yacc.c */ +#line 1760 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "transaction_isolation"; (yyval.node) = (Node *) n; } -#line 24842 "gram.c" /* yacc.c:1646 */ break; - case 251: -#line 1731 "gram.y" /* yacc.c:1646 */ + case 250: +/* Line 1792 of yacc.c */ +#line 1766 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "session_authorization"; (yyval.node) = (Node *) n; } -#line 24852 "gram.c" /* yacc.c:1646 */ break; - case 252: -#line 1737 "gram.y" /* yacc.c:1646 */ + case 251: +/* Line 1792 of yacc.c */ +#line 1772 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "all"; (yyval.node) = (Node *) n; } -#line 24862 "gram.c" /* yacc.c:1646 */ break; - case 253: -#line 1747 "gram.y" /* yacc.c:1646 */ + case 252: +/* Line 1792 of yacc.c */ +#line 1782 "gram.y" { ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt); - n->constraints = (yyvsp[-1].list); - n->deferred = (yyvsp[0].boolean); + n->constraints = (yyvsp[(3) - (4)].list); + n->deferred = (yyvsp[(4) - (4)].boolean); (yyval.node) = (Node *) n; } -#line 24873 "gram.c" /* yacc.c:1646 */ break; - case 254: -#line 1756 "gram.y" /* yacc.c:1646 */ + case 253: +/* Line 1792 of yacc.c */ +#line 1791 "gram.y" { (yyval.list) = NIL; } -#line 24879 "gram.c" /* yacc.c:1646 */ break; - case 255: -#line 1757 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 24885 "gram.c" /* yacc.c:1646 */ + case 254: +/* Line 1792 of yacc.c */ +#line 1792 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 256: -#line 1761 "gram.y" /* yacc.c:1646 */ + case 255: +/* Line 1792 of yacc.c */ +#line 1796 "gram.y" { (yyval.boolean) = TRUE; } -#line 24891 "gram.c" /* yacc.c:1646 */ break; - case 257: -#line 1762 "gram.y" /* yacc.c:1646 */ + case 256: +/* Line 1792 of yacc.c */ +#line 1797 "gram.y" { (yyval.boolean) = FALSE; } -#line 24897 "gram.c" /* yacc.c:1646 */ break; - case 258: -#line 1771 "gram.y" /* yacc.c:1646 */ + case 257: +/* Line 1792 of yacc.c */ +#line 1806 "gram.y" { CheckPointStmt *n = makeNode(CheckPointStmt); (yyval.node) = (Node *)n; } -#line 24906 "gram.c" /* yacc.c:1646 */ break; - case 259: -#line 1786 "gram.y" /* yacc.c:1646 */ + case 258: +/* Line 1792 of yacc.c */ +#line 1821 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_ALL; (yyval.node) = (Node *) n; } -#line 24916 "gram.c" /* yacc.c:1646 */ break; - case 260: -#line 1792 "gram.y" /* yacc.c:1646 */ + case 259: +/* Line 1792 of yacc.c */ +#line 1827 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; (yyval.node) = (Node *) n; } -#line 24926 "gram.c" /* yacc.c:1646 */ break; - case 261: -#line 1798 "gram.y" /* yacc.c:1646 */ + case 260: +/* Line 1792 of yacc.c */ +#line 1833 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; (yyval.node) = (Node *) n; } -#line 24936 "gram.c" /* yacc.c:1646 */ break; - case 262: -#line 1804 "gram.y" /* yacc.c:1646 */ + case 261: +/* Line 1792 of yacc.c */ +#line 1839 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_PLANS; (yyval.node) = (Node *) n; } -#line 24946 "gram.c" /* yacc.c:1646 */ break; - case 263: -#line 1810 "gram.y" /* yacc.c:1646 */ + case 262: +/* Line 1792 of yacc.c */ +#line 1845 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_SEQUENCES; (yyval.node) = (Node *) n; } -#line 24956 "gram.c" /* yacc.c:1646 */ break; - case 264: -#line 1829 "gram.y" /* yacc.c:1646 */ + case 263: +/* Line 1792 of yacc.c */ +#line 1864 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(3) - (4)].range); + n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_TABLE; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 24969 "gram.c" /* yacc.c:1646 */ break; - case 265: -#line 1838 "gram.y" /* yacc.c:1646 */ + case 264: +/* Line 1792 of yacc.c */ +#line 1873 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(5) - (6)].range); + n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_TABLE; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 24982 "gram.c" /* yacc.c:1646 */ + break; + + case 265: +/* Line 1792 of yacc.c */ +#line 1882 "gram.y" + { + AlterTableStmt *n = makeNode(AlterTableStmt); + n->relation = (yyvsp[(3) - (4)].range); + n->cmds = list_make1((yyvsp[(4) - (4)].node)); + n->relkind = OBJECT_TABLE; + n->missing_ok = false; + (yyval.node) = (Node *)n; + } break; case 266: -#line 1847 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1891 "gram.y" + { + AlterTableStmt *n = makeNode(AlterTableStmt); + n->relation = (yyvsp[(5) - (6)].range); + n->cmds = list_make1((yyvsp[(6) - (6)].node)); + n->relkind = OBJECT_TABLE; + n->missing_ok = true; + (yyval.node) = (Node *)n; + } + break; + + case 267: +/* Line 1792 of yacc.c */ +#line 1900 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-4].str); + n->orig_tablespacename = (yyvsp[(6) - (10)].str); n->objtype = OBJECT_TABLE; n->roles = NIL; - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); + n->new_tablespacename = (yyvsp[(9) - (10)].str); + n->nowait = (yyvsp[(10) - (10)].boolean); (yyval.node) = (Node *)n; } -#line 24997 "gram.c" /* yacc.c:1646 */ break; - case 267: -#line 1858 "gram.y" /* yacc.c:1646 */ + case 268: +/* Line 1792 of yacc.c */ +#line 1911 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-7].str); + n->orig_tablespacename = (yyvsp[(6) - (13)].str); n->objtype = OBJECT_TABLE; - n->roles = (yyvsp[-4].list); - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); + n->roles = (yyvsp[(9) - (13)].list); + n->new_tablespacename = (yyvsp[(12) - (13)].str); + n->nowait = (yyvsp[(13) - (13)].boolean); (yyval.node) = (Node *)n; } -#line 25012 "gram.c" /* yacc.c:1646 */ break; - case 268: -#line 1869 "gram.y" /* yacc.c:1646 */ + case 269: +/* Line 1792 of yacc.c */ +#line 1922 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(3) - (4)].range); + n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_INDEX; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 25025 "gram.c" /* yacc.c:1646 */ break; - case 269: -#line 1878 "gram.y" /* yacc.c:1646 */ + case 270: +/* Line 1792 of yacc.c */ +#line 1931 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(5) - (6)].range); + n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_INDEX; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 25038 "gram.c" /* yacc.c:1646 */ break; - case 270: -#line 1887 "gram.y" /* yacc.c:1646 */ + case 271: +/* Line 1792 of yacc.c */ +#line 1940 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-4].str); + n->orig_tablespacename = (yyvsp[(6) - (10)].str); n->objtype = OBJECT_INDEX; n->roles = NIL; - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); + n->new_tablespacename = (yyvsp[(9) - (10)].str); + n->nowait = (yyvsp[(10) - (10)].boolean); (yyval.node) = (Node *)n; } -#line 25053 "gram.c" /* yacc.c:1646 */ break; - case 271: -#line 1898 "gram.y" /* yacc.c:1646 */ + case 272: +/* Line 1792 of yacc.c */ +#line 1951 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-7].str); + n->orig_tablespacename = (yyvsp[(6) - (13)].str); n->objtype = OBJECT_INDEX; - n->roles = (yyvsp[-4].list); - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); + n->roles = (yyvsp[(9) - (13)].list); + n->new_tablespacename = (yyvsp[(12) - (13)].str); + n->nowait = (yyvsp[(13) - (13)].boolean); (yyval.node) = (Node *)n; } -#line 25068 "gram.c" /* yacc.c:1646 */ break; - case 272: -#line 1909 "gram.y" /* yacc.c:1646 */ + case 273: +/* Line 1792 of yacc.c */ +#line 1962 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(3) - (4)].range); + n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_SEQUENCE; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 25081 "gram.c" /* yacc.c:1646 */ break; - case 273: -#line 1918 "gram.y" /* yacc.c:1646 */ + case 274: +/* Line 1792 of yacc.c */ +#line 1971 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(5) - (6)].range); + n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_SEQUENCE; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 25094 "gram.c" /* yacc.c:1646 */ break; - case 274: -#line 1927 "gram.y" /* yacc.c:1646 */ + case 275: +/* Line 1792 of yacc.c */ +#line 1980 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(3) - (4)].range); + n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_VIEW; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 25107 "gram.c" /* yacc.c:1646 */ break; - case 275: -#line 1936 "gram.y" /* yacc.c:1646 */ + case 276: +/* Line 1792 of yacc.c */ +#line 1989 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(5) - (6)].range); + n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_VIEW; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 25120 "gram.c" /* yacc.c:1646 */ break; - case 276: -#line 1945 "gram.y" /* yacc.c:1646 */ + case 277: +/* Line 1792 of yacc.c */ +#line 1998 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(4) - (5)].range); + n->cmds = (yyvsp[(5) - (5)].list); n->relkind = OBJECT_MATVIEW; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 25133 "gram.c" /* yacc.c:1646 */ break; - case 277: -#line 1954 "gram.y" /* yacc.c:1646 */ + case 278: +/* Line 1792 of yacc.c */ +#line 2007 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(6) - (7)].range); + n->cmds = (yyvsp[(7) - (7)].list); n->relkind = OBJECT_MATVIEW; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 25146 "gram.c" /* yacc.c:1646 */ break; - case 278: -#line 1963 "gram.y" /* yacc.c:1646 */ + case 279: +/* Line 1792 of yacc.c */ +#line 2016 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-4].str); + n->orig_tablespacename = (yyvsp[(7) - (11)].str); n->objtype = OBJECT_MATVIEW; n->roles = NIL; - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); + n->new_tablespacename = (yyvsp[(10) - (11)].str); + n->nowait = (yyvsp[(11) - (11)].boolean); + (yyval.node) = (Node *)n; + } + break; + + case 280: +/* Line 1792 of yacc.c */ +#line 2027 "gram.y" + { + AlterTableMoveAllStmt *n = + makeNode(AlterTableMoveAllStmt); + n->orig_tablespacename = (yyvsp[(7) - (14)].str); + n->objtype = OBJECT_MATVIEW; + n->roles = (yyvsp[(10) - (14)].list); + n->new_tablespacename = (yyvsp[(13) - (14)].str); + n->nowait = (yyvsp[(14) - (14)].boolean); (yyval.node) = (Node *)n; } -#line 25161 "gram.c" /* yacc.c:1646 */ break; - case 279: -#line 1974 "gram.y" /* yacc.c:1646 */ + case 281: +/* Line 1792 of yacc.c */ +#line 2040 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } + break; + + case 282: +/* Line 1792 of yacc.c */ +#line 2041 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } + break; + + case 283: +/* Line 1792 of yacc.c */ +#line 2047 "gram.y" { - AlterTableMoveAllStmt *n = - makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-7].str); - n->objtype = OBJECT_MATVIEW; - n->roles = (yyvsp[-4].list); - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); - (yyval.node) = (Node *)n; + AlterTableCmd *n = makeNode(AlterTableCmd); + PartitionCmd *cmd = makeNode(PartitionCmd); + + n->subtype = AT_AttachPartition; + cmd->name = (yyvsp[(3) - (4)].range); + cmd->bound = (yyvsp[(4) - (4)].partboundspec); + n->def = (Node *) cmd; + + (yyval.node) = (Node *) n; } -#line 25176 "gram.c" /* yacc.c:1646 */ break; - case 280: -#line 1987 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 25182 "gram.c" /* yacc.c:1646 */ - break; + case 284: +/* Line 1792 of yacc.c */ +#line 2060 "gram.y" + { + AlterTableCmd *n = makeNode(AlterTableCmd); + PartitionCmd *cmd = makeNode(PartitionCmd); - case 281: -#line 1988 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 25188 "gram.c" /* yacc.c:1646 */ + n->subtype = AT_DetachPartition; + cmd->name = (yyvsp[(3) - (3)].range); + cmd->bound = NULL; + n->def = (Node *) cmd; + + (yyval.node) = (Node *) n; + } break; - case 282: -#line 1994 "gram.y" /* yacc.c:1646 */ + case 285: +/* Line 1792 of yacc.c */ +#line 2076 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(2) - (2)].node); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 25200 "gram.c" /* yacc.c:1646 */ break; - case 283: -#line 2003 "gram.y" /* yacc.c:1646 */ + case 286: +/* Line 1792 of yacc.c */ +#line 2085 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(5) - (5)].node); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 25212 "gram.c" /* yacc.c:1646 */ break; - case 284: -#line 2012 "gram.y" /* yacc.c:1646 */ + case 287: +/* Line 1792 of yacc.c */ +#line 2094 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(3) - (3)].node); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 25224 "gram.c" /* yacc.c:1646 */ break; - case 285: -#line 2021 "gram.y" /* yacc.c:1646 */ + case 288: +/* Line 1792 of yacc.c */ +#line 2103 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(6) - (6)].node); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 25236 "gram.c" /* yacc.c:1646 */ break; - case 286: -#line 2030 "gram.y" /* yacc.c:1646 */ + case 289: +/* Line 1792 of yacc.c */ +#line 2112 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ColumnDefault; - n->name = (yyvsp[-1].str); - n->def = (yyvsp[0].node); + n->name = (yyvsp[(3) - (4)].str); + n->def = (yyvsp[(4) - (4)].node); (yyval.node) = (Node *)n; } -#line 25248 "gram.c" /* yacc.c:1646 */ break; - case 287: -#line 2039 "gram.y" /* yacc.c:1646 */ + case 290: +/* Line 1792 of yacc.c */ +#line 2121 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropNotNull; - n->name = (yyvsp[-3].str); + n->name = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *)n; } -#line 25259 "gram.c" /* yacc.c:1646 */ break; - case 288: -#line 2047 "gram.y" /* yacc.c:1646 */ + case 291: +/* Line 1792 of yacc.c */ +#line 2129 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetNotNull; - n->name = (yyvsp[-3].str); + n->name = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *)n; } -#line 25270 "gram.c" /* yacc.c:1646 */ break; - case 289: -#line 2055 "gram.y" /* yacc.c:1646 */ + case 292: +/* Line 1792 of yacc.c */ +#line 2137 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStatistics; - n->name = (yyvsp[-3].str); - n->def = (Node *) makeInteger((yyvsp[0].ival)); + n->name = (yyvsp[(3) - (6)].str); + n->def = (Node *) makeInteger((yyvsp[(6) - (6)].ival)); (yyval.node) = (Node *)n; } -#line 25282 "gram.c" /* yacc.c:1646 */ break; - case 290: -#line 2064 "gram.y" /* yacc.c:1646 */ + case 293: +/* Line 1792 of yacc.c */ +#line 2146 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetOptions; - n->name = (yyvsp[-2].str); - n->def = (Node *) (yyvsp[0].list); + n->name = (yyvsp[(3) - (5)].str); + n->def = (Node *) (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 25294 "gram.c" /* yacc.c:1646 */ break; - case 291: -#line 2073 "gram.y" /* yacc.c:1646 */ + case 294: +/* Line 1792 of yacc.c */ +#line 2155 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetOptions; - n->name = (yyvsp[-2].str); - n->def = (Node *) (yyvsp[0].list); + n->name = (yyvsp[(3) - (5)].str); + n->def = (Node *) (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 25306 "gram.c" /* yacc.c:1646 */ break; - case 292: -#line 2082 "gram.y" /* yacc.c:1646 */ + case 295: +/* Line 1792 of yacc.c */ +#line 2164 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStorage; - n->name = (yyvsp[-3].str); - n->def = (Node *) makeString((yyvsp[0].str)); + n->name = (yyvsp[(3) - (6)].str); + n->def = (Node *) makeString((yyvsp[(6) - (6)].str)); (yyval.node) = (Node *)n; } -#line 25318 "gram.c" /* yacc.c:1646 */ break; - case 293: -#line 2091 "gram.y" /* yacc.c:1646 */ + case 296: +/* Line 1792 of yacc.c */ +#line 2173 "gram.y" + { + AlterTableCmd *n = makeNode(AlterTableCmd); + Constraint *c = makeNode(Constraint); + + c->contype = CONSTR_IDENTITY; + c->generated_when = (yyvsp[(6) - (9)].ival); + c->options = (yyvsp[(9) - (9)].list); + c->location = (yylsp[(5) - (9)]); + + n->subtype = AT_AddIdentity; + n->name = (yyvsp[(3) - (9)].str); + n->def = (Node *) c; + + (yyval.node) = (Node *)n; + } + break; + + case 297: +/* Line 1792 of yacc.c */ +#line 2190 "gram.y" + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_SetIdentity; + n->name = (yyvsp[(3) - (4)].str); + n->def = (Node *) (yyvsp[(4) - (4)].list); + (yyval.node) = (Node *)n; + } + break; + + case 298: +/* Line 1792 of yacc.c */ +#line 2199 "gram.y" + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_DropIdentity; + n->name = (yyvsp[(3) - (5)].str); + n->missing_ok = false; + (yyval.node) = (Node *)n; + } + break; + + case 299: +/* Line 1792 of yacc.c */ +#line 2208 "gram.y" + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_DropIdentity; + n->name = (yyvsp[(3) - (7)].str); + n->missing_ok = true; + (yyval.node) = (Node *)n; + } + break; + + case 300: +/* Line 1792 of yacc.c */ +#line 2217 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(5) - (6)].str); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = TRUE; (yyval.node) = (Node *)n; } -#line 25331 "gram.c" /* yacc.c:1646 */ break; - case 294: -#line 2101 "gram.y" /* yacc.c:1646 */ + case 301: +/* Line 1792 of yacc.c */ +#line 2227 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(3) - (4)].str); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = FALSE; (yyval.node) = (Node *)n; } -#line 25344 "gram.c" /* yacc.c:1646 */ break; - case 295: -#line 2114 "gram.y" /* yacc.c:1646 */ + case 302: +/* Line 1792 of yacc.c */ +#line 2240 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); ColumnDef *def = makeNode(ColumnDef); n->subtype = AT_AlterColumnType; - n->name = (yyvsp[-5].str); + n->name = (yyvsp[(3) - (8)].str); n->def = (Node *) def; /* We only use these fields of the ColumnDef node */ - def->typeName = (yyvsp[-2].typnam); - def->collClause = (CollateClause *) (yyvsp[-1].node); - def->raw_default = (yyvsp[0].node); - def->location = (yylsp[-5]); + def->typeName = (yyvsp[(6) - (8)].typnam); + def->collClause = (CollateClause *) (yyvsp[(7) - (8)].node); + def->raw_default = (yyvsp[(8) - (8)].node); + def->location = (yylsp[(3) - (8)]); (yyval.node) = (Node *)n; } -#line 25362 "gram.c" /* yacc.c:1646 */ break; - case 296: -#line 2129 "gram.y" /* yacc.c:1646 */ + case 303: +/* Line 1792 of yacc.c */ +#line 2255 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AlterColumnGenericOptions; - n->name = (yyvsp[-1].str); - n->def = (Node *) (yyvsp[0].list); + n->name = (yyvsp[(3) - (4)].str); + n->def = (Node *) (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 25374 "gram.c" /* yacc.c:1646 */ break; - case 297: -#line 2138 "gram.y" /* yacc.c:1646 */ + case 304: +/* Line 1792 of yacc.c */ +#line 2264 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddConstraint; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(2) - (2)].node); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 25386 "gram.c" /* yacc.c:1646 */ break; - case 298: -#line 2147 "gram.y" /* yacc.c:1646 */ + case 305: +/* Line 1792 of yacc.c */ +#line 2273 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); Constraint *c = makeNode(Constraint); n->subtype = AT_AlterConstraint; n->def = (Node *) c; c->contype = CONSTR_FOREIGN; /* others not supported, yet */ - c->conname = (yyvsp[-1].str); - processCASbits((yyvsp[0].ival), (yylsp[0]), "ALTER CONSTRAINT statement", + c->conname = (yyvsp[(3) - (4)].str); + processCASbits((yyvsp[(4) - (4)].ival), (yylsp[(4) - (4)]), "ALTER CONSTRAINT statement", &c->deferrable, &c->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 25404 "gram.c" /* yacc.c:1646 */ break; - case 299: -#line 2162 "gram.y" /* yacc.c:1646 */ + case 306: +/* Line 1792 of yacc.c */ +#line 2288 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ValidateConstraint; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 25415 "gram.c" /* yacc.c:1646 */ break; - case 300: -#line 2170 "gram.y" /* yacc.c:1646 */ + case 307: +/* Line 1792 of yacc.c */ +#line 2296 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropConstraint; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(5) - (6)].str); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = TRUE; (yyval.node) = (Node *)n; } -#line 25428 "gram.c" /* yacc.c:1646 */ break; - case 301: -#line 2180 "gram.y" /* yacc.c:1646 */ + case 308: +/* Line 1792 of yacc.c */ +#line 2306 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropConstraint; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(3) - (4)].str); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = FALSE; (yyval.node) = (Node *)n; } -#line 25441 "gram.c" /* yacc.c:1646 */ break; - case 302: -#line 2190 "gram.y" /* yacc.c:1646 */ + case 309: +/* Line 1792 of yacc.c */ +#line 2316 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddOids; (yyval.node) = (Node *)n; } -#line 25451 "gram.c" /* yacc.c:1646 */ break; - case 303: -#line 2197 "gram.y" /* yacc.c:1646 */ + case 310: +/* Line 1792 of yacc.c */ +#line 2323 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOids; (yyval.node) = (Node *)n; } -#line 25461 "gram.c" /* yacc.c:1646 */ break; - case 304: -#line 2204 "gram.y" /* yacc.c:1646 */ + case 311: +/* Line 1792 of yacc.c */ +#line 2330 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ClusterOn; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 25472 "gram.c" /* yacc.c:1646 */ break; - case 305: -#line 2212 "gram.y" /* yacc.c:1646 */ + case 312: +/* Line 1792 of yacc.c */ +#line 2338 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropCluster; n->name = NULL; (yyval.node) = (Node *)n; } -#line 25483 "gram.c" /* yacc.c:1646 */ break; - case 306: -#line 2220 "gram.y" /* yacc.c:1646 */ + case 313: +/* Line 1792 of yacc.c */ +#line 2346 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetLogged; (yyval.node) = (Node *)n; } -#line 25493 "gram.c" /* yacc.c:1646 */ break; - case 307: -#line 2227 "gram.y" /* yacc.c:1646 */ + case 314: +/* Line 1792 of yacc.c */ +#line 2353 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetUnLogged; (yyval.node) = (Node *)n; } -#line 25503 "gram.c" /* yacc.c:1646 */ break; - case 308: -#line 2234 "gram.y" /* yacc.c:1646 */ + case 315: +/* Line 1792 of yacc.c */ +#line 2360 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrig; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 25514 "gram.c" /* yacc.c:1646 */ break; - case 309: -#line 2242 "gram.y" /* yacc.c:1646 */ + case 316: +/* Line 1792 of yacc.c */ +#line 2368 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysTrig; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; } -#line 25525 "gram.c" /* yacc.c:1646 */ break; - case 310: -#line 2250 "gram.y" /* yacc.c:1646 */ + case 317: +/* Line 1792 of yacc.c */ +#line 2376 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaTrig; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; } -#line 25536 "gram.c" /* yacc.c:1646 */ break; - case 311: -#line 2258 "gram.y" /* yacc.c:1646 */ + case 318: +/* Line 1792 of yacc.c */ +#line 2384 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigAll; (yyval.node) = (Node *)n; } -#line 25546 "gram.c" /* yacc.c:1646 */ break; - case 312: -#line 2265 "gram.y" /* yacc.c:1646 */ + case 319: +/* Line 1792 of yacc.c */ +#line 2391 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigUser; (yyval.node) = (Node *)n; } -#line 25556 "gram.c" /* yacc.c:1646 */ break; - case 313: -#line 2272 "gram.y" /* yacc.c:1646 */ + case 320: +/* Line 1792 of yacc.c */ +#line 2398 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrig; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 25567 "gram.c" /* yacc.c:1646 */ break; - case 314: -#line 2280 "gram.y" /* yacc.c:1646 */ + case 321: +/* Line 1792 of yacc.c */ +#line 2406 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigAll; (yyval.node) = (Node *)n; } -#line 25577 "gram.c" /* yacc.c:1646 */ break; - case 315: -#line 2287 "gram.y" /* yacc.c:1646 */ + case 322: +/* Line 1792 of yacc.c */ +#line 2413 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigUser; (yyval.node) = (Node *)n; } -#line 25587 "gram.c" /* yacc.c:1646 */ break; - case 316: -#line 2294 "gram.y" /* yacc.c:1646 */ + case 323: +/* Line 1792 of yacc.c */ +#line 2420 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRule; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 25598 "gram.c" /* yacc.c:1646 */ break; - case 317: -#line 2302 "gram.y" /* yacc.c:1646 */ + case 324: +/* Line 1792 of yacc.c */ +#line 2428 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysRule; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; } -#line 25609 "gram.c" /* yacc.c:1646 */ break; - case 318: -#line 2310 "gram.y" /* yacc.c:1646 */ + case 325: +/* Line 1792 of yacc.c */ +#line 2436 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaRule; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; } -#line 25620 "gram.c" /* yacc.c:1646 */ break; - case 319: -#line 2318 "gram.y" /* yacc.c:1646 */ + case 326: +/* Line 1792 of yacc.c */ +#line 2444 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRule; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 25631 "gram.c" /* yacc.c:1646 */ break; - case 320: -#line 2326 "gram.y" /* yacc.c:1646 */ + case 327: +/* Line 1792 of yacc.c */ +#line 2452 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddInherit; - n->def = (Node *) (yyvsp[0].range); + n->def = (Node *) (yyvsp[(2) - (2)].range); (yyval.node) = (Node *)n; } -#line 25642 "gram.c" /* yacc.c:1646 */ break; - case 321: -#line 2334 "gram.y" /* yacc.c:1646 */ + case 328: +/* Line 1792 of yacc.c */ +#line 2460 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropInherit; - n->def = (Node *) (yyvsp[0].range); + n->def = (Node *) (yyvsp[(3) - (3)].range); (yyval.node) = (Node *)n; } -#line 25653 "gram.c" /* yacc.c:1646 */ break; - case 322: -#line 2342 "gram.y" /* yacc.c:1646 */ + case 329: +/* Line 1792 of yacc.c */ +#line 2468 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); - TypeName *def = makeTypeNameFromNameList((yyvsp[0].list)); - def->location = (yylsp[0]); + TypeName *def = makeTypeNameFromNameList((yyvsp[(2) - (2)].list)); + def->location = (yylsp[(2) - (2)]); n->subtype = AT_AddOf; n->def = (Node *) def; (yyval.node) = (Node *)n; } -#line 25666 "gram.c" /* yacc.c:1646 */ break; - case 323: -#line 2352 "gram.y" /* yacc.c:1646 */ + case 330: +/* Line 1792 of yacc.c */ +#line 2478 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOf; (yyval.node) = (Node *)n; } -#line 25676 "gram.c" /* yacc.c:1646 */ break; - case 324: -#line 2359 "gram.y" /* yacc.c:1646 */ + case 331: +/* Line 1792 of yacc.c */ +#line 2485 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ChangeOwner; - n->newowner = (yyvsp[0].node); + n->newowner = (yyvsp[(3) - (3)].rolespec); (yyval.node) = (Node *)n; } -#line 25687 "gram.c" /* yacc.c:1646 */ break; - case 325: -#line 2367 "gram.y" /* yacc.c:1646 */ + case 332: +/* Line 1792 of yacc.c */ +#line 2493 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetTableSpace; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 25698 "gram.c" /* yacc.c:1646 */ break; - case 326: -#line 2375 "gram.y" /* yacc.c:1646 */ + case 333: +/* Line 1792 of yacc.c */ +#line 2501 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetRelOptions; - n->def = (Node *)(yyvsp[0].list); + n->def = (Node *)(yyvsp[(2) - (2)].list); (yyval.node) = (Node *)n; } -#line 25709 "gram.c" /* yacc.c:1646 */ break; - case 327: -#line 2383 "gram.y" /* yacc.c:1646 */ + case 334: +/* Line 1792 of yacc.c */ +#line 2509 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetRelOptions; - n->def = (Node *)(yyvsp[0].list); + n->def = (Node *)(yyvsp[(2) - (2)].list); (yyval.node) = (Node *)n; } -#line 25720 "gram.c" /* yacc.c:1646 */ break; - case 328: -#line 2391 "gram.y" /* yacc.c:1646 */ + case 335: +/* Line 1792 of yacc.c */ +#line 2517 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ReplicaIdentity; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(3) - (3)].node); (yyval.node) = (Node *)n; } -#line 25731 "gram.c" /* yacc.c:1646 */ break; - case 329: -#line 2399 "gram.y" /* yacc.c:1646 */ + case 336: +/* Line 1792 of yacc.c */ +#line 2525 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRowSecurity; (yyval.node) = (Node *)n; } -#line 25741 "gram.c" /* yacc.c:1646 */ break; - case 330: -#line 2406 "gram.y" /* yacc.c:1646 */ + case 337: +/* Line 1792 of yacc.c */ +#line 2532 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRowSecurity; (yyval.node) = (Node *)n; } -#line 25751 "gram.c" /* yacc.c:1646 */ break; - case 331: -#line 2413 "gram.y" /* yacc.c:1646 */ + case 338: +/* Line 1792 of yacc.c */ +#line 2539 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ForceRowSecurity; (yyval.node) = (Node *)n; } -#line 25761 "gram.c" /* yacc.c:1646 */ break; - case 332: -#line 2420 "gram.y" /* yacc.c:1646 */ + case 339: +/* Line 1792 of yacc.c */ +#line 2546 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_NoForceRowSecurity; (yyval.node) = (Node *)n; } -#line 25771 "gram.c" /* yacc.c:1646 */ break; - case 333: -#line 2426 "gram.y" /* yacc.c:1646 */ + case 340: +/* Line 1792 of yacc.c */ +#line 2552 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_GenericOptions; - n->def = (Node *)(yyvsp[0].list); + n->def = (Node *)(yyvsp[(1) - (1)].list); (yyval.node) = (Node *) n; } -#line 25782 "gram.c" /* yacc.c:1646 */ break; - case 334: -#line 2435 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 25788 "gram.c" /* yacc.c:1646 */ + case 341: +/* Line 1792 of yacc.c */ +#line 2561 "gram.y" + { (yyval.node) = (yyvsp[(3) - (3)].node); } break; - case 335: -#line 2436 "gram.y" /* yacc.c:1646 */ + case 342: +/* Line 1792 of yacc.c */ +#line 2562 "gram.y" { (yyval.node) = NULL; } -#line 25794 "gram.c" /* yacc.c:1646 */ break; - case 336: -#line 2440 "gram.y" /* yacc.c:1646 */ + case 343: +/* Line 1792 of yacc.c */ +#line 2566 "gram.y" { (yyval.dbehavior) = DROP_CASCADE; } -#line 25800 "gram.c" /* yacc.c:1646 */ break; - case 337: -#line 2441 "gram.y" /* yacc.c:1646 */ + case 344: +/* Line 1792 of yacc.c */ +#line 2567 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; } -#line 25806 "gram.c" /* yacc.c:1646 */ break; - case 338: -#line 2442 "gram.y" /* yacc.c:1646 */ + case 345: +/* Line 1792 of yacc.c */ +#line 2568 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; /* default */ } -#line 25812 "gram.c" /* yacc.c:1646 */ break; - case 339: -#line 2447 "gram.y" /* yacc.c:1646 */ + case 346: +/* Line 1792 of yacc.c */ +#line 2573 "gram.y" { CollateClause *n = makeNode(CollateClause); n->arg = NULL; - n->collname = (yyvsp[0].list); - n->location = (yylsp[-1]); + n->collname = (yyvsp[(2) - (2)].list); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; } -#line 25824 "gram.c" /* yacc.c:1646 */ break; - case 340: -#line 2454 "gram.y" /* yacc.c:1646 */ + case 347: +/* Line 1792 of yacc.c */ +#line 2580 "gram.y" + { (yyval.node) = NULL; } + break; + + case 348: +/* Line 1792 of yacc.c */ +#line 2584 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } + break; + + case 349: +/* Line 1792 of yacc.c */ +#line 2585 "gram.y" { (yyval.node) = NULL; } -#line 25830 "gram.c" /* yacc.c:1646 */ break; - case 341: -#line 2458 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 25836 "gram.c" /* yacc.c:1646 */ + case 350: +/* Line 1792 of yacc.c */ +#line 2590 "gram.y" + { + ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); + n->identity_type = REPLICA_IDENTITY_NOTHING; + n->name = NULL; + (yyval.node) = (Node *) n; + } + break; + + case 351: +/* Line 1792 of yacc.c */ +#line 2597 "gram.y" + { + ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); + n->identity_type = REPLICA_IDENTITY_FULL; + n->name = NULL; + (yyval.node) = (Node *) n; + } + break; + + case 352: +/* Line 1792 of yacc.c */ +#line 2604 "gram.y" + { + ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); + n->identity_type = REPLICA_IDENTITY_DEFAULT; + n->name = NULL; + (yyval.node) = (Node *) n; + } + break; + + case 353: +/* Line 1792 of yacc.c */ +#line 2611 "gram.y" + { + ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); + n->identity_type = REPLICA_IDENTITY_INDEX; + n->name = (yyvsp[(3) - (3)].str); + (yyval.node) = (Node *) n; + } + break; + + case 354: +/* Line 1792 of yacc.c */ +#line 2620 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } + break; + + case 355: +/* Line 1792 of yacc.c */ +#line 2623 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } + break; + + case 356: +/* Line 1792 of yacc.c */ +#line 2624 "gram.y" + { (yyval.list) = NIL; } + break; + + case 357: +/* Line 1792 of yacc.c */ +#line 2628 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } + break; + + case 358: +/* Line 1792 of yacc.c */ +#line 2629 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } + break; + + case 359: +/* Line 1792 of yacc.c */ +#line 2635 "gram.y" + { + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); + } + break; + + case 360: +/* Line 1792 of yacc.c */ +#line 2639 "gram.y" + { + (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); + } + break; + + case 361: +/* Line 1792 of yacc.c */ +#line 2643 "gram.y" + { + (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (Node *) (yyvsp[(5) - (5)].node), + DEFELEM_UNSPEC, (yylsp[(1) - (5)])); + } + break; + + case 362: +/* Line 1792 of yacc.c */ +#line 2648 "gram.y" + { + (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str), NULL, DEFELEM_UNSPEC, (yylsp[(1) - (3)])); + } + break; + + case 363: +/* Line 1792 of yacc.c */ +#line 2655 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } + break; + + case 364: +/* Line 1792 of yacc.c */ +#line 2657 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } + break; + + case 365: +/* Line 1792 of yacc.c */ +#line 2662 "gram.y" + { + (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); + } break; - case 342: -#line 2459 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = NULL; } -#line 25842 "gram.c" /* yacc.c:1646 */ + case 366: +/* Line 1792 of yacc.c */ +#line 2666 "gram.y" + { + (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); + } break; - case 343: -#line 2464 "gram.y" /* yacc.c:1646 */ + case 367: +/* Line 1792 of yacc.c */ +#line 2670 "gram.y" { - ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); - n->identity_type = REPLICA_IDENTITY_NOTHING; - n->name = NULL; - (yyval.node) = (Node *) n; + if (strcmp((yyvsp[(2) - (2)].defelt)->defname, "as") == 0 || + strcmp((yyvsp[(2) - (2)].defelt)->defname, "restart") == 0 || + strcmp((yyvsp[(2) - (2)].defelt)->defname, "owned_by") == 0) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("sequence option \"%s\" not supported here", (yyvsp[(2) - (2)].defelt)->defname), + parser_errposition((yylsp[(2) - (2)])))); + (yyval.defelt) = (yyvsp[(2) - (2)].defelt); } -#line 25853 "gram.c" /* yacc.c:1646 */ break; - case 344: -#line 2471 "gram.y" /* yacc.c:1646 */ + case 368: +/* Line 1792 of yacc.c */ +#line 2681 "gram.y" { - ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); - n->identity_type = REPLICA_IDENTITY_FULL; - n->name = NULL; - (yyval.node) = (Node *) n; + (yyval.defelt) = makeDefElem("generated", (Node *) makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); } -#line 25864 "gram.c" /* yacc.c:1646 */ break; - case 345: -#line 2478 "gram.y" /* yacc.c:1646 */ + case 369: +/* Line 1792 of yacc.c */ +#line 2689 "gram.y" { - ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); - n->identity_type = REPLICA_IDENTITY_DEFAULT; - n->name = NULL; - (yyval.node) = (Node *) n; + PartitionBoundSpec *n = makeNode(PartitionBoundSpec); + + n->strategy = PARTITION_STRATEGY_LIST; + n->listdatums = (yyvsp[(5) - (6)].list); + n->location = (yylsp[(3) - (6)]); + + (yyval.partboundspec) = n; } -#line 25875 "gram.c" /* yacc.c:1646 */ break; - case 346: -#line 2485 "gram.y" /* yacc.c:1646 */ + case 370: +/* Line 1792 of yacc.c */ +#line 2701 "gram.y" { - ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); - n->identity_type = REPLICA_IDENTITY_INDEX; - n->name = (yyvsp[0].str); - (yyval.node) = (Node *) n; + PartitionBoundSpec *n = makeNode(PartitionBoundSpec); + + n->strategy = PARTITION_STRATEGY_RANGE; + n->lowerdatums = (yyvsp[(5) - (10)].list); + n->upperdatums = (yyvsp[(9) - (10)].list); + n->location = (yylsp[(3) - (10)]); + + (yyval.partboundspec) = n; } -#line 25886 "gram.c" /* yacc.c:1646 */ break; - case 347: -#line 2494 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 25892 "gram.c" /* yacc.c:1646 */ + case 371: +/* Line 1792 of yacc.c */ +#line 2714 "gram.y" + { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } break; - case 348: -#line 2497 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 25898 "gram.c" /* yacc.c:1646 */ + case 372: +/* Line 1792 of yacc.c */ +#line 2715 "gram.y" + { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); } break; - case 349: -#line 2498 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = NIL; } -#line 25904 "gram.c" /* yacc.c:1646 */ + case 373: +/* Line 1792 of yacc.c */ +#line 2716 "gram.y" + { (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); } break; - case 350: -#line 2502 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 25910 "gram.c" /* yacc.c:1646 */ + case 374: +/* Line 1792 of yacc.c */ +#line 2720 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 351: -#line 2503 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 25916 "gram.c" /* yacc.c:1646 */ + case 375: +/* Line 1792 of yacc.c */ +#line 2722 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 352: -#line 2509 "gram.y" /* yacc.c:1646 */ - { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *) (yyvsp[0].node)); - } -#line 25924 "gram.c" /* yacc.c:1646 */ + case 376: +/* Line 1792 of yacc.c */ +#line 2726 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 353: -#line 2513 "gram.y" /* yacc.c:1646 */ + case 377: +/* Line 1792 of yacc.c */ +#line 2728 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } + break; + + case 378: +/* Line 1792 of yacc.c */ +#line 2733 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[0].str), NULL); + PartitionRangeDatum *n = makeNode(PartitionRangeDatum); + + n->kind = PARTITION_RANGE_DATUM_MINVALUE; + n->value = NULL; + n->location = (yylsp[(1) - (1)]); + + (yyval.node) = (Node *) n; } -#line 25932 "gram.c" /* yacc.c:1646 */ break; - case 354: -#line 2517 "gram.y" /* yacc.c:1646 */ + case 379: +/* Line 1792 of yacc.c */ +#line 2743 "gram.y" { - (yyval.defelt) = makeDefElemExtended((yyvsp[-4].str), (yyvsp[-2].str), (Node *) (yyvsp[0].node), - DEFELEM_UNSPEC); + PartitionRangeDatum *n = makeNode(PartitionRangeDatum); + + n->kind = PARTITION_RANGE_DATUM_MAXVALUE; + n->value = NULL; + n->location = (yylsp[(1) - (1)]); + + (yyval.node) = (Node *) n; } -#line 25941 "gram.c" /* yacc.c:1646 */ break; - case 355: -#line 2522 "gram.y" /* yacc.c:1646 */ + case 380: +/* Line 1792 of yacc.c */ +#line 2753 "gram.y" { - (yyval.defelt) = makeDefElemExtended((yyvsp[-2].str), (yyvsp[0].str), NULL, DEFELEM_UNSPEC); + PartitionRangeDatum *n = makeNode(PartitionRangeDatum); + + n->kind = PARTITION_RANGE_DATUM_VALUE; + n->value = (yyvsp[(1) - (1)].node); + n->location = (yylsp[(1) - (1)]); + + (yyval.node) = (Node *) n; } -#line 25949 "gram.c" /* yacc.c:1646 */ break; - case 356: -#line 2537 "gram.y" /* yacc.c:1646 */ + case 381: +/* Line 1792 of yacc.c */ +#line 2773 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); /* can't use qualified_name, sigh */ - n->relation = makeRangeVarFromAnyName((yyvsp[-1].list), (yylsp[-1]), yyscanner); - n->cmds = (yyvsp[0].list); + n->relation = makeRangeVarFromAnyName((yyvsp[(3) - (4)].list), (yylsp[(3) - (4)]), yyscanner); + n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_TYPE; (yyval.node) = (Node *)n; } -#line 25963 "gram.c" /* yacc.c:1646 */ break; - case 357: -#line 2549 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 25969 "gram.c" /* yacc.c:1646 */ + case 382: +/* Line 1792 of yacc.c */ +#line 2785 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 358: -#line 2550 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 25975 "gram.c" /* yacc.c:1646 */ + case 383: +/* Line 1792 of yacc.c */ +#line 2786 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 359: -#line 2556 "gram.y" /* yacc.c:1646 */ + case 384: +/* Line 1792 of yacc.c */ +#line 2792 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; - n->def = (yyvsp[-1].node); - n->behavior = (yyvsp[0].dbehavior); + n->def = (yyvsp[(3) - (4)].node); + n->behavior = (yyvsp[(4) - (4)].dbehavior); (yyval.node) = (Node *)n; } -#line 25987 "gram.c" /* yacc.c:1646 */ break; - case 360: -#line 2565 "gram.y" /* yacc.c:1646 */ + case 385: +/* Line 1792 of yacc.c */ +#line 2801 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(5) - (6)].str); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = TRUE; (yyval.node) = (Node *)n; } -#line 26000 "gram.c" /* yacc.c:1646 */ break; - case 361: -#line 2575 "gram.y" /* yacc.c:1646 */ + case 386: +/* Line 1792 of yacc.c */ +#line 2811 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(3) - (4)].str); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = FALSE; (yyval.node) = (Node *)n; } -#line 26013 "gram.c" /* yacc.c:1646 */ break; - case 362: -#line 2585 "gram.y" /* yacc.c:1646 */ + case 387: +/* Line 1792 of yacc.c */ +#line 2821 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); ColumnDef *def = makeNode(ColumnDef); n->subtype = AT_AlterColumnType; - n->name = (yyvsp[-5].str); + n->name = (yyvsp[(3) - (8)].str); n->def = (Node *) def; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(8) - (8)].dbehavior); /* We only use these fields of the ColumnDef node */ - def->typeName = (yyvsp[-2].typnam); - def->collClause = (CollateClause *) (yyvsp[-1].node); + def->typeName = (yyvsp[(6) - (8)].typnam); + def->collClause = (CollateClause *) (yyvsp[(7) - (8)].node); def->raw_default = NULL; - def->location = (yylsp[-5]); + def->location = (yylsp[(3) - (8)]); (yyval.node) = (Node *)n; } -#line 26032 "gram.c" /* yacc.c:1646 */ break; - case 363: -#line 2611 "gram.y" /* yacc.c:1646 */ + case 388: +/* Line 1792 of yacc.c */ +#line 2847 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; } -#line 26042 "gram.c" /* yacc.c:1646 */ break; - case 364: -#line 2617 "gram.y" /* yacc.c:1646 */ + case 389: +/* Line 1792 of yacc.c */ +#line 2853 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = NULL; (yyval.node) = (Node *)n; } -#line 26052 "gram.c" /* yacc.c:1646 */ break; - case 365: -#line 2651 "gram.y" /* yacc.c:1646 */ + case 390: +/* Line 1792 of yacc.c */ +#line 2887 "gram.y" { CopyStmt *n = makeNode(CopyStmt); - n->relation = (yyvsp[-8].range); + n->relation = (yyvsp[(3) - (11)].range); n->query = NULL; - n->attlist = (yyvsp[-7].list); - n->is_from = (yyvsp[-5].boolean); - n->is_program = (yyvsp[-4].boolean); - n->filename = (yyvsp[-3].str); + n->attlist = (yyvsp[(4) - (11)].list); + n->is_from = (yyvsp[(6) - (11)].boolean); + n->is_program = (yyvsp[(7) - (11)].boolean); + n->filename = (yyvsp[(8) - (11)].str); if (n->is_program && n->filename == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("STDIN/STDOUT not allowed with PROGRAM"), - parser_errposition((yylsp[-3])))); + parser_errposition((yylsp[(8) - (11)])))); n->options = NIL; /* Concatenate user-supplied flags */ - if ((yyvsp[-9].defelt)) - n->options = lappend(n->options, (yyvsp[-9].defelt)); - if ((yyvsp[-6].defelt)) - n->options = lappend(n->options, (yyvsp[-6].defelt)); - if ((yyvsp[-2].defelt)) - n->options = lappend(n->options, (yyvsp[-2].defelt)); - if ((yyvsp[0].list)) - n->options = list_concat(n->options, (yyvsp[0].list)); + if ((yyvsp[(2) - (11)].defelt)) + n->options = lappend(n->options, (yyvsp[(2) - (11)].defelt)); + if ((yyvsp[(5) - (11)].defelt)) + n->options = lappend(n->options, (yyvsp[(5) - (11)].defelt)); + if ((yyvsp[(9) - (11)].defelt)) + n->options = lappend(n->options, (yyvsp[(9) - (11)].defelt)); + if ((yyvsp[(11) - (11)].list)) + n->options = list_concat(n->options, (yyvsp[(11) - (11)].list)); (yyval.node) = (Node *)n; } -#line 26084 "gram.c" /* yacc.c:1646 */ break; - case 366: -#line 2679 "gram.y" /* yacc.c:1646 */ + case 391: +/* Line 1792 of yacc.c */ +#line 2915 "gram.y" { CopyStmt *n = makeNode(CopyStmt); n->relation = NULL; - n->query = (yyvsp[-6].node); + n->query = (yyvsp[(3) - (9)].node); n->attlist = NIL; n->is_from = false; - n->is_program = (yyvsp[-3].boolean); - n->filename = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->is_program = (yyvsp[(6) - (9)].boolean); + n->filename = (yyvsp[(7) - (9)].str); + n->options = (yyvsp[(9) - (9)].list); if (n->is_program && n->filename == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("STDIN/STDOUT not allowed with PROGRAM"), - parser_errposition((yylsp[-4])))); + parser_errposition((yylsp[(5) - (9)])))); (yyval.node) = (Node *)n; } -#line 26107 "gram.c" /* yacc.c:1646 */ break; - case 367: -#line 2700 "gram.y" /* yacc.c:1646 */ + case 392: +/* Line 1792 of yacc.c */ +#line 2936 "gram.y" { (yyval.boolean) = TRUE; } -#line 26113 "gram.c" /* yacc.c:1646 */ break; - case 368: -#line 2701 "gram.y" /* yacc.c:1646 */ + case 393: +/* Line 1792 of yacc.c */ +#line 2937 "gram.y" { (yyval.boolean) = FALSE; } -#line 26119 "gram.c" /* yacc.c:1646 */ break; - case 369: -#line 2705 "gram.y" /* yacc.c:1646 */ + case 394: +/* Line 1792 of yacc.c */ +#line 2941 "gram.y" { (yyval.boolean) = TRUE; } -#line 26125 "gram.c" /* yacc.c:1646 */ break; - case 370: -#line 2706 "gram.y" /* yacc.c:1646 */ + case 395: +/* Line 1792 of yacc.c */ +#line 2942 "gram.y" { (yyval.boolean) = FALSE; } -#line 26131 "gram.c" /* yacc.c:1646 */ break; - case 371: -#line 2715 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 26137 "gram.c" /* yacc.c:1646 */ + case 396: +/* Line 1792 of yacc.c */ +#line 2951 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 372: -#line 2716 "gram.y" /* yacc.c:1646 */ + case 397: +/* Line 1792 of yacc.c */ +#line 2952 "gram.y" { (yyval.str) = NULL; } -#line 26143 "gram.c" /* yacc.c:1646 */ break; - case 373: -#line 2717 "gram.y" /* yacc.c:1646 */ + case 398: +/* Line 1792 of yacc.c */ +#line 2953 "gram.y" { (yyval.str) = NULL; } -#line 26149 "gram.c" /* yacc.c:1646 */ break; - case 374: -#line 2720 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 26155 "gram.c" /* yacc.c:1646 */ + case 399: +/* Line 1792 of yacc.c */ +#line 2956 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 375: -#line 2721 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 26161 "gram.c" /* yacc.c:1646 */ + case 400: +/* Line 1792 of yacc.c */ +#line 2957 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 376: -#line 2726 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 26167 "gram.c" /* yacc.c:1646 */ + case 401: +/* Line 1792 of yacc.c */ +#line 2962 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; - case 377: -#line 2727 "gram.y" /* yacc.c:1646 */ + case 402: +/* Line 1792 of yacc.c */ +#line 2963 "gram.y" { (yyval.list) = NIL; } -#line 26173 "gram.c" /* yacc.c:1646 */ break; - case 378: -#line 2732 "gram.y" /* yacc.c:1646 */ + case 403: +/* Line 1792 of yacc.c */ +#line 2968 "gram.y" { - (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary")); + (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary"), (yylsp[(1) - (1)])); } -#line 26181 "gram.c" /* yacc.c:1646 */ break; - case 379: -#line 2736 "gram.y" /* yacc.c:1646 */ + case 404: +/* Line 1792 of yacc.c */ +#line 2972 "gram.y" { - (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 26189 "gram.c" /* yacc.c:1646 */ break; - case 380: -#line 2740 "gram.y" /* yacc.c:1646 */ + case 405: +/* Line 1792 of yacc.c */ +#line 2976 "gram.y" { - (yyval.defelt) = makeDefElem("freeze", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("freeze", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 26197 "gram.c" /* yacc.c:1646 */ break; - case 381: -#line 2744 "gram.y" /* yacc.c:1646 */ + case 406: +/* Line 1792 of yacc.c */ +#line 2980 "gram.y" { - (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 26205 "gram.c" /* yacc.c:1646 */ break; - case 382: -#line 2748 "gram.y" /* yacc.c:1646 */ + case 407: +/* Line 1792 of yacc.c */ +#line 2984 "gram.y" { - (yyval.defelt) = makeDefElem("null", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("null", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 26213 "gram.c" /* yacc.c:1646 */ break; - case 383: -#line 2752 "gram.y" /* yacc.c:1646 */ + case 408: +/* Line 1792 of yacc.c */ +#line 2988 "gram.y" { - (yyval.defelt) = makeDefElem("format", (Node *)makeString("csv")); + (yyval.defelt) = makeDefElem("format", (Node *)makeString("csv"), (yylsp[(1) - (1)])); } -#line 26221 "gram.c" /* yacc.c:1646 */ break; - case 384: -#line 2756 "gram.y" /* yacc.c:1646 */ + case 409: +/* Line 1792 of yacc.c */ +#line 2992 "gram.y" { - (yyval.defelt) = makeDefElem("header", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("header", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 26229 "gram.c" /* yacc.c:1646 */ break; - case 385: -#line 2760 "gram.y" /* yacc.c:1646 */ + case 410: +/* Line 1792 of yacc.c */ +#line 2996 "gram.y" { - (yyval.defelt) = makeDefElem("quote", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("quote", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 26237 "gram.c" /* yacc.c:1646 */ break; - case 386: -#line 2764 "gram.y" /* yacc.c:1646 */ + case 411: +/* Line 1792 of yacc.c */ +#line 3000 "gram.y" { - (yyval.defelt) = makeDefElem("escape", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("escape", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 26245 "gram.c" /* yacc.c:1646 */ break; - case 387: -#line 2768 "gram.y" /* yacc.c:1646 */ + case 412: +/* Line 1792 of yacc.c */ +#line 3004 "gram.y" { - (yyval.defelt) = makeDefElem("force_quote", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("force_quote", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 26253 "gram.c" /* yacc.c:1646 */ break; - case 388: -#line 2772 "gram.y" /* yacc.c:1646 */ + case 413: +/* Line 1792 of yacc.c */ +#line 3008 "gram.y" { - (yyval.defelt) = makeDefElem("force_quote", (Node *)makeNode(A_Star)); + (yyval.defelt) = makeDefElem("force_quote", (Node *)makeNode(A_Star), (yylsp[(1) - (3)])); } -#line 26261 "gram.c" /* yacc.c:1646 */ break; - case 389: -#line 2776 "gram.y" /* yacc.c:1646 */ + case 414: +/* Line 1792 of yacc.c */ +#line 3012 "gram.y" { - (yyval.defelt) = makeDefElem("force_not_null", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("force_not_null", (Node *)(yyvsp[(4) - (4)].list), (yylsp[(1) - (4)])); } -#line 26269 "gram.c" /* yacc.c:1646 */ break; - case 390: -#line 2780 "gram.y" /* yacc.c:1646 */ + case 415: +/* Line 1792 of yacc.c */ +#line 3016 "gram.y" { - (yyval.defelt) = makeDefElem("force_null", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("force_null", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 26277 "gram.c" /* yacc.c:1646 */ break; - case 391: -#line 2784 "gram.y" /* yacc.c:1646 */ + case 416: +/* Line 1792 of yacc.c */ +#line 3020 "gram.y" { - (yyval.defelt) = makeDefElem("encoding", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("encoding", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 26285 "gram.c" /* yacc.c:1646 */ break; - case 392: -#line 2793 "gram.y" /* yacc.c:1646 */ + case 417: +/* Line 1792 of yacc.c */ +#line 3029 "gram.y" { - (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary")); + (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary"), (yylsp[(1) - (1)])); } -#line 26293 "gram.c" /* yacc.c:1646 */ break; - case 393: -#line 2796 "gram.y" /* yacc.c:1646 */ + case 418: +/* Line 1792 of yacc.c */ +#line 3032 "gram.y" { (yyval.defelt) = NULL; } -#line 26299 "gram.c" /* yacc.c:1646 */ break; - case 394: -#line 2801 "gram.y" /* yacc.c:1646 */ + case 419: +/* Line 1792 of yacc.c */ +#line 3037 "gram.y" { - (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE), (yylsp[(1) - (2)])); } -#line 26307 "gram.c" /* yacc.c:1646 */ break; - case 395: -#line 2804 "gram.y" /* yacc.c:1646 */ + case 420: +/* Line 1792 of yacc.c */ +#line 3040 "gram.y" { (yyval.defelt) = NULL; } -#line 26313 "gram.c" /* yacc.c:1646 */ break; - case 396: -#line 2809 "gram.y" /* yacc.c:1646 */ + case 421: +/* Line 1792 of yacc.c */ +#line 3045 "gram.y" { - (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(2) - (3)])); } -#line 26321 "gram.c" /* yacc.c:1646 */ break; - case 397: -#line 2812 "gram.y" /* yacc.c:1646 */ + case 422: +/* Line 1792 of yacc.c */ +#line 3048 "gram.y" { (yyval.defelt) = NULL; } -#line 26327 "gram.c" /* yacc.c:1646 */ break; - case 398: -#line 2816 "gram.y" /* yacc.c:1646 */ + case 423: +/* Line 1792 of yacc.c */ +#line 3052 "gram.y" {} -#line 26333 "gram.c" /* yacc.c:1646 */ break; - case 399: -#line 2817 "gram.y" /* yacc.c:1646 */ + case 424: +/* Line 1792 of yacc.c */ +#line 3053 "gram.y" {} -#line 26339 "gram.c" /* yacc.c:1646 */ break; - case 400: -#line 2823 "gram.y" /* yacc.c:1646 */ + case 425: +/* Line 1792 of yacc.c */ +#line 3059 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].defelt)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } -#line 26347 "gram.c" /* yacc.c:1646 */ break; - case 401: -#line 2827 "gram.y" /* yacc.c:1646 */ + case 426: +/* Line 1792 of yacc.c */ +#line 3063 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } -#line 26355 "gram.c" /* yacc.c:1646 */ break; - case 402: -#line 2834 "gram.y" /* yacc.c:1646 */ + case 427: +/* Line 1792 of yacc.c */ +#line 3070 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node)); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } -#line 26363 "gram.c" /* yacc.c:1646 */ break; - case 403: -#line 2840 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeString((yyvsp[0].str)); } -#line 26369 "gram.c" /* yacc.c:1646 */ + case 428: +/* Line 1792 of yacc.c */ +#line 3076 "gram.y" + { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); } break; - case 404: -#line 2841 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[0].value); } -#line 26375 "gram.c" /* yacc.c:1646 */ + case 429: +/* Line 1792 of yacc.c */ +#line 3077 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(1) - (1)].value); } break; - case 405: -#line 2842 "gram.y" /* yacc.c:1646 */ + case 430: +/* Line 1792 of yacc.c */ +#line 3078 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); } -#line 26381 "gram.c" /* yacc.c:1646 */ break; - case 406: -#line 2843 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[-1].list); } -#line 26387 "gram.c" /* yacc.c:1646 */ + case 431: +/* Line 1792 of yacc.c */ +#line 3079 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(2) - (3)].list); } break; - case 407: -#line 2844 "gram.y" /* yacc.c:1646 */ + case 432: +/* Line 1792 of yacc.c */ +#line 3080 "gram.y" { (yyval.node) = NULL; } -#line 26393 "gram.c" /* yacc.c:1646 */ break; - case 408: -#line 2849 "gram.y" /* yacc.c:1646 */ + case 433: +/* Line 1792 of yacc.c */ +#line 3085 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 26401 "gram.c" /* yacc.c:1646 */ break; - case 409: -#line 2853 "gram.y" /* yacc.c:1646 */ + case 434: +/* Line 1792 of yacc.c */ +#line 3089 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 26409 "gram.c" /* yacc.c:1646 */ break; - case 410: -#line 2860 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeString((yyvsp[0].str)); } -#line 26415 "gram.c" /* yacc.c:1646 */ + case 435: +/* Line 1792 of yacc.c */ +#line 3096 "gram.y" + { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); } break; - case 411: -#line 2873 "gram.y" /* yacc.c:1646 */ + case 436: +/* Line 1792 of yacc.c */ +#line 3109 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[-7].range)->relpersistence = (yyvsp[-9].ival); - n->relation = (yyvsp[-7].range); - n->tableElts = (yyvsp[-5].list); - n->inhRelations = (yyvsp[-3].list); + (yyvsp[(4) - (12)].range)->relpersistence = (yyvsp[(2) - (12)].ival); + n->relation = (yyvsp[(4) - (12)].range); + n->tableElts = (yyvsp[(6) - (12)].list); + n->inhRelations = (yyvsp[(8) - (12)].list); + n->partspec = (yyvsp[(9) - (12)].partspec); n->ofTypename = NULL; n->constraints = NIL; - n->options = (yyvsp[-2].list); - n->oncommit = (yyvsp[-1].oncommit); - n->tablespacename = (yyvsp[0].str); + n->options = (yyvsp[(10) - (12)].list); + n->oncommit = (yyvsp[(11) - (12)].oncommit); + n->tablespacename = (yyvsp[(12) - (12)].str); n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 26434 "gram.c" /* yacc.c:1646 */ break; - case 412: -#line 2890 "gram.y" /* yacc.c:1646 */ + case 437: +/* Line 1792 of yacc.c */ +#line 3127 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[-7].range)->relpersistence = (yyvsp[-12].ival); - n->relation = (yyvsp[-7].range); - n->tableElts = (yyvsp[-5].list); - n->inhRelations = (yyvsp[-3].list); + (yyvsp[(7) - (15)].range)->relpersistence = (yyvsp[(2) - (15)].ival); + n->relation = (yyvsp[(7) - (15)].range); + n->tableElts = (yyvsp[(9) - (15)].list); + n->inhRelations = (yyvsp[(11) - (15)].list); + n->partspec = (yyvsp[(12) - (15)].partspec); n->ofTypename = NULL; n->constraints = NIL; - n->options = (yyvsp[-2].list); - n->oncommit = (yyvsp[-1].oncommit); - n->tablespacename = (yyvsp[0].str); + n->options = (yyvsp[(13) - (15)].list); + n->oncommit = (yyvsp[(14) - (15)].oncommit); + n->tablespacename = (yyvsp[(15) - (15)].str); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 26453 "gram.c" /* yacc.c:1646 */ break; - case 413: -#line 2906 "gram.y" /* yacc.c:1646 */ + case 438: +/* Line 1792 of yacc.c */ +#line 3145 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[-6].range)->relpersistence = (yyvsp[-8].ival); - n->relation = (yyvsp[-6].range); - n->tableElts = (yyvsp[-3].list); + (yyvsp[(4) - (11)].range)->relpersistence = (yyvsp[(2) - (11)].ival); + n->relation = (yyvsp[(4) - (11)].range); + n->tableElts = (yyvsp[(7) - (11)].list); n->inhRelations = NIL; - n->ofTypename = makeTypeNameFromNameList((yyvsp[-4].list)); - n->ofTypename->location = (yylsp[-4]); + n->partspec = (yyvsp[(8) - (11)].partspec); + n->ofTypename = makeTypeNameFromNameList((yyvsp[(6) - (11)].list)); + n->ofTypename->location = (yylsp[(6) - (11)]); n->constraints = NIL; - n->options = (yyvsp[-2].list); - n->oncommit = (yyvsp[-1].oncommit); - n->tablespacename = (yyvsp[0].str); + n->options = (yyvsp[(9) - (11)].list); + n->oncommit = (yyvsp[(10) - (11)].oncommit); + n->tablespacename = (yyvsp[(11) - (11)].str); n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 26473 "gram.c" /* yacc.c:1646 */ break; - case 414: -#line 2923 "gram.y" /* yacc.c:1646 */ + case 439: +/* Line 1792 of yacc.c */ +#line 3164 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[-6].range)->relpersistence = (yyvsp[-11].ival); - n->relation = (yyvsp[-6].range); - n->tableElts = (yyvsp[-3].list); + (yyvsp[(7) - (14)].range)->relpersistence = (yyvsp[(2) - (14)].ival); + n->relation = (yyvsp[(7) - (14)].range); + n->tableElts = (yyvsp[(10) - (14)].list); n->inhRelations = NIL; - n->ofTypename = makeTypeNameFromNameList((yyvsp[-4].list)); - n->ofTypename->location = (yylsp[-4]); + n->partspec = (yyvsp[(11) - (14)].partspec); + n->ofTypename = makeTypeNameFromNameList((yyvsp[(9) - (14)].list)); + n->ofTypename->location = (yylsp[(9) - (14)]); n->constraints = NIL; - n->options = (yyvsp[-2].list); - n->oncommit = (yyvsp[-1].oncommit); - n->tablespacename = (yyvsp[0].str); + n->options = (yyvsp[(12) - (14)].list); + n->oncommit = (yyvsp[(13) - (14)].oncommit); + n->tablespacename = (yyvsp[(14) - (14)].str); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 26493 "gram.c" /* yacc.c:1646 */ break; - case 415: -#line 2951 "gram.y" /* yacc.c:1646 */ + case 440: +/* Line 1792 of yacc.c */ +#line 3183 "gram.y" + { + CreateStmt *n = makeNode(CreateStmt); + (yyvsp[(4) - (13)].range)->relpersistence = (yyvsp[(2) - (13)].ival); + n->relation = (yyvsp[(4) - (13)].range); + n->tableElts = (yyvsp[(8) - (13)].list); + n->inhRelations = list_make1((yyvsp[(7) - (13)].range)); + n->partbound = (yyvsp[(9) - (13)].partboundspec); + n->partspec = (yyvsp[(10) - (13)].partspec); + n->ofTypename = NULL; + n->constraints = NIL; + n->options = (yyvsp[(11) - (13)].list); + n->oncommit = (yyvsp[(12) - (13)].oncommit); + n->tablespacename = (yyvsp[(13) - (13)].str); + n->if_not_exists = false; + (yyval.node) = (Node *)n; + } + break; + + case 441: +/* Line 1792 of yacc.c */ +#line 3202 "gram.y" + { + CreateStmt *n = makeNode(CreateStmt); + (yyvsp[(7) - (16)].range)->relpersistence = (yyvsp[(2) - (16)].ival); + n->relation = (yyvsp[(7) - (16)].range); + n->tableElts = (yyvsp[(11) - (16)].list); + n->inhRelations = list_make1((yyvsp[(10) - (16)].range)); + n->partbound = (yyvsp[(12) - (16)].partboundspec); + n->partspec = (yyvsp[(13) - (16)].partspec); + n->ofTypename = NULL; + n->constraints = NIL; + n->options = (yyvsp[(14) - (16)].list); + n->oncommit = (yyvsp[(15) - (16)].oncommit); + n->tablespacename = (yyvsp[(16) - (16)].str); + n->if_not_exists = true; + (yyval.node) = (Node *)n; + } + break; + + case 442: +/* Line 1792 of yacc.c */ +#line 3231 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 26499 "gram.c" /* yacc.c:1646 */ break; - case 416: -#line 2952 "gram.y" /* yacc.c:1646 */ + case 443: +/* Line 1792 of yacc.c */ +#line 3232 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 26505 "gram.c" /* yacc.c:1646 */ break; - case 417: -#line 2953 "gram.y" /* yacc.c:1646 */ + case 444: +/* Line 1792 of yacc.c */ +#line 3233 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 26511 "gram.c" /* yacc.c:1646 */ break; - case 418: -#line 2954 "gram.y" /* yacc.c:1646 */ + case 445: +/* Line 1792 of yacc.c */ +#line 3234 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 26517 "gram.c" /* yacc.c:1646 */ break; - case 419: -#line 2956 "gram.y" /* yacc.c:1646 */ + case 446: +/* Line 1792 of yacc.c */ +#line 3236 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 26528 "gram.c" /* yacc.c:1646 */ break; - case 420: -#line 2963 "gram.y" /* yacc.c:1646 */ + case 447: +/* Line 1792 of yacc.c */ +#line 3243 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 26539 "gram.c" /* yacc.c:1646 */ break; - case 421: -#line 2969 "gram.y" /* yacc.c:1646 */ + case 448: +/* Line 1792 of yacc.c */ +#line 3249 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; } -#line 26545 "gram.c" /* yacc.c:1646 */ break; - case 422: -#line 2970 "gram.y" /* yacc.c:1646 */ + case 449: +/* Line 1792 of yacc.c */ +#line 3250 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; } -#line 26551 "gram.c" /* yacc.c:1646 */ break; - case 423: -#line 2974 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 26557 "gram.c" /* yacc.c:1646 */ + case 450: +/* Line 1792 of yacc.c */ +#line 3254 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 424: -#line 2975 "gram.y" /* yacc.c:1646 */ + case 451: +/* Line 1792 of yacc.c */ +#line 3255 "gram.y" { (yyval.list) = NIL; } -#line 26563 "gram.c" /* yacc.c:1646 */ break; - case 425: -#line 2979 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 26569 "gram.c" /* yacc.c:1646 */ + case 452: +/* Line 1792 of yacc.c */ +#line 3259 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 426: -#line 2980 "gram.y" /* yacc.c:1646 */ + case 453: +/* Line 1792 of yacc.c */ +#line 3260 "gram.y" { (yyval.list) = NIL; } -#line 26575 "gram.c" /* yacc.c:1646 */ break; - case 427: -#line 2985 "gram.y" /* yacc.c:1646 */ + case 454: +/* Line 1792 of yacc.c */ +#line 3265 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 26583 "gram.c" /* yacc.c:1646 */ break; - case 428: -#line 2989 "gram.y" /* yacc.c:1646 */ + case 455: +/* Line 1792 of yacc.c */ +#line 3269 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 26591 "gram.c" /* yacc.c:1646 */ break; - case 429: -#line 2996 "gram.y" /* yacc.c:1646 */ + case 456: +/* Line 1792 of yacc.c */ +#line 3276 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 26599 "gram.c" /* yacc.c:1646 */ break; - case 430: -#line 3000 "gram.y" /* yacc.c:1646 */ + case 457: +/* Line 1792 of yacc.c */ +#line 3280 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 26607 "gram.c" /* yacc.c:1646 */ break; - case 431: -#line 3006 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 26613 "gram.c" /* yacc.c:1646 */ + case 458: +/* Line 1792 of yacc.c */ +#line 3286 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 432: -#line 3007 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 26619 "gram.c" /* yacc.c:1646 */ + case 459: +/* Line 1792 of yacc.c */ +#line 3287 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 433: -#line 3008 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 26625 "gram.c" /* yacc.c:1646 */ + case 460: +/* Line 1792 of yacc.c */ +#line 3288 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 434: -#line 3012 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 26631 "gram.c" /* yacc.c:1646 */ + case 461: +/* Line 1792 of yacc.c */ +#line 3292 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 435: -#line 3013 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 26637 "gram.c" /* yacc.c:1646 */ + case 462: +/* Line 1792 of yacc.c */ +#line 3293 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } + break; + + case 463: +/* Line 1792 of yacc.c */ +#line 3297 "gram.y" + { + ColumnDef *n = makeNode(ColumnDef); + n->colname = (yyvsp[(1) - (4)].str); + n->typeName = (yyvsp[(2) - (4)].typnam); + n->inhcount = 0; + n->is_local = true; + n->is_not_null = false; + n->is_from_type = false; + n->is_from_parent = false; + n->storage = 0; + n->raw_default = NULL; + n->cooked_default = NULL; + n->collOid = InvalidOid; + n->fdwoptions = (yyvsp[(3) - (4)].list); + SplitColQualList((yyvsp[(4) - (4)].list), &n->constraints, &n->collClause, + yyscanner); + n->location = (yylsp[(1) - (4)]); + (yyval.node) = (Node *)n; + } break; - case 436: -#line 3017 "gram.y" /* yacc.c:1646 */ + case 464: +/* Line 1792 of yacc.c */ +#line 3319 "gram.y" { ColumnDef *n = makeNode(ColumnDef); - n->colname = (yyvsp[-3].str); - n->typeName = (yyvsp[-2].typnam); + n->colname = (yyvsp[(1) - (2)].str); + n->typeName = NULL; n->inhcount = 0; n->is_local = true; n->is_not_null = false; n->is_from_type = false; + n->is_from_parent = false; n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; n->collOid = InvalidOid; - n->fdwoptions = (yyvsp[-1].list); - SplitColQualList((yyvsp[0].list), &n->constraints, &n->collClause, + SplitColQualList((yyvsp[(2) - (2)].list), &n->constraints, &n->collClause, yyscanner); - n->location = (yylsp[-3]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 26660 "gram.c" /* yacc.c:1646 */ break; - case 437: -#line 3038 "gram.y" /* yacc.c:1646 */ + case 465: +/* Line 1792 of yacc.c */ +#line 3338 "gram.y" { ColumnDef *n = makeNode(ColumnDef); - n->colname = (yyvsp[-3].str); + n->colname = (yyvsp[(1) - (4)].str); n->typeName = NULL; n->inhcount = 0; n->is_local = true; n->is_not_null = false; n->is_from_type = false; + n->is_from_parent = false; n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; n->collOid = InvalidOid; - SplitColQualList((yyvsp[0].list), &n->constraints, &n->collClause, + SplitColQualList((yyvsp[(4) - (4)].list), &n->constraints, &n->collClause, yyscanner); - n->location = (yylsp[-3]); + n->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)n; } -#line 26682 "gram.c" /* yacc.c:1646 */ break; - case 438: -#line 3058 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } -#line 26688 "gram.c" /* yacc.c:1646 */ + case 466: +/* Line 1792 of yacc.c */ +#line 3359 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; - case 439: -#line 3059 "gram.y" /* yacc.c:1646 */ + case 467: +/* Line 1792 of yacc.c */ +#line 3360 "gram.y" { (yyval.list) = NIL; } -#line 26694 "gram.c" /* yacc.c:1646 */ break; - case 440: -#line 3064 "gram.y" /* yacc.c:1646 */ + case 468: +/* Line 1792 of yacc.c */ +#line 3365 "gram.y" { - Constraint *n = (Constraint *) (yyvsp[0].node); - Assert(IsA(n, Constraint)); - n->conname = (yyvsp[-1].str); - n->location = (yylsp[-2]); + Constraint *n = castNode(Constraint, (yyvsp[(3) - (3)].node)); + n->conname = (yyvsp[(2) - (3)].str); + n->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) n; } -#line 26706 "gram.c" /* yacc.c:1646 */ break; - case 441: -#line 3071 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 26712 "gram.c" /* yacc.c:1646 */ + case 469: +/* Line 1792 of yacc.c */ +#line 3371 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 442: -#line 3072 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 26718 "gram.c" /* yacc.c:1646 */ + case 470: +/* Line 1792 of yacc.c */ +#line 3372 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 443: -#line 3074 "gram.y" /* yacc.c:1646 */ + case 471: +/* Line 1792 of yacc.c */ +#line 3374 "gram.y" { /* * Note: the CollateClause is momentarily included in @@ -26727,1018 +29551,1206 @@ yyreduce: */ CollateClause *n = makeNode(CollateClause); n->arg = NULL; - n->collname = (yyvsp[0].list); - n->location = (yylsp[-1]); + n->collname = (yyvsp[(2) - (2)].list); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; } -#line 26735 "gram.c" /* yacc.c:1646 */ break; - case 444: -#line 3105 "gram.y" /* yacc.c:1646 */ + case 472: +/* Line 1792 of yacc.c */ +#line 3405 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NOTNULL; - n->location = (yylsp[-1]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 26746 "gram.c" /* yacc.c:1646 */ break; - case 445: -#line 3112 "gram.y" /* yacc.c:1646 */ + case 473: +/* Line 1792 of yacc.c */ +#line 3412 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NULL; - n->location = (yylsp[0]); + n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)n; } -#line 26757 "gram.c" /* yacc.c:1646 */ break; - case 446: -#line 3119 "gram.y" /* yacc.c:1646 */ + case 474: +/* Line 1792 of yacc.c */ +#line 3419 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; - n->location = (yylsp[-2]); + n->location = (yylsp[(1) - (3)]); n->keys = NULL; - n->options = (yyvsp[-1].list); + n->options = (yyvsp[(2) - (3)].list); n->indexname = NULL; - n->indexspace = (yyvsp[0].str); + n->indexspace = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 26772 "gram.c" /* yacc.c:1646 */ break; - case 447: -#line 3130 "gram.y" /* yacc.c:1646 */ + case 475: +/* Line 1792 of yacc.c */ +#line 3430 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; - n->location = (yylsp[-3]); + n->location = (yylsp[(1) - (4)]); n->keys = NULL; - n->options = (yyvsp[-1].list); + n->options = (yyvsp[(3) - (4)].list); n->indexname = NULL; - n->indexspace = (yyvsp[0].str); + n->indexspace = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; } -#line 26787 "gram.c" /* yacc.c:1646 */ break; - case 448: -#line 3141 "gram.y" /* yacc.c:1646 */ + case 476: +/* Line 1792 of yacc.c */ +#line 3441 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; - n->location = (yylsp[-4]); - n->is_no_inherit = (yyvsp[0].boolean); - n->raw_expr = (yyvsp[-2].node); + n->location = (yylsp[(1) - (5)]); + n->is_no_inherit = (yyvsp[(5) - (5)].boolean); + n->raw_expr = (yyvsp[(3) - (5)].node); n->cooked_expr = NULL; n->skip_validation = false; n->initially_valid = true; (yyval.node) = (Node *)n; } -#line 26803 "gram.c" /* yacc.c:1646 */ break; - case 449: -#line 3153 "gram.y" /* yacc.c:1646 */ + case 477: +/* Line 1792 of yacc.c */ +#line 3453 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_DEFAULT; - n->location = (yylsp[-1]); - n->raw_expr = (yyvsp[0].node); + n->location = (yylsp[(1) - (2)]); + n->raw_expr = (yyvsp[(2) - (2)].node); n->cooked_expr = NULL; n->skip_validation = false; n->initially_valid = true; (yyval.node) = (Node *)n; } -#line 26818 "gram.c" /* yacc.c:1646 */ break; - case 450: -#line 3164 "gram.y" /* yacc.c:1646 */ + case 478: +/* Line 1792 of yacc.c */ +#line 3464 "gram.y" + { + Constraint *n = makeNode(Constraint); + n->contype = CONSTR_IDENTITY; + n->generated_when = (yyvsp[(2) - (5)].ival); + n->options = (yyvsp[(5) - (5)].list); + n->location = (yylsp[(1) - (5)]); + (yyval.node) = (Node *)n; + } + break; + + case 479: +/* Line 1792 of yacc.c */ +#line 3473 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_FOREIGN; - n->location = (yylsp[-4]); - n->pktable = (yyvsp[-3].range); + n->location = (yylsp[(1) - (5)]); + n->pktable = (yyvsp[(2) - (5)].range); n->fk_attrs = NIL; - n->pk_attrs = (yyvsp[-2].list); - n->fk_matchtype = (yyvsp[-1].ival); - n->fk_upd_action = (char) ((yyvsp[0].ival) >> 8); - n->fk_del_action = (char) ((yyvsp[0].ival) & 0xFF); + n->pk_attrs = (yyvsp[(3) - (5)].list); + n->fk_matchtype = (yyvsp[(4) - (5)].ival); + n->fk_upd_action = (char) ((yyvsp[(5) - (5)].ival) >> 8); + n->fk_del_action = (char) ((yyvsp[(5) - (5)].ival) & 0xFF); n->skip_validation = false; n->initially_valid = true; (yyval.node) = (Node *)n; } -#line 26837 "gram.c" /* yacc.c:1646 */ break; - case 451: -#line 3197 "gram.y" /* yacc.c:1646 */ + case 480: +/* Line 1792 of yacc.c */ +#line 3490 "gram.y" + { (yyval.ival) = ATTRIBUTE_IDENTITY_ALWAYS; } + break; + + case 481: +/* Line 1792 of yacc.c */ +#line 3491 "gram.y" + { (yyval.ival) = ATTRIBUTE_IDENTITY_BY_DEFAULT; } + break; + + case 482: +/* Line 1792 of yacc.c */ +#line 3511 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRABLE; - n->location = (yylsp[0]); + n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)n; } -#line 26848 "gram.c" /* yacc.c:1646 */ break; - case 452: -#line 3204 "gram.y" /* yacc.c:1646 */ + case 483: +/* Line 1792 of yacc.c */ +#line 3518 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_NOT_DEFERRABLE; - n->location = (yylsp[-1]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 26859 "gram.c" /* yacc.c:1646 */ break; - case 453: -#line 3211 "gram.y" /* yacc.c:1646 */ + case 484: +/* Line 1792 of yacc.c */ +#line 3525 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRED; - n->location = (yylsp[-1]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 26870 "gram.c" /* yacc.c:1646 */ break; - case 454: -#line 3218 "gram.y" /* yacc.c:1646 */ + case 485: +/* Line 1792 of yacc.c */ +#line 3532 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_IMMEDIATE; - n->location = (yylsp[-1]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 26881 "gram.c" /* yacc.c:1646 */ break; - case 455: -#line 3229 "gram.y" /* yacc.c:1646 */ + case 486: +/* Line 1792 of yacc.c */ +#line 3543 "gram.y" { TableLikeClause *n = makeNode(TableLikeClause); - n->relation = (yyvsp[-1].range); - n->options = (yyvsp[0].ival); + n->relation = (yyvsp[(2) - (3)].range); + n->options = (yyvsp[(3) - (3)].ival); (yyval.node) = (Node *)n; } -#line 26892 "gram.c" /* yacc.c:1646 */ break; - case 456: -#line 3238 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } -#line 26898 "gram.c" /* yacc.c:1646 */ + case 487: +/* Line 1792 of yacc.c */ +#line 3552 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); } break; - case 457: -#line 3239 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-2].ival) & ~(yyvsp[0].ival); } -#line 26904 "gram.c" /* yacc.c:1646 */ + case 488: +/* Line 1792 of yacc.c */ +#line 3553 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (3)].ival) & ~(yyvsp[(3) - (3)].ival); } break; - case 458: -#line 3240 "gram.y" /* yacc.c:1646 */ + case 489: +/* Line 1792 of yacc.c */ +#line 3554 "gram.y" { (yyval.ival) = 0; } -#line 26910 "gram.c" /* yacc.c:1646 */ break; - case 459: -#line 3244 "gram.y" /* yacc.c:1646 */ + case 490: +/* Line 1792 of yacc.c */ +#line 3558 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_DEFAULTS; } -#line 26916 "gram.c" /* yacc.c:1646 */ break; - case 460: -#line 3245 "gram.y" /* yacc.c:1646 */ + case 491: +/* Line 1792 of yacc.c */ +#line 3559 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_CONSTRAINTS; } -#line 26922 "gram.c" /* yacc.c:1646 */ break; - case 461: -#line 3246 "gram.y" /* yacc.c:1646 */ + case 492: +/* Line 1792 of yacc.c */ +#line 3560 "gram.y" + { (yyval.ival) = CREATE_TABLE_LIKE_IDENTITY; } + break; + + case 493: +/* Line 1792 of yacc.c */ +#line 3561 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_INDEXES; } -#line 26928 "gram.c" /* yacc.c:1646 */ break; - case 462: -#line 3247 "gram.y" /* yacc.c:1646 */ + case 494: +/* Line 1792 of yacc.c */ +#line 3562 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_STORAGE; } -#line 26934 "gram.c" /* yacc.c:1646 */ break; - case 463: -#line 3248 "gram.y" /* yacc.c:1646 */ + case 495: +/* Line 1792 of yacc.c */ +#line 3563 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_COMMENTS; } -#line 26940 "gram.c" /* yacc.c:1646 */ break; - case 464: -#line 3249 "gram.y" /* yacc.c:1646 */ + case 496: +/* Line 1792 of yacc.c */ +#line 3564 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_ALL; } -#line 26946 "gram.c" /* yacc.c:1646 */ break; - case 465: -#line 3259 "gram.y" /* yacc.c:1646 */ + case 497: +/* Line 1792 of yacc.c */ +#line 3574 "gram.y" { - Constraint *n = (Constraint *) (yyvsp[0].node); - Assert(IsA(n, Constraint)); - n->conname = (yyvsp[-1].str); - n->location = (yylsp[-2]); + Constraint *n = castNode(Constraint, (yyvsp[(3) - (3)].node)); + n->conname = (yyvsp[(2) - (3)].str); + n->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) n; } -#line 26958 "gram.c" /* yacc.c:1646 */ break; - case 466: -#line 3266 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 26964 "gram.c" /* yacc.c:1646 */ + case 498: +/* Line 1792 of yacc.c */ +#line 3580 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 467: -#line 3271 "gram.y" /* yacc.c:1646 */ + case 499: +/* Line 1792 of yacc.c */ +#line 3585 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; - n->location = (yylsp[-4]); - n->raw_expr = (yyvsp[-2].node); + n->location = (yylsp[(1) - (5)]); + n->raw_expr = (yyvsp[(3) - (5)].node); n->cooked_expr = NULL; - processCASbits((yyvsp[0].ival), (yylsp[0]), "CHECK", + processCASbits((yyvsp[(5) - (5)].ival), (yylsp[(5) - (5)]), "CHECK", NULL, NULL, &n->skip_validation, &n->is_no_inherit, yyscanner); n->initially_valid = !n->skip_validation; (yyval.node) = (Node *)n; } -#line 26981 "gram.c" /* yacc.c:1646 */ break; - case 468: -#line 3285 "gram.y" /* yacc.c:1646 */ + case 500: +/* Line 1792 of yacc.c */ +#line 3599 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; - n->location = (yylsp[-6]); - n->keys = (yyvsp[-4].list); - n->options = (yyvsp[-2].list); + n->location = (yylsp[(1) - (7)]); + n->keys = (yyvsp[(3) - (7)].list); + n->options = (yyvsp[(5) - (7)].list); n->indexname = NULL; - n->indexspace = (yyvsp[-1].str); - processCASbits((yyvsp[0].ival), (yylsp[0]), "UNIQUE", + n->indexspace = (yyvsp[(6) - (7)].str); + processCASbits((yyvsp[(7) - (7)].ival), (yylsp[(7) - (7)]), "UNIQUE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 26999 "gram.c" /* yacc.c:1646 */ break; - case 469: -#line 3299 "gram.y" /* yacc.c:1646 */ + case 501: +/* Line 1792 of yacc.c */ +#line 3613 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; - n->location = (yylsp[-2]); + n->location = (yylsp[(1) - (3)]); n->keys = NIL; n->options = NIL; - n->indexname = (yyvsp[-1].str); + n->indexname = (yyvsp[(2) - (3)].str); n->indexspace = NULL; - processCASbits((yyvsp[0].ival), (yylsp[0]), "UNIQUE", + processCASbits((yyvsp[(3) - (3)].ival), (yylsp[(3) - (3)]), "UNIQUE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 27017 "gram.c" /* yacc.c:1646 */ break; - case 470: -#line 3314 "gram.y" /* yacc.c:1646 */ + case 502: +/* Line 1792 of yacc.c */ +#line 3628 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; - n->location = (yylsp[-7]); - n->keys = (yyvsp[-4].list); - n->options = (yyvsp[-2].list); + n->location = (yylsp[(1) - (8)]); + n->keys = (yyvsp[(4) - (8)].list); + n->options = (yyvsp[(6) - (8)].list); n->indexname = NULL; - n->indexspace = (yyvsp[-1].str); - processCASbits((yyvsp[0].ival), (yylsp[0]), "PRIMARY KEY", + n->indexspace = (yyvsp[(7) - (8)].str); + processCASbits((yyvsp[(8) - (8)].ival), (yylsp[(8) - (8)]), "PRIMARY KEY", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 27035 "gram.c" /* yacc.c:1646 */ break; - case 471: -#line 3328 "gram.y" /* yacc.c:1646 */ + case 503: +/* Line 1792 of yacc.c */ +#line 3642 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; - n->location = (yylsp[-3]); + n->location = (yylsp[(1) - (4)]); n->keys = NIL; n->options = NIL; - n->indexname = (yyvsp[-1].str); + n->indexname = (yyvsp[(3) - (4)].str); n->indexspace = NULL; - processCASbits((yyvsp[0].ival), (yylsp[0]), "PRIMARY KEY", + processCASbits((yyvsp[(4) - (4)].ival), (yylsp[(4) - (4)]), "PRIMARY KEY", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 27053 "gram.c" /* yacc.c:1646 */ break; - case 472: -#line 3344 "gram.y" /* yacc.c:1646 */ + case 504: +/* Line 1792 of yacc.c */ +#line 3658 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_EXCLUSION; - n->location = (yylsp[-8]); - n->access_method = (yyvsp[-7].str); - n->exclusions = (yyvsp[-5].list); - n->options = (yyvsp[-3].list); + n->location = (yylsp[(1) - (9)]); + n->access_method = (yyvsp[(2) - (9)].str); + n->exclusions = (yyvsp[(4) - (9)].list); + n->options = (yyvsp[(6) - (9)].list); n->indexname = NULL; - n->indexspace = (yyvsp[-2].str); - n->where_clause = (yyvsp[-1].node); - processCASbits((yyvsp[0].ival), (yylsp[0]), "EXCLUDE", + n->indexspace = (yyvsp[(7) - (9)].str); + n->where_clause = (yyvsp[(8) - (9)].node); + processCASbits((yyvsp[(9) - (9)].ival), (yylsp[(9) - (9)]), "EXCLUDE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 27073 "gram.c" /* yacc.c:1646 */ break; - case 473: -#line 3361 "gram.y" /* yacc.c:1646 */ + case 505: +/* Line 1792 of yacc.c */ +#line 3675 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_FOREIGN; - n->location = (yylsp[-10]); - n->pktable = (yyvsp[-4].range); - n->fk_attrs = (yyvsp[-7].list); - n->pk_attrs = (yyvsp[-3].list); - n->fk_matchtype = (yyvsp[-2].ival); - n->fk_upd_action = (char) ((yyvsp[-1].ival) >> 8); - n->fk_del_action = (char) ((yyvsp[-1].ival) & 0xFF); - processCASbits((yyvsp[0].ival), (yylsp[0]), "FOREIGN KEY", + n->location = (yylsp[(1) - (11)]); + n->pktable = (yyvsp[(7) - (11)].range); + n->fk_attrs = (yyvsp[(4) - (11)].list); + n->pk_attrs = (yyvsp[(8) - (11)].list); + n->fk_matchtype = (yyvsp[(9) - (11)].ival); + n->fk_upd_action = (char) ((yyvsp[(10) - (11)].ival) >> 8); + n->fk_del_action = (char) ((yyvsp[(10) - (11)].ival) & 0xFF); + processCASbits((yyvsp[(11) - (11)].ival), (yylsp[(11) - (11)]), "FOREIGN KEY", &n->deferrable, &n->initdeferred, &n->skip_validation, NULL, yyscanner); n->initially_valid = !n->skip_validation; (yyval.node) = (Node *)n; } -#line 27095 "gram.c" /* yacc.c:1646 */ break; - case 474: -#line 3380 "gram.y" /* yacc.c:1646 */ + case 506: +/* Line 1792 of yacc.c */ +#line 3694 "gram.y" { (yyval.boolean) = TRUE; } -#line 27101 "gram.c" /* yacc.c:1646 */ break; - case 475: -#line 3381 "gram.y" /* yacc.c:1646 */ + case 507: +/* Line 1792 of yacc.c */ +#line 3695 "gram.y" { (yyval.boolean) = FALSE; } -#line 27107 "gram.c" /* yacc.c:1646 */ break; - case 476: -#line 3385 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 27113 "gram.c" /* yacc.c:1646 */ + case 508: +/* Line 1792 of yacc.c */ +#line 3699 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 477: -#line 3386 "gram.y" /* yacc.c:1646 */ + case 509: +/* Line 1792 of yacc.c */ +#line 3700 "gram.y" { (yyval.list) = NIL; } -#line 27119 "gram.c" /* yacc.c:1646 */ break; - case 478: -#line 3390 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 27125 "gram.c" /* yacc.c:1646 */ + case 510: +/* Line 1792 of yacc.c */ +#line 3704 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 479: -#line 3391 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 27131 "gram.c" /* yacc.c:1646 */ + case 511: +/* Line 1792 of yacc.c */ +#line 3705 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 480: -#line 3395 "gram.y" /* yacc.c:1646 */ + case 512: +/* Line 1792 of yacc.c */ +#line 3709 "gram.y" { - (yyval.node) = (Node *) makeString((yyvsp[0].str)); + (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); } -#line 27139 "gram.c" /* yacc.c:1646 */ break; - case 481: -#line 3401 "gram.y" /* yacc.c:1646 */ + case 513: +/* Line 1792 of yacc.c */ +#line 3715 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_FULL; } -#line 27147 "gram.c" /* yacc.c:1646 */ break; - case 482: -#line 3405 "gram.y" /* yacc.c:1646 */ + case 514: +/* Line 1792 of yacc.c */ +#line 3719 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("MATCH PARTIAL not yet implemented"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = FKCONSTR_MATCH_PARTIAL; } -#line 27159 "gram.c" /* yacc.c:1646 */ break; - case 483: -#line 3413 "gram.y" /* yacc.c:1646 */ + case 515: +/* Line 1792 of yacc.c */ +#line 3727 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; } -#line 27167 "gram.c" /* yacc.c:1646 */ break; - case 484: -#line 3417 "gram.y" /* yacc.c:1646 */ + case 516: +/* Line 1792 of yacc.c */ +#line 3731 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; } -#line 27175 "gram.c" /* yacc.c:1646 */ break; - case 485: -#line 3423 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].list)); } -#line 27181 "gram.c" /* yacc.c:1646 */ + case 517: +/* Line 1792 of yacc.c */ +#line 3737 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); } break; - case 486: -#line 3425 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } -#line 27187 "gram.c" /* yacc.c:1646 */ + case 518: +/* Line 1792 of yacc.c */ +#line 3739 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; - case 487: -#line 3429 "gram.y" /* yacc.c:1646 */ + case 519: +/* Line 1792 of yacc.c */ +#line 3743 "gram.y" { - (yyval.list) = list_make2((yyvsp[-2].ielem), (yyvsp[0].list)); + (yyval.list) = list_make2((yyvsp[(1) - (3)].ielem), (yyvsp[(3) - (3)].list)); } -#line 27195 "gram.c" /* yacc.c:1646 */ break; - case 488: -#line 3434 "gram.y" /* yacc.c:1646 */ + case 520: +/* Line 1792 of yacc.c */ +#line 3748 "gram.y" { - (yyval.list) = list_make2((yyvsp[-5].ielem), (yyvsp[-1].list)); + (yyval.list) = list_make2((yyvsp[(1) - (6)].ielem), (yyvsp[(5) - (6)].list)); } -#line 27203 "gram.c" /* yacc.c:1646 */ break; - case 489: -#line 3440 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 27209 "gram.c" /* yacc.c:1646 */ + case 521: +/* Line 1792 of yacc.c */ +#line 3754 "gram.y" + { (yyval.node) = (yyvsp[(3) - (4)].node); } break; - case 490: -#line 3441 "gram.y" /* yacc.c:1646 */ + case 522: +/* Line 1792 of yacc.c */ +#line 3755 "gram.y" { (yyval.node) = NULL; } -#line 27215 "gram.c" /* yacc.c:1646 */ break; - case 491: -#line 3452 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = ((yyvsp[0].ival) << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } -#line 27221 "gram.c" /* yacc.c:1646 */ + case 523: +/* Line 1792 of yacc.c */ +#line 3766 "gram.y" + { (yyval.ival) = ((yyvsp[(1) - (1)].ival) << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } break; - case 492: -#line 3454 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[0].ival) & 0xFF); } -#line 27227 "gram.c" /* yacc.c:1646 */ + case 524: +/* Line 1792 of yacc.c */ +#line 3768 "gram.y" + { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[(1) - (1)].ival) & 0xFF); } break; - case 493: -#line 3456 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = ((yyvsp[-1].ival) << 8) | ((yyvsp[0].ival) & 0xFF); } -#line 27233 "gram.c" /* yacc.c:1646 */ + case 525: +/* Line 1792 of yacc.c */ +#line 3770 "gram.y" + { (yyval.ival) = ((yyvsp[(1) - (2)].ival) << 8) | ((yyvsp[(2) - (2)].ival) & 0xFF); } break; - case 494: -#line 3458 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = ((yyvsp[0].ival) << 8) | ((yyvsp[-1].ival) & 0xFF); } -#line 27239 "gram.c" /* yacc.c:1646 */ + case 526: +/* Line 1792 of yacc.c */ +#line 3772 "gram.y" + { (yyval.ival) = ((yyvsp[(2) - (2)].ival) << 8) | ((yyvsp[(1) - (2)].ival) & 0xFF); } break; - case 495: -#line 3460 "gram.y" /* yacc.c:1646 */ + case 527: +/* Line 1792 of yacc.c */ +#line 3774 "gram.y" { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } -#line 27245 "gram.c" /* yacc.c:1646 */ break; - case 496: -#line 3463 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 27251 "gram.c" /* yacc.c:1646 */ + case 528: +/* Line 1792 of yacc.c */ +#line 3777 "gram.y" + { (yyval.ival) = (yyvsp[(3) - (3)].ival); } break; - case 497: -#line 3466 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 27257 "gram.c" /* yacc.c:1646 */ + case 529: +/* Line 1792 of yacc.c */ +#line 3780 "gram.y" + { (yyval.ival) = (yyvsp[(3) - (3)].ival); } break; - case 498: -#line 3470 "gram.y" /* yacc.c:1646 */ + case 530: +/* Line 1792 of yacc.c */ +#line 3784 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_NOACTION; } -#line 27263 "gram.c" /* yacc.c:1646 */ break; - case 499: -#line 3471 "gram.y" /* yacc.c:1646 */ + case 531: +/* Line 1792 of yacc.c */ +#line 3785 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_RESTRICT; } -#line 27269 "gram.c" /* yacc.c:1646 */ break; - case 500: -#line 3472 "gram.y" /* yacc.c:1646 */ + case 532: +/* Line 1792 of yacc.c */ +#line 3786 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_CASCADE; } -#line 27275 "gram.c" /* yacc.c:1646 */ break; - case 501: -#line 3473 "gram.y" /* yacc.c:1646 */ + case 533: +/* Line 1792 of yacc.c */ +#line 3787 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_SETNULL; } -#line 27281 "gram.c" /* yacc.c:1646 */ break; - case 502: -#line 3474 "gram.y" /* yacc.c:1646 */ + case 534: +/* Line 1792 of yacc.c */ +#line 3788 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_SETDEFAULT; } -#line 27287 "gram.c" /* yacc.c:1646 */ break; - case 503: -#line 3477 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 27293 "gram.c" /* yacc.c:1646 */ + case 535: +/* Line 1792 of yacc.c */ +#line 3791 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; - case 504: -#line 3478 "gram.y" /* yacc.c:1646 */ + case 536: +/* Line 1792 of yacc.c */ +#line 3792 "gram.y" { (yyval.list) = NIL; } -#line 27299 "gram.c" /* yacc.c:1646 */ break; - case 505: -#line 3483 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 27305 "gram.c" /* yacc.c:1646 */ + case 537: +/* Line 1792 of yacc.c */ +#line 3796 "gram.y" + { (yyval.partspec) = (yyvsp[(1) - (1)].partspec); } break; - case 506: -#line 3484 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(defWithOids(true)); } -#line 27311 "gram.c" /* yacc.c:1646 */ + case 538: +/* Line 1792 of yacc.c */ +#line 3797 "gram.y" + { (yyval.partspec) = NULL; } break; - case 507: -#line 3485 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(defWithOids(false)); } -#line 27317 "gram.c" /* yacc.c:1646 */ + case 539: +/* Line 1792 of yacc.c */ +#line 3801 "gram.y" + { + PartitionSpec *n = makeNode(PartitionSpec); + + n->strategy = (yyvsp[(3) - (6)].str); + n->partParams = (yyvsp[(5) - (6)].list); + n->location = (yylsp[(1) - (6)]); + + (yyval.partspec) = n; + } break; - case 508: -#line 3486 "gram.y" /* yacc.c:1646 */ + case 540: +/* Line 1792 of yacc.c */ +#line 3812 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } + break; + + case 541: +/* Line 1792 of yacc.c */ +#line 3813 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } + break; + + case 542: +/* Line 1792 of yacc.c */ +#line 3816 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].partelem)); } + break; + + case 543: +/* Line 1792 of yacc.c */ +#line 3817 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].partelem)); } + break; + + case 544: +/* Line 1792 of yacc.c */ +#line 3821 "gram.y" + { + PartitionElem *n = makeNode(PartitionElem); + + n->name = (yyvsp[(1) - (3)].str); + n->expr = NULL; + n->collation = (yyvsp[(2) - (3)].list); + n->opclass = (yyvsp[(3) - (3)].list); + n->location = (yylsp[(1) - (3)]); + (yyval.partelem) = n; + } + break; + + case 545: +/* Line 1792 of yacc.c */ +#line 3832 "gram.y" + { + PartitionElem *n = makeNode(PartitionElem); + + n->name = NULL; + n->expr = (yyvsp[(1) - (3)].node); + n->collation = (yyvsp[(2) - (3)].list); + n->opclass = (yyvsp[(3) - (3)].list); + n->location = (yylsp[(1) - (3)]); + (yyval.partelem) = n; + } + break; + + case 546: +/* Line 1792 of yacc.c */ +#line 3843 "gram.y" + { + PartitionElem *n = makeNode(PartitionElem); + + n->name = NULL; + n->expr = (yyvsp[(2) - (5)].node); + n->collation = (yyvsp[(4) - (5)].list); + n->opclass = (yyvsp[(5) - (5)].list); + n->location = (yylsp[(1) - (5)]); + (yyval.partelem) = n; + } + break; + + case 547: +/* Line 1792 of yacc.c */ +#line 3856 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } + break; + + case 548: +/* Line 1792 of yacc.c */ +#line 3857 "gram.y" + { (yyval.list) = list_make1(makeDefElem("oids", (Node *) makeInteger(true), (yylsp[(1) - (2)]))); } + break; + + case 549: +/* Line 1792 of yacc.c */ +#line 3858 "gram.y" + { (yyval.list) = list_make1(makeDefElem("oids", (Node *) makeInteger(false), (yylsp[(1) - (2)]))); } + break; + + case 550: +/* Line 1792 of yacc.c */ +#line 3859 "gram.y" { (yyval.list) = NIL; } -#line 27323 "gram.c" /* yacc.c:1646 */ break; - case 509: -#line 3489 "gram.y" /* yacc.c:1646 */ + case 551: +/* Line 1792 of yacc.c */ +#line 3862 "gram.y" { (yyval.oncommit) = ONCOMMIT_DROP; } -#line 27329 "gram.c" /* yacc.c:1646 */ break; - case 510: -#line 3490 "gram.y" /* yacc.c:1646 */ + case 552: +/* Line 1792 of yacc.c */ +#line 3863 "gram.y" { (yyval.oncommit) = ONCOMMIT_DELETE_ROWS; } -#line 27335 "gram.c" /* yacc.c:1646 */ break; - case 511: -#line 3491 "gram.y" /* yacc.c:1646 */ + case 553: +/* Line 1792 of yacc.c */ +#line 3864 "gram.y" { (yyval.oncommit) = ONCOMMIT_PRESERVE_ROWS; } -#line 27341 "gram.c" /* yacc.c:1646 */ break; - case 512: -#line 3492 "gram.y" /* yacc.c:1646 */ + case 554: +/* Line 1792 of yacc.c */ +#line 3865 "gram.y" { (yyval.oncommit) = ONCOMMIT_NOOP; } -#line 27347 "gram.c" /* yacc.c:1646 */ break; - case 513: -#line 3495 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 27353 "gram.c" /* yacc.c:1646 */ + case 555: +/* Line 1792 of yacc.c */ +#line 3868 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; - case 514: -#line 3496 "gram.y" /* yacc.c:1646 */ + case 556: +/* Line 1792 of yacc.c */ +#line 3869 "gram.y" { (yyval.str) = NULL; } -#line 27359 "gram.c" /* yacc.c:1646 */ break; - case 515: -#line 3499 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 27365 "gram.c" /* yacc.c:1646 */ + case 557: +/* Line 1792 of yacc.c */ +#line 3872 "gram.y" + { (yyval.str) = (yyvsp[(4) - (4)].str); } break; - case 516: -#line 3500 "gram.y" /* yacc.c:1646 */ + case 558: +/* Line 1792 of yacc.c */ +#line 3873 "gram.y" { (yyval.str) = NULL; } -#line 27371 "gram.c" /* yacc.c:1646 */ break; - case 517: -#line 3503 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 27377 "gram.c" /* yacc.c:1646 */ + case 559: +/* Line 1792 of yacc.c */ +#line 3876 "gram.y" + { (yyval.str) = (yyvsp[(3) - (3)].str); } break; - case 518: -#line 3519 "gram.y" /* yacc.c:1646 */ + case 560: +/* Line 1792 of yacc.c */ +#line 3896 "gram.y" + { + CreateStatsStmt *n = makeNode(CreateStatsStmt); + n->defnames = (yyvsp[(3) - (8)].list); + n->stat_types = (yyvsp[(4) - (8)].list); + n->exprs = (yyvsp[(6) - (8)].list); + n->relations = (yyvsp[(8) - (8)].list); + n->if_not_exists = false; + (yyval.node) = (Node *)n; + } + break; + + case 561: +/* Line 1792 of yacc.c */ +#line 3907 "gram.y" + { + CreateStatsStmt *n = makeNode(CreateStatsStmt); + n->defnames = (yyvsp[(6) - (11)].list); + n->stat_types = (yyvsp[(7) - (11)].list); + n->exprs = (yyvsp[(9) - (11)].list); + n->relations = (yyvsp[(11) - (11)].list); + n->if_not_exists = true; + (yyval.node) = (Node *)n; + } + break; + + case 562: +/* Line 1792 of yacc.c */ +#line 3930 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); - ctas->query = (yyvsp[-1].node); - ctas->into = (yyvsp[-3].into); + ctas->query = (yyvsp[(6) - (7)].node); + ctas->into = (yyvsp[(4) - (7)].into); ctas->relkind = OBJECT_TABLE; ctas->is_select_into = false; ctas->if_not_exists = false; /* cram additional flags into the IntoClause */ - (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-5].ival); - (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyvsp[(4) - (7)].into)->rel->relpersistence = (yyvsp[(2) - (7)].ival); + (yyvsp[(4) - (7)].into)->skipData = !((yyvsp[(7) - (7)].boolean)); (yyval.node) = (Node *) ctas; } -#line 27394 "gram.c" /* yacc.c:1646 */ break; - case 519: -#line 3532 "gram.y" /* yacc.c:1646 */ + case 563: +/* Line 1792 of yacc.c */ +#line 3943 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); - ctas->query = (yyvsp[-1].node); - ctas->into = (yyvsp[-3].into); + ctas->query = (yyvsp[(9) - (10)].node); + ctas->into = (yyvsp[(7) - (10)].into); ctas->relkind = OBJECT_TABLE; ctas->is_select_into = false; ctas->if_not_exists = true; /* cram additional flags into the IntoClause */ - (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-8].ival); - (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyvsp[(7) - (10)].into)->rel->relpersistence = (yyvsp[(2) - (10)].ival); + (yyvsp[(7) - (10)].into)->skipData = !((yyvsp[(10) - (10)].boolean)); (yyval.node) = (Node *) ctas; } -#line 27411 "gram.c" /* yacc.c:1646 */ break; - case 520: -#line 3548 "gram.y" /* yacc.c:1646 */ + case 564: +/* Line 1792 of yacc.c */ +#line 3959 "gram.y" { (yyval.into) = makeNode(IntoClause); - (yyval.into)->rel = (yyvsp[-4].range); - (yyval.into)->colNames = (yyvsp[-3].list); - (yyval.into)->options = (yyvsp[-2].list); - (yyval.into)->onCommit = (yyvsp[-1].oncommit); - (yyval.into)->tableSpaceName = (yyvsp[0].str); + (yyval.into)->rel = (yyvsp[(1) - (5)].range); + (yyval.into)->colNames = (yyvsp[(2) - (5)].list); + (yyval.into)->options = (yyvsp[(3) - (5)].list); + (yyval.into)->onCommit = (yyvsp[(4) - (5)].oncommit); + (yyval.into)->tableSpaceName = (yyvsp[(5) - (5)].str); (yyval.into)->viewQuery = NULL; (yyval.into)->skipData = false; /* might get changed later */ } -#line 27426 "gram.c" /* yacc.c:1646 */ break; - case 521: -#line 3561 "gram.y" /* yacc.c:1646 */ + case 565: +/* Line 1792 of yacc.c */ +#line 3972 "gram.y" { (yyval.boolean) = TRUE; } -#line 27432 "gram.c" /* yacc.c:1646 */ break; - case 522: -#line 3562 "gram.y" /* yacc.c:1646 */ + case 566: +/* Line 1792 of yacc.c */ +#line 3973 "gram.y" { (yyval.boolean) = FALSE; } -#line 27438 "gram.c" /* yacc.c:1646 */ break; - case 523: -#line 3563 "gram.y" /* yacc.c:1646 */ + case 567: +/* Line 1792 of yacc.c */ +#line 3974 "gram.y" { (yyval.boolean) = TRUE; } -#line 27444 "gram.c" /* yacc.c:1646 */ break; - case 524: -#line 3576 "gram.y" /* yacc.c:1646 */ + case 568: +/* Line 1792 of yacc.c */ +#line 3987 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); - ctas->query = (yyvsp[-1].node); - ctas->into = (yyvsp[-3].into); + ctas->query = (yyvsp[(7) - (8)].node); + ctas->into = (yyvsp[(5) - (8)].into); ctas->relkind = OBJECT_MATVIEW; ctas->is_select_into = false; ctas->if_not_exists = false; /* cram additional flags into the IntoClause */ - (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-6].ival); - (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyvsp[(5) - (8)].into)->rel->relpersistence = (yyvsp[(2) - (8)].ival); + (yyvsp[(5) - (8)].into)->skipData = !((yyvsp[(8) - (8)].boolean)); (yyval.node) = (Node *) ctas; } -#line 27461 "gram.c" /* yacc.c:1646 */ break; - case 525: -#line 3589 "gram.y" /* yacc.c:1646 */ + case 569: +/* Line 1792 of yacc.c */ +#line 4000 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); - ctas->query = (yyvsp[-1].node); - ctas->into = (yyvsp[-3].into); + ctas->query = (yyvsp[(10) - (11)].node); + ctas->into = (yyvsp[(8) - (11)].into); ctas->relkind = OBJECT_MATVIEW; ctas->is_select_into = false; ctas->if_not_exists = true; /* cram additional flags into the IntoClause */ - (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-9].ival); - (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyvsp[(8) - (11)].into)->rel->relpersistence = (yyvsp[(2) - (11)].ival); + (yyvsp[(8) - (11)].into)->skipData = !((yyvsp[(11) - (11)].boolean)); (yyval.node) = (Node *) ctas; } -#line 27478 "gram.c" /* yacc.c:1646 */ break; - case 526: -#line 3605 "gram.y" /* yacc.c:1646 */ + case 570: +/* Line 1792 of yacc.c */ +#line 4016 "gram.y" { (yyval.into) = makeNode(IntoClause); - (yyval.into)->rel = (yyvsp[-3].range); - (yyval.into)->colNames = (yyvsp[-2].list); - (yyval.into)->options = (yyvsp[-1].list); + (yyval.into)->rel = (yyvsp[(1) - (4)].range); + (yyval.into)->colNames = (yyvsp[(2) - (4)].list); + (yyval.into)->options = (yyvsp[(3) - (4)].list); (yyval.into)->onCommit = ONCOMMIT_NOOP; - (yyval.into)->tableSpaceName = (yyvsp[0].str); + (yyval.into)->tableSpaceName = (yyvsp[(4) - (4)].str); (yyval.into)->viewQuery = NULL; /* filled at analysis time */ (yyval.into)->skipData = false; /* might get changed later */ } -#line 27493 "gram.c" /* yacc.c:1646 */ break; - case 527: -#line 3617 "gram.y" /* yacc.c:1646 */ + case 571: +/* Line 1792 of yacc.c */ +#line 4028 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; } -#line 27499 "gram.c" /* yacc.c:1646 */ break; - case 528: -#line 3618 "gram.y" /* yacc.c:1646 */ + case 572: +/* Line 1792 of yacc.c */ +#line 4029 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; } -#line 27505 "gram.c" /* yacc.c:1646 */ break; - case 529: -#line 3631 "gram.y" /* yacc.c:1646 */ + case 573: +/* Line 1792 of yacc.c */ +#line 4042 "gram.y" { RefreshMatViewStmt *n = makeNode(RefreshMatViewStmt); - n->concurrent = (yyvsp[-2].boolean); - n->relation = (yyvsp[-1].range); - n->skipData = !((yyvsp[0].boolean)); + n->concurrent = (yyvsp[(4) - (6)].boolean); + n->relation = (yyvsp[(5) - (6)].range); + n->skipData = !((yyvsp[(6) - (6)].boolean)); (yyval.node) = (Node *) n; } -#line 27517 "gram.c" /* yacc.c:1646 */ break; - case 530: -#line 3651 "gram.y" /* yacc.c:1646 */ + case 574: +/* Line 1792 of yacc.c */ +#line 4062 "gram.y" { CreateSeqStmt *n = makeNode(CreateSeqStmt); - (yyvsp[-1].range)->relpersistence = (yyvsp[-3].ival); - n->sequence = (yyvsp[-1].range); - n->options = (yyvsp[0].list); + (yyvsp[(4) - (5)].range)->relpersistence = (yyvsp[(2) - (5)].ival); + n->sequence = (yyvsp[(4) - (5)].range); + n->options = (yyvsp[(5) - (5)].list); n->ownerId = InvalidOid; n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 27531 "gram.c" /* yacc.c:1646 */ break; - case 531: -#line 3661 "gram.y" /* yacc.c:1646 */ + case 575: +/* Line 1792 of yacc.c */ +#line 4072 "gram.y" { CreateSeqStmt *n = makeNode(CreateSeqStmt); - (yyvsp[-1].range)->relpersistence = (yyvsp[-6].ival); - n->sequence = (yyvsp[-1].range); - n->options = (yyvsp[0].list); + (yyvsp[(7) - (8)].range)->relpersistence = (yyvsp[(2) - (8)].ival); + n->sequence = (yyvsp[(7) - (8)].range); + n->options = (yyvsp[(8) - (8)].list); n->ownerId = InvalidOid; n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 27545 "gram.c" /* yacc.c:1646 */ break; - case 532: -#line 3674 "gram.y" /* yacc.c:1646 */ + case 576: +/* Line 1792 of yacc.c */ +#line 4085 "gram.y" { AlterSeqStmt *n = makeNode(AlterSeqStmt); - n->sequence = (yyvsp[-1].range); - n->options = (yyvsp[0].list); + n->sequence = (yyvsp[(3) - (4)].range); + n->options = (yyvsp[(4) - (4)].list); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 27557 "gram.c" /* yacc.c:1646 */ break; - case 533: -#line 3682 "gram.y" /* yacc.c:1646 */ + case 577: +/* Line 1792 of yacc.c */ +#line 4093 "gram.y" { AlterSeqStmt *n = makeNode(AlterSeqStmt); - n->sequence = (yyvsp[-1].range); - n->options = (yyvsp[0].list); + n->sequence = (yyvsp[(5) - (6)].range); + n->options = (yyvsp[(6) - (6)].list); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 27569 "gram.c" /* yacc.c:1646 */ break; - case 534: -#line 3692 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 27575 "gram.c" /* yacc.c:1646 */ + case 578: +/* Line 1792 of yacc.c */ +#line 4103 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 535: -#line 3693 "gram.y" /* yacc.c:1646 */ + case 579: +/* Line 1792 of yacc.c */ +#line 4104 "gram.y" { (yyval.list) = NIL; } -#line 27581 "gram.c" /* yacc.c:1646 */ break; - case 536: -#line 3696 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 27587 "gram.c" /* yacc.c:1646 */ + case 580: +/* Line 1792 of yacc.c */ +#line 4107 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 537: -#line 3697 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 27593 "gram.c" /* yacc.c:1646 */ + case 581: +/* Line 1792 of yacc.c */ +#line 4108 "gram.y" + { (yyval.list) = NIL; } break; - case 538: -#line 3701 "gram.y" /* yacc.c:1646 */ + case 582: +/* Line 1792 of yacc.c */ +#line 4111 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } + break; + + case 583: +/* Line 1792 of yacc.c */ +#line 4112 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } + break; + + case 584: +/* Line 1792 of yacc.c */ +#line 4116 "gram.y" { - (yyval.defelt) = makeDefElem("cache", (Node *)(yyvsp[0].value)); + (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[(2) - (2)].typnam), (yylsp[(1) - (2)])); } -#line 27601 "gram.c" /* yacc.c:1646 */ break; - case 539: -#line 3705 "gram.y" /* yacc.c:1646 */ + case 585: +/* Line 1792 of yacc.c */ +#line 4120 "gram.y" { - (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("cache", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); } -#line 27609 "gram.c" /* yacc.c:1646 */ break; - case 540: -#line 3709 "gram.y" /* yacc.c:1646 */ + case 586: +/* Line 1792 of yacc.c */ +#line 4124 "gram.y" { - (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(FALSE)); + (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 27617 "gram.c" /* yacc.c:1646 */ break; - case 541: -#line 3713 "gram.y" /* yacc.c:1646 */ + case 587: +/* Line 1792 of yacc.c */ +#line 4128 "gram.y" { - (yyval.defelt) = makeDefElem("increment", (Node *)(yyvsp[0].value)); + (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(FALSE), (yylsp[(1) - (2)])); } -#line 27625 "gram.c" /* yacc.c:1646 */ break; - case 542: -#line 3717 "gram.y" /* yacc.c:1646 */ + case 588: +/* Line 1792 of yacc.c */ +#line 4132 "gram.y" { - (yyval.defelt) = makeDefElem("maxvalue", (Node *)(yyvsp[0].value)); + (yyval.defelt) = makeDefElem("increment", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); } -#line 27633 "gram.c" /* yacc.c:1646 */ break; - case 543: -#line 3721 "gram.y" /* yacc.c:1646 */ + case 589: +/* Line 1792 of yacc.c */ +#line 4136 "gram.y" { - (yyval.defelt) = makeDefElem("minvalue", (Node *)(yyvsp[0].value)); + (yyval.defelt) = makeDefElem("maxvalue", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); } -#line 27641 "gram.c" /* yacc.c:1646 */ break; - case 544: -#line 3725 "gram.y" /* yacc.c:1646 */ + case 590: +/* Line 1792 of yacc.c */ +#line 4140 "gram.y" { - (yyval.defelt) = makeDefElem("maxvalue", NULL); + (yyval.defelt) = makeDefElem("minvalue", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); } -#line 27649 "gram.c" /* yacc.c:1646 */ break; - case 545: -#line 3729 "gram.y" /* yacc.c:1646 */ + case 591: +/* Line 1792 of yacc.c */ +#line 4144 "gram.y" { - (yyval.defelt) = makeDefElem("minvalue", NULL); + (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[(1) - (2)])); } -#line 27657 "gram.c" /* yacc.c:1646 */ break; - case 546: -#line 3733 "gram.y" /* yacc.c:1646 */ + case 592: +/* Line 1792 of yacc.c */ +#line 4148 "gram.y" { - (yyval.defelt) = makeDefElem("owned_by", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[(1) - (2)])); } -#line 27665 "gram.c" /* yacc.c:1646 */ break; - case 547: -#line 3737 "gram.y" /* yacc.c:1646 */ + case 593: +/* Line 1792 of yacc.c */ +#line 4152 "gram.y" { - (yyval.defelt) = makeDefElem("start", (Node *)(yyvsp[0].value)); + (yyval.defelt) = makeDefElem("owned_by", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 27673 "gram.c" /* yacc.c:1646 */ break; - case 548: -#line 3741 "gram.y" /* yacc.c:1646 */ + case 594: +/* Line 1792 of yacc.c */ +#line 4156 "gram.y" { - (yyval.defelt) = makeDefElem("restart", NULL); + /* not documented, only used by pg_dump */ + (yyval.defelt) = makeDefElem("sequence_name", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 27681 "gram.c" /* yacc.c:1646 */ break; - case 549: -#line 3745 "gram.y" /* yacc.c:1646 */ + case 595: +/* Line 1792 of yacc.c */ +#line 4161 "gram.y" { - (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[0].value)); + (yyval.defelt) = makeDefElem("start", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); } -#line 27689 "gram.c" /* yacc.c:1646 */ break; - case 550: -#line 3750 "gram.y" /* yacc.c:1646 */ + case 596: +/* Line 1792 of yacc.c */ +#line 4165 "gram.y" + { + (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); + } + break; + + case 597: +/* Line 1792 of yacc.c */ +#line 4169 "gram.y" + { + (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); + } + break; + + case 598: +/* Line 1792 of yacc.c */ +#line 4174 "gram.y" {} -#line 27695 "gram.c" /* yacc.c:1646 */ break; - case 551: -#line 3751 "gram.y" /* yacc.c:1646 */ + case 599: +/* Line 1792 of yacc.c */ +#line 4175 "gram.y" {} -#line 27701 "gram.c" /* yacc.c:1646 */ break; - case 552: -#line 3755 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeFloat((yyvsp[0].str)); } -#line 27707 "gram.c" /* yacc.c:1646 */ + case 600: +/* Line 1792 of yacc.c */ +#line 4179 "gram.y" + { (yyval.value) = makeFloat((yyvsp[(1) - (1)].str)); } break; - case 553: -#line 3757 "gram.y" /* yacc.c:1646 */ + case 601: +/* Line 1792 of yacc.c */ +#line 4180 "gram.y" + { (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); } + break; + + case 602: +/* Line 1792 of yacc.c */ +#line 4182 "gram.y" { - (yyval.value) = makeFloat((yyvsp[0].str)); + (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); doNegateFloat((yyval.value)); } -#line 27716 "gram.c" /* yacc.c:1646 */ break; - case 554: -#line 3761 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeInteger((yyvsp[0].ival)); } -#line 27722 "gram.c" /* yacc.c:1646 */ + case 603: +/* Line 1792 of yacc.c */ +#line 4186 "gram.y" + { (yyval.value) = makeInteger((yyvsp[(1) - (1)].ival)); } break; - case 555: -#line 3764 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].value)); } -#line 27728 "gram.c" /* yacc.c:1646 */ + case 604: +/* Line 1792 of yacc.c */ +#line 4189 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); } break; - case 556: -#line 3765 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].value)); } -#line 27734 "gram.c" /* yacc.c:1646 */ + case 605: +/* Line 1792 of yacc.c */ +#line 4190 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); } break; - case 557: -#line 3778 "gram.y" /* yacc.c:1646 */ + case 606: +/* Line 1792 of yacc.c */ +#line 4203 "gram.y" { CreatePLangStmt *n = makeNode(CreatePLangStmt); - n->replace = (yyvsp[-4].boolean); - n->plname = (yyvsp[0].str); + n->replace = (yyvsp[(2) - (6)].boolean); + n->plname = (yyvsp[(6) - (6)].str); /* parameters are all to be supplied by system */ n->plhandler = NIL; n->plinline = NIL; @@ -27746,943 +30758,951 @@ yyreduce: n->pltrusted = false; (yyval.node) = (Node *)n; } -#line 27750 "gram.c" /* yacc.c:1646 */ break; - case 558: -#line 3791 "gram.y" /* yacc.c:1646 */ + case 607: +/* Line 1792 of yacc.c */ +#line 4216 "gram.y" { CreatePLangStmt *n = makeNode(CreatePLangStmt); - n->replace = (yyvsp[-8].boolean); - n->plname = (yyvsp[-4].str); - n->plhandler = (yyvsp[-2].list); - n->plinline = (yyvsp[-1].list); - n->plvalidator = (yyvsp[0].list); - n->pltrusted = (yyvsp[-7].boolean); + n->replace = (yyvsp[(2) - (10)].boolean); + n->plname = (yyvsp[(6) - (10)].str); + n->plhandler = (yyvsp[(8) - (10)].list); + n->plinline = (yyvsp[(9) - (10)].list); + n->plvalidator = (yyvsp[(10) - (10)].list); + n->pltrusted = (yyvsp[(3) - (10)].boolean); (yyval.node) = (Node *)n; } -#line 27765 "gram.c" /* yacc.c:1646 */ break; - case 559: -#line 3804 "gram.y" /* yacc.c:1646 */ + case 608: +/* Line 1792 of yacc.c */ +#line 4229 "gram.y" { (yyval.boolean) = TRUE; } -#line 27771 "gram.c" /* yacc.c:1646 */ break; - case 560: -#line 3805 "gram.y" /* yacc.c:1646 */ + case 609: +/* Line 1792 of yacc.c */ +#line 4230 "gram.y" { (yyval.boolean) = FALSE; } -#line 27777 "gram.c" /* yacc.c:1646 */ break; - case 561: -#line 3813 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 27783 "gram.c" /* yacc.c:1646 */ + case 610: +/* Line 1792 of yacc.c */ +#line 4238 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; - case 562: -#line 3814 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)); } -#line 27789 "gram.c" /* yacc.c:1646 */ + case 611: +/* Line 1792 of yacc.c */ +#line 4239 "gram.y" + { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); } break; - case 563: -#line 3818 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 27795 "gram.c" /* yacc.c:1646 */ + case 612: +/* Line 1792 of yacc.c */ +#line 4243 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 564: -#line 3819 "gram.y" /* yacc.c:1646 */ + case 613: +/* Line 1792 of yacc.c */ +#line 4244 "gram.y" { (yyval.list) = NIL; } -#line 27801 "gram.c" /* yacc.c:1646 */ break; - case 565: -#line 3823 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 27807 "gram.c" /* yacc.c:1646 */ + case 614: +/* Line 1792 of yacc.c */ +#line 4248 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 566: -#line 3824 "gram.y" /* yacc.c:1646 */ + case 615: +/* Line 1792 of yacc.c */ +#line 4249 "gram.y" { (yyval.list) = NIL; } -#line 27813 "gram.c" /* yacc.c:1646 */ break; - case 567: -#line 3828 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 27819 "gram.c" /* yacc.c:1646 */ + case 616: +/* Line 1792 of yacc.c */ +#line 4253 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 568: -#line 3829 "gram.y" /* yacc.c:1646 */ + case 617: +/* Line 1792 of yacc.c */ +#line 4254 "gram.y" { (yyval.list) = NIL; } -#line 27825 "gram.c" /* yacc.c:1646 */ break; - case 569: -#line 3834 "gram.y" /* yacc.c:1646 */ + case 618: +/* Line 1792 of yacc.c */ +#line 4259 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_LANGUAGE; - n->objects = list_make1(list_make1(makeString((yyvsp[-1].str)))); - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); + n->objects = list_make1(makeString((yyvsp[(4) - (5)].str))); + n->behavior = (yyvsp[(5) - (5)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 27840 "gram.c" /* yacc.c:1646 */ break; - case 570: -#line 3845 "gram.y" /* yacc.c:1646 */ + case 619: +/* Line 1792 of yacc.c */ +#line 4269 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_LANGUAGE; - n->objects = list_make1(list_make1(makeString((yyvsp[-1].str)))); - n->behavior = (yyvsp[0].dbehavior); + n->objects = list_make1(makeString((yyvsp[(6) - (7)].str))); + n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 27854 "gram.c" /* yacc.c:1646 */ break; - case 571: -#line 3857 "gram.y" /* yacc.c:1646 */ + case 620: +/* Line 1792 of yacc.c */ +#line 4281 "gram.y" {} -#line 27860 "gram.c" /* yacc.c:1646 */ break; - case 572: -#line 3858 "gram.y" /* yacc.c:1646 */ + case 621: +/* Line 1792 of yacc.c */ +#line 4282 "gram.y" {} -#line 27866 "gram.c" /* yacc.c:1646 */ break; - case 573: -#line 3869 "gram.y" /* yacc.c:1646 */ + case 622: +/* Line 1792 of yacc.c */ +#line 4293 "gram.y" { CreateTableSpaceStmt *n = makeNode(CreateTableSpaceStmt); - n->tablespacename = (yyvsp[-4].str); - n->owner = (yyvsp[-3].node); - n->location = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->tablespacename = (yyvsp[(3) - (7)].str); + n->owner = (yyvsp[(4) - (7)].rolespec); + n->location = (yyvsp[(6) - (7)].str); + n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *) n; } -#line 27879 "gram.c" /* yacc.c:1646 */ break; - case 574: -#line 3879 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 27885 "gram.c" /* yacc.c:1646 */ + case 623: +/* Line 1792 of yacc.c */ +#line 4303 "gram.y" + { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); } break; - case 575: -#line 3880 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = NULL; } -#line 27891 "gram.c" /* yacc.c:1646 */ + case 624: +/* Line 1792 of yacc.c */ +#line 4304 "gram.y" + { (yyval.rolespec) = NULL; } break; - case 576: -#line 3894 "gram.y" /* yacc.c:1646 */ + case 625: +/* Line 1792 of yacc.c */ +#line 4318 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); - n->tablespacename = (yyvsp[0].str); + n->tablespacename = (yyvsp[(3) - (3)].str); n->missing_ok = false; (yyval.node) = (Node *) n; } -#line 27902 "gram.c" /* yacc.c:1646 */ break; - case 577: -#line 3901 "gram.y" /* yacc.c:1646 */ + case 626: +/* Line 1792 of yacc.c */ +#line 4325 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); - n->tablespacename = (yyvsp[0].str); + n->tablespacename = (yyvsp[(5) - (5)].str); n->missing_ok = true; (yyval.node) = (Node *) n; } -#line 27913 "gram.c" /* yacc.c:1646 */ break; - case 578: -#line 3918 "gram.y" /* yacc.c:1646 */ + case 627: +/* Line 1792 of yacc.c */ +#line 4342 "gram.y" { CreateExtensionStmt *n = makeNode(CreateExtensionStmt); - n->extname = (yyvsp[-2].str); + n->extname = (yyvsp[(3) - (5)].str); n->if_not_exists = false; - n->options = (yyvsp[0].list); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; } -#line 27925 "gram.c" /* yacc.c:1646 */ break; - case 579: -#line 3926 "gram.y" /* yacc.c:1646 */ + case 628: +/* Line 1792 of yacc.c */ +#line 4350 "gram.y" { CreateExtensionStmt *n = makeNode(CreateExtensionStmt); - n->extname = (yyvsp[-2].str); + n->extname = (yyvsp[(6) - (8)].str); n->if_not_exists = true; - n->options = (yyvsp[0].list); + n->options = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; } -#line 27937 "gram.c" /* yacc.c:1646 */ break; - case 580: -#line 3937 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 27943 "gram.c" /* yacc.c:1646 */ + case 629: +/* Line 1792 of yacc.c */ +#line 4361 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; - case 581: -#line 3939 "gram.y" /* yacc.c:1646 */ + case 630: +/* Line 1792 of yacc.c */ +#line 4363 "gram.y" { (yyval.list) = NIL; } -#line 27949 "gram.c" /* yacc.c:1646 */ break; - case 582: -#line 3944 "gram.y" /* yacc.c:1646 */ + case 631: +/* Line 1792 of yacc.c */ +#line 4368 "gram.y" { - (yyval.defelt) = makeDefElem("schema", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("schema", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 27957 "gram.c" /* yacc.c:1646 */ break; - case 583: -#line 3948 "gram.y" /* yacc.c:1646 */ + case 632: +/* Line 1792 of yacc.c */ +#line 4372 "gram.y" { - (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 27965 "gram.c" /* yacc.c:1646 */ break; - case 584: -#line 3952 "gram.y" /* yacc.c:1646 */ + case 633: +/* Line 1792 of yacc.c */ +#line 4376 "gram.y" { - (yyval.defelt) = makeDefElem("old_version", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("old_version", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 27973 "gram.c" /* yacc.c:1646 */ break; - case 585: -#line 3956 "gram.y" /* yacc.c:1646 */ + case 634: +/* Line 1792 of yacc.c */ +#line 4380 "gram.y" { - (yyval.defelt) = makeDefElem("cascade", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("cascade", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 27981 "gram.c" /* yacc.c:1646 */ break; - case 586: -#line 3968 "gram.y" /* yacc.c:1646 */ + case 635: +/* Line 1792 of yacc.c */ +#line 4392 "gram.y" { AlterExtensionStmt *n = makeNode(AlterExtensionStmt); - n->extname = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->extname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; } -#line 27992 "gram.c" /* yacc.c:1646 */ break; - case 587: -#line 3978 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 27998 "gram.c" /* yacc.c:1646 */ + case 636: +/* Line 1792 of yacc.c */ +#line 4402 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; - case 588: -#line 3980 "gram.y" /* yacc.c:1646 */ + case 637: +/* Line 1792 of yacc.c */ +#line 4404 "gram.y" { (yyval.list) = NIL; } -#line 28004 "gram.c" /* yacc.c:1646 */ break; - case 589: -#line 3985 "gram.y" /* yacc.c:1646 */ + case 638: +/* Line 1792 of yacc.c */ +#line 4409 "gram.y" { - (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 28012 "gram.c" /* yacc.c:1646 */ break; - case 590: -#line 3998 "gram.y" /* yacc.c:1646 */ + case 639: +/* Line 1792 of yacc.c */ +#line 4422 "gram.y" + { + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); + n->extname = (yyvsp[(3) - (7)].str); + n->action = (yyvsp[(4) - (7)].ival); + n->objtype = OBJECT_ACCESS_METHOD; + n->object = (Node *) makeString((yyvsp[(7) - (7)].str)); + (yyval.node) = (Node *)n; + } + break; + + case 640: +/* Line 1792 of yacc.c */ +#line 4431 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-4].str); - n->action = (yyvsp[-3].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_AGGREGATE; - n->objname = (yyvsp[-1].list); - n->objargs = extractAggrArgTypes((yyvsp[0].list)); + n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); (yyval.node) = (Node *)n; } -#line 28026 "gram.c" /* yacc.c:1646 */ break; - case 591: -#line 4008 "gram.y" /* yacc.c:1646 */ + case 641: +/* Line 1792 of yacc.c */ +#line 4440 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-7].str); - n->action = (yyvsp[-6].ival); + n->extname = (yyvsp[(3) - (10)].str); + n->action = (yyvsp[(4) - (10)].ival); n->objtype = OBJECT_CAST; - n->objname = list_make1((yyvsp[-3].typnam)); - n->objargs = list_make1((yyvsp[-1].typnam)); + n->object = (Node *) list_make2((yyvsp[(7) - (10)].typnam), (yyvsp[(9) - (10)].typnam)); (yyval.node) = (Node *) n; } -#line 28040 "gram.c" /* yacc.c:1646 */ break; - case 592: -#line 4018 "gram.y" /* yacc.c:1646 */ + case 642: +/* Line 1792 of yacc.c */ +#line 4449 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_COLLATION; - n->objname = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 28053 "gram.c" /* yacc.c:1646 */ break; - case 593: -#line 4027 "gram.y" /* yacc.c:1646 */ + case 643: +/* Line 1792 of yacc.c */ +#line 4458 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_CONVERSION; - n->objname = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 28066 "gram.c" /* yacc.c:1646 */ break; - case 594: -#line 4036 "gram.y" /* yacc.c:1646 */ + case 644: +/* Line 1792 of yacc.c */ +#line 4467 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_DOMAIN; - n->objname = list_make1((yyvsp[0].typnam)); + n->object = (Node *) (yyvsp[(6) - (6)].typnam); (yyval.node) = (Node *)n; } -#line 28079 "gram.c" /* yacc.c:1646 */ break; - case 595: -#line 4045 "gram.y" /* yacc.c:1646 */ + case 645: +/* Line 1792 of yacc.c */ +#line 4476 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_FUNCTION; - n->objname = (yyvsp[0].funwithargs)->funcname; - n->objargs = (yyvsp[0].funwithargs)->funcargs; + n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); (yyval.node) = (Node *)n; } -#line 28093 "gram.c" /* yacc.c:1646 */ break; - case 596: -#line 4055 "gram.y" /* yacc.c:1646 */ + case 646: +/* Line 1792 of yacc.c */ +#line 4485 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-4].str); - n->action = (yyvsp[-3].ival); + n->extname = (yyvsp[(3) - (7)].str); + n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_LANGUAGE; - n->objname = list_make1(makeString((yyvsp[0].str))); + n->object = (Node *) makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; } -#line 28106 "gram.c" /* yacc.c:1646 */ break; - case 597: -#line 4064 "gram.y" /* yacc.c:1646 */ + case 647: +/* Line 1792 of yacc.c */ +#line 4494 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-4].str); - n->action = (yyvsp[-3].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_OPERATOR; - n->objname = (yyvsp[-1].list); - n->objargs = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); (yyval.node) = (Node *)n; } -#line 28120 "gram.c" /* yacc.c:1646 */ break; - case 598: -#line 4074 "gram.y" /* yacc.c:1646 */ + case 648: +/* Line 1792 of yacc.c */ +#line 4503 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-6].str); - n->action = (yyvsp[-5].ival); + n->extname = (yyvsp[(3) - (9)].str); + n->action = (yyvsp[(4) - (9)].ival); n->objtype = OBJECT_OPCLASS; - n->objname = lcons(makeString((yyvsp[0].str)), (yyvsp[-2].list)); + n->object = (Node *) lcons(makeString((yyvsp[(9) - (9)].str)), (yyvsp[(7) - (9)].list)); (yyval.node) = (Node *)n; } -#line 28133 "gram.c" /* yacc.c:1646 */ break; - case 599: -#line 4083 "gram.y" /* yacc.c:1646 */ + case 649: +/* Line 1792 of yacc.c */ +#line 4512 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-6].str); - n->action = (yyvsp[-5].ival); + n->extname = (yyvsp[(3) - (9)].str); + n->action = (yyvsp[(4) - (9)].ival); n->objtype = OBJECT_OPFAMILY; - n->objname = lcons(makeString((yyvsp[0].str)), (yyvsp[-2].list)); + n->object = (Node *) lcons(makeString((yyvsp[(9) - (9)].str)), (yyvsp[(7) - (9)].list)); (yyval.node) = (Node *)n; } -#line 28146 "gram.c" /* yacc.c:1646 */ break; - case 600: -#line 4092 "gram.y" /* yacc.c:1646 */ + case 650: +/* Line 1792 of yacc.c */ +#line 4521 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_SCHEMA; - n->objname = list_make1(makeString((yyvsp[0].str))); + n->object = (Node *) makeString((yyvsp[(6) - (6)].str)); (yyval.node) = (Node *)n; } -#line 28159 "gram.c" /* yacc.c:1646 */ break; - case 601: -#line 4101 "gram.y" /* yacc.c:1646 */ + case 651: +/* Line 1792 of yacc.c */ +#line 4530 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-4].str); - n->action = (yyvsp[-3].ival); + n->extname = (yyvsp[(3) - (7)].str); + n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_EVENT_TRIGGER; - n->objname = list_make1(makeString((yyvsp[0].str))); + n->object = (Node *) makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; } -#line 28172 "gram.c" /* yacc.c:1646 */ break; - case 602: -#line 4110 "gram.y" /* yacc.c:1646 */ + case 652: +/* Line 1792 of yacc.c */ +#line 4539 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_TABLE; - n->objname = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 28185 "gram.c" /* yacc.c:1646 */ break; - case 603: -#line 4119 "gram.y" /* yacc.c:1646 */ + case 653: +/* Line 1792 of yacc.c */ +#line 4548 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-5].str); - n->action = (yyvsp[-4].ival); + n->extname = (yyvsp[(3) - (8)].str); + n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSPARSER; - n->objname = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; } -#line 28198 "gram.c" /* yacc.c:1646 */ break; - case 604: -#line 4128 "gram.y" /* yacc.c:1646 */ + case 654: +/* Line 1792 of yacc.c */ +#line 4557 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-5].str); - n->action = (yyvsp[-4].ival); + n->extname = (yyvsp[(3) - (8)].str); + n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSDICTIONARY; - n->objname = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; } -#line 28211 "gram.c" /* yacc.c:1646 */ break; - case 605: -#line 4137 "gram.y" /* yacc.c:1646 */ + case 655: +/* Line 1792 of yacc.c */ +#line 4566 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-5].str); - n->action = (yyvsp[-4].ival); + n->extname = (yyvsp[(3) - (8)].str); + n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSTEMPLATE; - n->objname = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; } -#line 28224 "gram.c" /* yacc.c:1646 */ break; - case 606: -#line 4146 "gram.y" /* yacc.c:1646 */ + case 656: +/* Line 1792 of yacc.c */ +#line 4575 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-5].str); - n->action = (yyvsp[-4].ival); + n->extname = (yyvsp[(3) - (8)].str); + n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSCONFIGURATION; - n->objname = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; } -#line 28237 "gram.c" /* yacc.c:1646 */ break; - case 607: -#line 4155 "gram.y" /* yacc.c:1646 */ + case 657: +/* Line 1792 of yacc.c */ +#line 4584 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_SEQUENCE; - n->objname = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 28250 "gram.c" /* yacc.c:1646 */ break; - case 608: -#line 4164 "gram.y" /* yacc.c:1646 */ + case 658: +/* Line 1792 of yacc.c */ +#line 4593 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_VIEW; - n->objname = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 28263 "gram.c" /* yacc.c:1646 */ break; - case 609: -#line 4173 "gram.y" /* yacc.c:1646 */ + case 659: +/* Line 1792 of yacc.c */ +#line 4602 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-4].str); - n->action = (yyvsp[-3].ival); + n->extname = (yyvsp[(3) - (7)].str); + n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_MATVIEW; - n->objname = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(7) - (7)].list); (yyval.node) = (Node *)n; } -#line 28276 "gram.c" /* yacc.c:1646 */ break; - case 610: -#line 4182 "gram.y" /* yacc.c:1646 */ + case 660: +/* Line 1792 of yacc.c */ +#line 4611 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-4].str); - n->action = (yyvsp[-3].ival); + n->extname = (yyvsp[(3) - (7)].str); + n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_FOREIGN_TABLE; - n->objname = (yyvsp[0].list); + n->object = (Node *) (yyvsp[(7) - (7)].list); (yyval.node) = (Node *)n; } -#line 28289 "gram.c" /* yacc.c:1646 */ break; - case 611: -#line 4191 "gram.y" /* yacc.c:1646 */ + case 661: +/* Line 1792 of yacc.c */ +#line 4620 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-5].str); - n->action = (yyvsp[-4].ival); + n->extname = (yyvsp[(3) - (8)].str); + n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_FDW; - n->objname = list_make1(makeString((yyvsp[0].str))); + n->object = (Node *) makeString((yyvsp[(8) - (8)].str)); (yyval.node) = (Node *)n; } -#line 28302 "gram.c" /* yacc.c:1646 */ break; - case 612: -#line 4200 "gram.y" /* yacc.c:1646 */ + case 662: +/* Line 1792 of yacc.c */ +#line 4629 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_FOREIGN_SERVER; - n->objname = list_make1(makeString((yyvsp[0].str))); + n->object = (Node *) makeString((yyvsp[(6) - (6)].str)); (yyval.node) = (Node *)n; } -#line 28315 "gram.c" /* yacc.c:1646 */ break; - case 613: -#line 4209 "gram.y" /* yacc.c:1646 */ + case 663: +/* Line 1792 of yacc.c */ +#line 4638 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-6].str); - n->action = (yyvsp[-5].ival); + n->extname = (yyvsp[(3) - (9)].str); + n->action = (yyvsp[(4) - (9)].ival); n->objtype = OBJECT_TRANSFORM; - n->objname = list_make1((yyvsp[-2].typnam)); - n->objargs = list_make1(makeString((yyvsp[0].str))); + n->object = (Node *) list_make2((yyvsp[(7) - (9)].typnam), makeString((yyvsp[(9) - (9)].str))); (yyval.node) = (Node *)n; } -#line 28329 "gram.c" /* yacc.c:1646 */ break; - case 614: -#line 4219 "gram.y" /* yacc.c:1646 */ + case 664: +/* Line 1792 of yacc.c */ +#line 4647 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_TYPE; - n->objname = list_make1((yyvsp[0].typnam)); + n->object = (Node *) (yyvsp[(6) - (6)].typnam); (yyval.node) = (Node *)n; } -#line 28342 "gram.c" /* yacc.c:1646 */ break; - case 615: -#line 4237 "gram.y" /* yacc.c:1646 */ + case 665: +/* Line 1792 of yacc.c */ +#line 4665 "gram.y" { CreateFdwStmt *n = makeNode(CreateFdwStmt); - n->fdwname = (yyvsp[-2].str); - n->func_options = (yyvsp[-1].list); - n->options = (yyvsp[0].list); + n->fdwname = (yyvsp[(5) - (7)].str); + n->func_options = (yyvsp[(6) - (7)].list); + n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *) n; } -#line 28354 "gram.c" /* yacc.c:1646 */ break; - case 616: -#line 4247 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem("handler", (Node *)(yyvsp[0].list)); } -#line 28360 "gram.c" /* yacc.c:1646 */ + case 666: +/* Line 1792 of yacc.c */ +#line 4675 "gram.y" + { (yyval.defelt) = makeDefElem("handler", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } break; - case 617: -#line 4248 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem("handler", NULL); } -#line 28366 "gram.c" /* yacc.c:1646 */ + case 667: +/* Line 1792 of yacc.c */ +#line 4676 "gram.y" + { (yyval.defelt) = makeDefElem("handler", NULL, (yylsp[(1) - (2)])); } break; - case 618: -#line 4249 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem("validator", (Node *)(yyvsp[0].list)); } -#line 28372 "gram.c" /* yacc.c:1646 */ + case 668: +/* Line 1792 of yacc.c */ +#line 4677 "gram.y" + { (yyval.defelt) = makeDefElem("validator", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } break; - case 619: -#line 4250 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem("validator", NULL); } -#line 28378 "gram.c" /* yacc.c:1646 */ + case 669: +/* Line 1792 of yacc.c */ +#line 4678 "gram.y" + { (yyval.defelt) = makeDefElem("validator", NULL, (yylsp[(1) - (2)])); } break; - case 620: -#line 4254 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 28384 "gram.c" /* yacc.c:1646 */ + case 670: +/* Line 1792 of yacc.c */ +#line 4682 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; - case 621: -#line 4255 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 28390 "gram.c" /* yacc.c:1646 */ + case 671: +/* Line 1792 of yacc.c */ +#line 4683 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; - case 622: -#line 4259 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 28396 "gram.c" /* yacc.c:1646 */ + case 672: +/* Line 1792 of yacc.c */ +#line 4687 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 623: -#line 4260 "gram.y" /* yacc.c:1646 */ + case 673: +/* Line 1792 of yacc.c */ +#line 4688 "gram.y" { (yyval.list) = NIL; } -#line 28402 "gram.c" /* yacc.c:1646 */ - break; - - case 624: -#line 4271 "gram.y" /* yacc.c:1646 */ - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_FDW; - n->objects = list_make1(list_make1(makeString((yyvsp[-1].str)))); - n->arguments = NIL; - n->missing_ok = false; - n->behavior = (yyvsp[0].dbehavior); - n->concurrent = false; - (yyval.node) = (Node *) n; - } -#line 28417 "gram.c" /* yacc.c:1646 */ - break; - - case 625: -#line 4282 "gram.y" /* yacc.c:1646 */ - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_FDW; - n->objects = list_make1(list_make1(makeString((yyvsp[-1].str)))); - n->arguments = NIL; - n->missing_ok = true; - n->behavior = (yyvsp[0].dbehavior); - n->concurrent = false; - (yyval.node) = (Node *) n; - } -#line 28432 "gram.c" /* yacc.c:1646 */ break; - case 626: -#line 4302 "gram.y" /* yacc.c:1646 */ + case 674: +/* Line 1792 of yacc.c */ +#line 4699 "gram.y" { AlterFdwStmt *n = makeNode(AlterFdwStmt); - n->fdwname = (yyvsp[-2].str); - n->func_options = (yyvsp[-1].list); - n->options = (yyvsp[0].list); + n->fdwname = (yyvsp[(5) - (7)].str); + n->func_options = (yyvsp[(6) - (7)].list); + n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *) n; } -#line 28444 "gram.c" /* yacc.c:1646 */ break; - case 627: -#line 4310 "gram.y" /* yacc.c:1646 */ + case 675: +/* Line 1792 of yacc.c */ +#line 4707 "gram.y" { AlterFdwStmt *n = makeNode(AlterFdwStmt); - n->fdwname = (yyvsp[-1].str); - n->func_options = (yyvsp[0].list); + n->fdwname = (yyvsp[(5) - (6)].str); + n->func_options = (yyvsp[(6) - (6)].list); n->options = NIL; (yyval.node) = (Node *) n; } -#line 28456 "gram.c" /* yacc.c:1646 */ break; - case 628: -#line 4321 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 28462 "gram.c" /* yacc.c:1646 */ + case 676: +/* Line 1792 of yacc.c */ +#line 4718 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; - case 629: -#line 4322 "gram.y" /* yacc.c:1646 */ + case 677: +/* Line 1792 of yacc.c */ +#line 4719 "gram.y" { (yyval.list) = NIL; } -#line 28468 "gram.c" /* yacc.c:1646 */ break; - case 630: -#line 4327 "gram.y" /* yacc.c:1646 */ + case 678: +/* Line 1792 of yacc.c */ +#line 4724 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].defelt)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } -#line 28476 "gram.c" /* yacc.c:1646 */ break; - case 631: -#line 4331 "gram.y" /* yacc.c:1646 */ + case 679: +/* Line 1792 of yacc.c */ +#line 4728 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } -#line 28484 "gram.c" /* yacc.c:1646 */ break; - case 632: -#line 4338 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 28490 "gram.c" /* yacc.c:1646 */ + case 680: +/* Line 1792 of yacc.c */ +#line 4735 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; - case 633: -#line 4343 "gram.y" /* yacc.c:1646 */ + case 681: +/* Line 1792 of yacc.c */ +#line 4740 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].defelt)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } -#line 28498 "gram.c" /* yacc.c:1646 */ break; - case 634: -#line 4347 "gram.y" /* yacc.c:1646 */ + case 682: +/* Line 1792 of yacc.c */ +#line 4744 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } -#line 28506 "gram.c" /* yacc.c:1646 */ break; - case 635: -#line 4354 "gram.y" /* yacc.c:1646 */ + case 683: +/* Line 1792 of yacc.c */ +#line 4751 "gram.y" { - (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt) = (yyvsp[(1) - (1)].defelt); } -#line 28514 "gram.c" /* yacc.c:1646 */ break; - case 636: -#line 4358 "gram.y" /* yacc.c:1646 */ + case 684: +/* Line 1792 of yacc.c */ +#line 4755 "gram.y" { - (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_SET; } -#line 28523 "gram.c" /* yacc.c:1646 */ break; - case 637: -#line 4363 "gram.y" /* yacc.c:1646 */ + case 685: +/* Line 1792 of yacc.c */ +#line 4760 "gram.y" { - (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_ADD; } -#line 28532 "gram.c" /* yacc.c:1646 */ break; - case 638: -#line 4368 "gram.y" /* yacc.c:1646 */ + case 686: +/* Line 1792 of yacc.c */ +#line 4765 "gram.y" { - (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[0].str), NULL, DEFELEM_DROP); + (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[(2) - (2)].str), NULL, DEFELEM_DROP, (yylsp[(2) - (2)])); } -#line 28540 "gram.c" /* yacc.c:1646 */ break; - case 639: -#line 4375 "gram.y" /* yacc.c:1646 */ + case 687: +/* Line 1792 of yacc.c */ +#line 4772 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node)); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } -#line 28548 "gram.c" /* yacc.c:1646 */ break; - case 640: -#line 4381 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 28554 "gram.c" /* yacc.c:1646 */ + case 688: +/* Line 1792 of yacc.c */ +#line 4778 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 641: -#line 4386 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeString((yyvsp[0].str)); } -#line 28560 "gram.c" /* yacc.c:1646 */ + case 689: +/* Line 1792 of yacc.c */ +#line 4783 "gram.y" + { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); } break; - case 642: -#line 4398 "gram.y" /* yacc.c:1646 */ + case 690: +/* Line 1792 of yacc.c */ +#line 4795 "gram.y" { CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); - n->servername = (yyvsp[-7].str); - n->servertype = (yyvsp[-6].str); - n->version = (yyvsp[-5].str); - n->fdwname = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->servername = (yyvsp[(3) - (10)].str); + n->servertype = (yyvsp[(4) - (10)].str); + n->version = (yyvsp[(5) - (10)].str); + n->fdwname = (yyvsp[(9) - (10)].str); + n->options = (yyvsp[(10) - (10)].list); + n->if_not_exists = false; (yyval.node) = (Node *) n; } -#line 28574 "gram.c" /* yacc.c:1646 */ break; - case 643: -#line 4410 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 28580 "gram.c" /* yacc.c:1646 */ + case 691: +/* Line 1792 of yacc.c */ +#line 4807 "gram.y" + { + CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); + n->servername = (yyvsp[(6) - (13)].str); + n->servertype = (yyvsp[(7) - (13)].str); + n->version = (yyvsp[(8) - (13)].str); + n->fdwname = (yyvsp[(12) - (13)].str); + n->options = (yyvsp[(13) - (13)].list); + n->if_not_exists = true; + (yyval.node) = (Node *) n; + } break; - case 644: -#line 4411 "gram.y" /* yacc.c:1646 */ + case 692: +/* Line 1792 of yacc.c */ +#line 4820 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } + break; + + case 693: +/* Line 1792 of yacc.c */ +#line 4821 "gram.y" { (yyval.str) = NULL; } -#line 28586 "gram.c" /* yacc.c:1646 */ break; - case 645: -#line 4416 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 28592 "gram.c" /* yacc.c:1646 */ + case 694: +/* Line 1792 of yacc.c */ +#line 4826 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; - case 646: -#line 4417 "gram.y" /* yacc.c:1646 */ + case 695: +/* Line 1792 of yacc.c */ +#line 4827 "gram.y" { (yyval.str) = NULL; } -#line 28598 "gram.c" /* yacc.c:1646 */ break; - case 647: -#line 4421 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 28604 "gram.c" /* yacc.c:1646 */ + case 696: +/* Line 1792 of yacc.c */ +#line 4831 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 648: -#line 4422 "gram.y" /* yacc.c:1646 */ + case 697: +/* Line 1792 of yacc.c */ +#line 4832 "gram.y" { (yyval.str) = NULL; } -#line 28610 "gram.c" /* yacc.c:1646 */ break; - case 649: -#line 4433 "gram.y" /* yacc.c:1646 */ + case 698: +/* Line 1792 of yacc.c */ +#line 4843 "gram.y" { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_FOREIGN_SERVER; - n->objects = list_make1(list_make1(makeString((yyvsp[-1].str)))); - n->arguments = NIL; - n->missing_ok = false; - n->behavior = (yyvsp[0].dbehavior); - n->concurrent = false; + AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); + n->servername = (yyvsp[(3) - (5)].str); + n->version = (yyvsp[(4) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); + n->has_version = true; (yyval.node) = (Node *) n; } -#line 28625 "gram.c" /* yacc.c:1646 */ break; - case 650: -#line 4444 "gram.y" /* yacc.c:1646 */ + case 699: +/* Line 1792 of yacc.c */ +#line 4852 "gram.y" { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_FOREIGN_SERVER; - n->objects = list_make1(list_make1(makeString((yyvsp[-1].str)))); - n->arguments = NIL; - n->missing_ok = true; - n->behavior = (yyvsp[0].dbehavior); - n->concurrent = false; + AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); + n->servername = (yyvsp[(3) - (4)].str); + n->version = (yyvsp[(4) - (4)].str); + n->has_version = true; (yyval.node) = (Node *) n; } -#line 28640 "gram.c" /* yacc.c:1646 */ break; - case 651: -#line 4464 "gram.y" /* yacc.c:1646 */ + case 700: +/* Line 1792 of yacc.c */ +#line 4860 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); - n->servername = (yyvsp[-2].str); - n->version = (yyvsp[-1].str); - n->options = (yyvsp[0].list); - n->has_version = true; + n->servername = (yyvsp[(3) - (4)].str); + n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *) n; } -#line 28653 "gram.c" /* yacc.c:1646 */ break; - case 652: -#line 4473 "gram.y" /* yacc.c:1646 */ + case 701: +/* Line 1792 of yacc.c */ +#line 4879 "gram.y" { - AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); - n->servername = (yyvsp[-1].str); - n->version = (yyvsp[0].str); - n->has_version = true; + CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); + (yyvsp[(4) - (11)].range)->relpersistence = RELPERSISTENCE_PERMANENT; + n->base.relation = (yyvsp[(4) - (11)].range); + n->base.tableElts = (yyvsp[(6) - (11)].list); + n->base.inhRelations = (yyvsp[(8) - (11)].list); + n->base.ofTypename = NULL; + n->base.constraints = NIL; + n->base.options = NIL; + n->base.oncommit = ONCOMMIT_NOOP; + n->base.tablespacename = NULL; + n->base.if_not_exists = false; + /* FDW-specific data */ + n->servername = (yyvsp[(10) - (11)].str); + n->options = (yyvsp[(11) - (11)].list); (yyval.node) = (Node *) n; } -#line 28665 "gram.c" /* yacc.c:1646 */ break; - case 653: -#line 4481 "gram.y" /* yacc.c:1646 */ + case 702: +/* Line 1792 of yacc.c */ +#line 4899 "gram.y" { - AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); + (yyvsp[(7) - (14)].range)->relpersistence = RELPERSISTENCE_PERMANENT; + n->base.relation = (yyvsp[(7) - (14)].range); + n->base.tableElts = (yyvsp[(9) - (14)].list); + n->base.inhRelations = (yyvsp[(11) - (14)].list); + n->base.ofTypename = NULL; + n->base.constraints = NIL; + n->base.options = NIL; + n->base.oncommit = ONCOMMIT_NOOP; + n->base.tablespacename = NULL; + n->base.if_not_exists = true; + /* FDW-specific data */ + n->servername = (yyvsp[(13) - (14)].str); + n->options = (yyvsp[(14) - (14)].list); (yyval.node) = (Node *) n; } -#line 28676 "gram.c" /* yacc.c:1646 */ break; - case 654: -#line 4500 "gram.y" /* yacc.c:1646 */ + case 703: +/* Line 1792 of yacc.c */ +#line 4919 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); - (yyvsp[-7].range)->relpersistence = RELPERSISTENCE_PERMANENT; - n->base.relation = (yyvsp[-7].range); - n->base.tableElts = (yyvsp[-5].list); - n->base.inhRelations = (yyvsp[-3].list); + (yyvsp[(4) - (12)].range)->relpersistence = RELPERSISTENCE_PERMANENT; + n->base.relation = (yyvsp[(4) - (12)].range); + n->base.inhRelations = list_make1((yyvsp[(7) - (12)].range)); + n->base.tableElts = (yyvsp[(8) - (12)].list); + n->base.partbound = (yyvsp[(9) - (12)].partboundspec); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; @@ -28690,21 +31710,22 @@ yyreduce: n->base.tablespacename = NULL; n->base.if_not_exists = false; /* FDW-specific data */ - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->servername = (yyvsp[(11) - (12)].str); + n->options = (yyvsp[(12) - (12)].list); (yyval.node) = (Node *) n; } -#line 28698 "gram.c" /* yacc.c:1646 */ break; - case 655: -#line 4520 "gram.y" /* yacc.c:1646 */ + case 704: +/* Line 1792 of yacc.c */ +#line 4940 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); - (yyvsp[-7].range)->relpersistence = RELPERSISTENCE_PERMANENT; - n->base.relation = (yyvsp[-7].range); - n->base.tableElts = (yyvsp[-5].list); - n->base.inhRelations = (yyvsp[-3].list); + (yyvsp[(7) - (15)].range)->relpersistence = RELPERSISTENCE_PERMANENT; + n->base.relation = (yyvsp[(7) - (15)].range); + n->base.inhRelations = list_make1((yyvsp[(10) - (15)].range)); + n->base.tableElts = (yyvsp[(11) - (15)].list); + n->base.partbound = (yyvsp[(12) - (15)].partboundspec); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; @@ -28712,385 +31733,396 @@ yyreduce: n->base.tablespacename = NULL; n->base.if_not_exists = true; /* FDW-specific data */ - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->servername = (yyvsp[(14) - (15)].str); + n->options = (yyvsp[(15) - (15)].list); (yyval.node) = (Node *) n; } -#line 28720 "gram.c" /* yacc.c:1646 */ break; - case 656: -#line 4548 "gram.y" /* yacc.c:1646 */ + case 705: +/* Line 1792 of yacc.c */ +#line 4969 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(4) - (5)].range); + n->cmds = (yyvsp[(5) - (5)].list); n->relkind = OBJECT_FOREIGN_TABLE; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 28733 "gram.c" /* yacc.c:1646 */ break; - case 657: -#line 4557 "gram.y" /* yacc.c:1646 */ + case 706: +/* Line 1792 of yacc.c */ +#line 4978 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(6) - (7)].range); + n->cmds = (yyvsp[(7) - (7)].list); n->relkind = OBJECT_FOREIGN_TABLE; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 28746 "gram.c" /* yacc.c:1646 */ break; - case 658: -#line 4579 "gram.y" /* yacc.c:1646 */ + case 707: +/* Line 1792 of yacc.c */ +#line 5000 "gram.y" { ImportForeignSchemaStmt *n = makeNode(ImportForeignSchemaStmt); - n->server_name = (yyvsp[-3].str); - n->remote_schema = (yyvsp[-7].str); - n->local_schema = (yyvsp[-1].str); - n->list_type = (yyvsp[-6].importqual)->type; - n->table_list = (yyvsp[-6].importqual)->table_names; - n->options = (yyvsp[0].list); + n->server_name = (yyvsp[(8) - (11)].str); + n->remote_schema = (yyvsp[(4) - (11)].str); + n->local_schema = (yyvsp[(10) - (11)].str); + n->list_type = (yyvsp[(5) - (11)].importqual)->type; + n->table_list = (yyvsp[(5) - (11)].importqual)->table_names; + n->options = (yyvsp[(11) - (11)].list); (yyval.node) = (Node *) n; } -#line 28761 "gram.c" /* yacc.c:1646 */ break; - case 659: -#line 4592 "gram.y" /* yacc.c:1646 */ + case 708: +/* Line 1792 of yacc.c */ +#line 5013 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_LIMIT_TO; } -#line 28767 "gram.c" /* yacc.c:1646 */ break; - case 660: -#line 4593 "gram.y" /* yacc.c:1646 */ + case 709: +/* Line 1792 of yacc.c */ +#line 5014 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_EXCEPT; } -#line 28773 "gram.c" /* yacc.c:1646 */ break; - case 661: -#line 4598 "gram.y" /* yacc.c:1646 */ + case 710: +/* Line 1792 of yacc.c */ +#line 5019 "gram.y" { ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); - n->type = (yyvsp[-3].ival); - n->table_names = (yyvsp[-1].list); + n->type = (yyvsp[(1) - (4)].ival); + n->table_names = (yyvsp[(3) - (4)].list); (yyval.importqual) = n; } -#line 28784 "gram.c" /* yacc.c:1646 */ break; - case 662: -#line 4605 "gram.y" /* yacc.c:1646 */ + case 711: +/* Line 1792 of yacc.c */ +#line 5026 "gram.y" { ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); n->type = FDW_IMPORT_SCHEMA_ALL; n->table_names = NIL; (yyval.importqual) = n; } -#line 28795 "gram.c" /* yacc.c:1646 */ break; - case 663: -#line 4621 "gram.y" /* yacc.c:1646 */ + case 712: +/* Line 1792 of yacc.c */ +#line 5042 "gram.y" + { + CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); + n->user = (yyvsp[(5) - (8)].rolespec); + n->servername = (yyvsp[(7) - (8)].str); + n->options = (yyvsp[(8) - (8)].list); + n->if_not_exists = false; + (yyval.node) = (Node *) n; + } + break; + + case 713: +/* Line 1792 of yacc.c */ +#line 5051 "gram.y" { CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); - n->user = (yyvsp[-3].node); - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->user = (yyvsp[(8) - (11)].rolespec); + n->servername = (yyvsp[(10) - (11)].str); + n->options = (yyvsp[(11) - (11)].list); + n->if_not_exists = true; (yyval.node) = (Node *) n; } -#line 28807 "gram.c" /* yacc.c:1646 */ break; - case 664: -#line 4631 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 28813 "gram.c" /* yacc.c:1646 */ + case 714: +/* Line 1792 of yacc.c */ +#line 5062 "gram.y" + { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); } break; - case 665: -#line 4632 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[0])); } -#line 28819 "gram.c" /* yacc.c:1646 */ + case 715: +/* Line 1792 of yacc.c */ +#line 5063 "gram.y" + { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); } break; - case 666: -#line 4643 "gram.y" /* yacc.c:1646 */ + case 716: +/* Line 1792 of yacc.c */ +#line 5076 "gram.y" { DropUserMappingStmt *n = makeNode(DropUserMappingStmt); - n->user = (yyvsp[-2].node); - n->servername = (yyvsp[0].str); + n->user = (yyvsp[(5) - (7)].rolespec); + n->servername = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *) n; } -#line 28831 "gram.c" /* yacc.c:1646 */ break; - case 667: -#line 4651 "gram.y" /* yacc.c:1646 */ + case 717: +/* Line 1792 of yacc.c */ +#line 5084 "gram.y" { DropUserMappingStmt *n = makeNode(DropUserMappingStmt); - n->user = (yyvsp[-2].node); - n->servername = (yyvsp[0].str); + n->user = (yyvsp[(7) - (9)].rolespec); + n->servername = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *) n; } -#line 28843 "gram.c" /* yacc.c:1646 */ break; - case 668: -#line 4668 "gram.y" /* yacc.c:1646 */ + case 718: +/* Line 1792 of yacc.c */ +#line 5101 "gram.y" { AlterUserMappingStmt *n = makeNode(AlterUserMappingStmt); - n->user = (yyvsp[-3].node); - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->user = (yyvsp[(5) - (8)].rolespec); + n->servername = (yyvsp[(7) - (8)].str); + n->options = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; } -#line 28855 "gram.c" /* yacc.c:1646 */ break; - case 669: -#line 4692 "gram.y" /* yacc.c:1646 */ + case 719: +/* Line 1792 of yacc.c */ +#line 5127 "gram.y" { CreatePolicyStmt *n = makeNode(CreatePolicyStmt); - n->policy_name = (yyvsp[-6].str); - n->table = (yyvsp[-4].range); - n->cmd_name = (yyvsp[-3].str); - n->roles = (yyvsp[-2].list); - n->qual = (yyvsp[-1].node); - n->with_check = (yyvsp[0].node); + n->policy_name = (yyvsp[(3) - (10)].str); + n->table = (yyvsp[(5) - (10)].range); + n->permissive = (yyvsp[(6) - (10)].boolean); + n->cmd_name = (yyvsp[(7) - (10)].str); + n->roles = (yyvsp[(8) - (10)].list); + n->qual = (yyvsp[(9) - (10)].node); + n->with_check = (yyvsp[(10) - (10)].node); (yyval.node) = (Node *) n; } -#line 28870 "gram.c" /* yacc.c:1646 */ break; - case 670: -#line 4707 "gram.y" /* yacc.c:1646 */ + case 720: +/* Line 1792 of yacc.c */ +#line 5143 "gram.y" { AlterPolicyStmt *n = makeNode(AlterPolicyStmt); - n->policy_name = (yyvsp[-5].str); - n->table = (yyvsp[-3].range); - n->roles = (yyvsp[-2].list); - n->qual = (yyvsp[-1].node); - n->with_check = (yyvsp[0].node); + n->policy_name = (yyvsp[(3) - (8)].str); + n->table = (yyvsp[(5) - (8)].range); + n->roles = (yyvsp[(6) - (8)].list); + n->qual = (yyvsp[(7) - (8)].node); + n->with_check = (yyvsp[(8) - (8)].node); (yyval.node) = (Node *) n; } -#line 28884 "gram.c" /* yacc.c:1646 */ break; - case 671: -#line 4720 "gram.y" /* yacc.c:1646 */ - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_POLICY; - n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); - n->missing_ok = false; - n->concurrent = false; - (yyval.node) = (Node *) n; - } -#line 28899 "gram.c" /* yacc.c:1646 */ + case 721: +/* Line 1792 of yacc.c */ +#line 5155 "gram.y" + { (yyval.node) = (yyvsp[(3) - (4)].node); } break; - case 672: -#line 4731 "gram.y" /* yacc.c:1646 */ - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_POLICY; - n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); - n->missing_ok = true; - n->concurrent = false; - (yyval.node) = (Node *) n; - } -#line 28914 "gram.c" /* yacc.c:1646 */ + case 722: +/* Line 1792 of yacc.c */ +#line 5156 "gram.y" + { (yyval.node) = NULL; } break; - case 673: -#line 4744 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 28920 "gram.c" /* yacc.c:1646 */ + case 723: +/* Line 1792 of yacc.c */ +#line 5160 "gram.y" + { (yyval.node) = (yyvsp[(4) - (5)].node); } break; - case 674: -#line 4745 "gram.y" /* yacc.c:1646 */ + case 724: +/* Line 1792 of yacc.c */ +#line 5161 "gram.y" { (yyval.node) = NULL; } -#line 28926 "gram.c" /* yacc.c:1646 */ break; - case 675: -#line 4749 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 28932 "gram.c" /* yacc.c:1646 */ + case 725: +/* Line 1792 of yacc.c */ +#line 5165 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 676: -#line 4750 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = NULL; } -#line 28938 "gram.c" /* yacc.c:1646 */ + case 726: +/* Line 1792 of yacc.c */ +#line 5166 "gram.y" + { (yyval.list) = list_make1(makeRoleSpec(ROLESPEC_PUBLIC, -1)); } break; - case 677: -#line 4754 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 28944 "gram.c" /* yacc.c:1646 */ + case 727: +/* Line 1792 of yacc.c */ +#line 5170 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 678: -#line 4755 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeRoleSpec(ROLESPEC_PUBLIC, -1)); } -#line 28950 "gram.c" /* yacc.c:1646 */ + case 728: +/* Line 1792 of yacc.c */ +#line 5171 "gram.y" + { (yyval.list) = NULL; } break; - case 679: -#line 4759 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 28956 "gram.c" /* yacc.c:1646 */ + case 729: +/* Line 1792 of yacc.c */ +#line 5176 "gram.y" + { + if (strcmp((yyvsp[(2) - (2)].str), "permissive") == 0) + (yyval.boolean) = true; + else if (strcmp((yyvsp[(2) - (2)].str), "restrictive") == 0) + (yyval.boolean) = false; + else + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("unrecognized row security option \"%s\"", (yyvsp[(2) - (2)].str)), + errhint("Only PERMISSIVE or RESTRICTIVE policies are supported currently."), + parser_errposition((yylsp[(2) - (2)])))); + + } break; - case 680: -#line 4760 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = NULL; } -#line 28962 "gram.c" /* yacc.c:1646 */ + case 730: +/* Line 1792 of yacc.c */ +#line 5189 "gram.y" + { (yyval.boolean) = true; } break; - case 681: -#line 4764 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 28968 "gram.c" /* yacc.c:1646 */ + case 731: +/* Line 1792 of yacc.c */ +#line 5193 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; - case 682: -#line 4765 "gram.y" /* yacc.c:1646 */ + case 732: +/* Line 1792 of yacc.c */ +#line 5194 "gram.y" { (yyval.str) = "all"; } -#line 28974 "gram.c" /* yacc.c:1646 */ break; - case 683: -#line 4769 "gram.y" /* yacc.c:1646 */ + case 733: +/* Line 1792 of yacc.c */ +#line 5198 "gram.y" { (yyval.str) = "all"; } -#line 28980 "gram.c" /* yacc.c:1646 */ break; - case 684: -#line 4770 "gram.y" /* yacc.c:1646 */ + case 734: +/* Line 1792 of yacc.c */ +#line 5199 "gram.y" { (yyval.str) = "select"; } -#line 28986 "gram.c" /* yacc.c:1646 */ break; - case 685: -#line 4771 "gram.y" /* yacc.c:1646 */ + case 735: +/* Line 1792 of yacc.c */ +#line 5200 "gram.y" { (yyval.str) = "insert"; } -#line 28992 "gram.c" /* yacc.c:1646 */ break; - case 686: -#line 4772 "gram.y" /* yacc.c:1646 */ + case 736: +/* Line 1792 of yacc.c */ +#line 5201 "gram.y" { (yyval.str) = "update"; } -#line 28998 "gram.c" /* yacc.c:1646 */ break; - case 687: -#line 4773 "gram.y" /* yacc.c:1646 */ + case 737: +/* Line 1792 of yacc.c */ +#line 5202 "gram.y" { (yyval.str) = "delete"; } -#line 29004 "gram.c" /* yacc.c:1646 */ break; - case 688: -#line 4784 "gram.y" /* yacc.c:1646 */ + case 738: +/* Line 1792 of yacc.c */ +#line 5213 "gram.y" { CreateAmStmt *n = makeNode(CreateAmStmt); - n->amname = (yyvsp[-4].str); - n->handler_name = (yyvsp[0].list); + n->amname = (yyvsp[(4) - (8)].str); + n->handler_name = (yyvsp[(8) - (8)].list); n->amtype = AMTYPE_INDEX; (yyval.node) = (Node *) n; } -#line 29016 "gram.c" /* yacc.c:1646 */ break; - case 689: -#line 4805 "gram.y" /* yacc.c:1646 */ + case 739: +/* Line 1792 of yacc.c */ +#line 5233 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); - n->trigname = (yyvsp[-12].str); - n->relation = (yyvsp[-8].range); - n->funcname = (yyvsp[-3].list); - n->args = (yyvsp[-1].list); - n->row = (yyvsp[-7].boolean); - n->timing = (yyvsp[-11].ival); - n->events = intVal(linitial((yyvsp[-10].list))); - n->columns = (List *) lsecond((yyvsp[-10].list)); - n->whenClause = (yyvsp[-6].node); + n->trigname = (yyvsp[(3) - (16)].str); + n->relation = (yyvsp[(7) - (16)].range); + n->funcname = (yyvsp[(13) - (16)].list); + n->args = (yyvsp[(15) - (16)].list); + n->row = (yyvsp[(9) - (16)].boolean); + n->timing = (yyvsp[(4) - (16)].ival); + n->events = intVal(linitial((yyvsp[(5) - (16)].list))); + n->columns = (List *) lsecond((yyvsp[(5) - (16)].list)); + n->whenClause = (yyvsp[(10) - (16)].node); + n->transitionRels = (yyvsp[(8) - (16)].list); n->isconstraint = FALSE; n->deferrable = FALSE; n->initdeferred = FALSE; n->constrrel = NULL; (yyval.node) = (Node *)n; } -#line 29038 "gram.c" /* yacc.c:1646 */ break; - case 690: -#line 4826 "gram.y" /* yacc.c:1646 */ + case 740: +/* Line 1792 of yacc.c */ +#line 5255 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); - n->trigname = (yyvsp[-16].str); - n->relation = (yyvsp[-12].range); - n->funcname = (yyvsp[-3].list); - n->args = (yyvsp[-1].list); + n->trigname = (yyvsp[(4) - (20)].str); + n->relation = (yyvsp[(8) - (20)].range); + n->funcname = (yyvsp[(17) - (20)].list); + n->args = (yyvsp[(19) - (20)].list); n->row = TRUE; n->timing = TRIGGER_TYPE_AFTER; - n->events = intVal(linitial((yyvsp[-14].list))); - n->columns = (List *) lsecond((yyvsp[-14].list)); - n->whenClause = (yyvsp[-6].node); + n->events = intVal(linitial((yyvsp[(6) - (20)].list))); + n->columns = (List *) lsecond((yyvsp[(6) - (20)].list)); + n->whenClause = (yyvsp[(14) - (20)].node); + n->transitionRels = NIL; n->isconstraint = TRUE; - processCASbits((yyvsp[-10].ival), (yylsp[-10]), "TRIGGER", + processCASbits((yyvsp[(10) - (20)].ival), (yylsp[(10) - (20)]), "TRIGGER", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); - n->constrrel = (yyvsp[-11].range); + n->constrrel = (yyvsp[(9) - (20)].range); (yyval.node) = (Node *)n; } -#line 29061 "gram.c" /* yacc.c:1646 */ break; - case 691: -#line 4847 "gram.y" /* yacc.c:1646 */ + case 741: +/* Line 1792 of yacc.c */ +#line 5277 "gram.y" { (yyval.ival) = TRIGGER_TYPE_BEFORE; } -#line 29067 "gram.c" /* yacc.c:1646 */ break; - case 692: -#line 4848 "gram.y" /* yacc.c:1646 */ + case 742: +/* Line 1792 of yacc.c */ +#line 5278 "gram.y" { (yyval.ival) = TRIGGER_TYPE_AFTER; } -#line 29073 "gram.c" /* yacc.c:1646 */ break; - case 693: -#line 4849 "gram.y" /* yacc.c:1646 */ + case 743: +/* Line 1792 of yacc.c */ +#line 5279 "gram.y" { (yyval.ival) = TRIGGER_TYPE_INSTEAD; } -#line 29079 "gram.c" /* yacc.c:1646 */ break; - case 694: -#line 4854 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 29085 "gram.c" /* yacc.c:1646 */ + case 744: +/* Line 1792 of yacc.c */ +#line 5284 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 695: -#line 4856 "gram.y" /* yacc.c:1646 */ + case 745: +/* Line 1792 of yacc.c */ +#line 5286 "gram.y" { - int events1 = intVal(linitial((yyvsp[-2].list))); - int events2 = intVal(linitial((yyvsp[0].list))); - List *columns1 = (List *) lsecond((yyvsp[-2].list)); - List *columns2 = (List *) lsecond((yyvsp[0].list)); + int events1 = intVal(linitial((yyvsp[(1) - (3)].list))); + int events2 = intVal(linitial((yyvsp[(3) - (3)].list))); + List *columns1 = (List *) lsecond((yyvsp[(1) - (3)].list)); + List *columns2 = (List *) lsecond((yyvsp[(3) - (3)].list)); if (events1 & events2) parser_yyerror("duplicate trigger events specified"); @@ -29104,49 +32136,115 @@ yyreduce: (yyval.list) = list_make2(makeInteger(events1 | events2), list_concat(columns1, columns2)); } -#line 29108 "gram.c" /* yacc.c:1646 */ break; - case 696: -#line 4878 "gram.y" /* yacc.c:1646 */ + case 746: +/* Line 1792 of yacc.c */ +#line 5308 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } -#line 29114 "gram.c" /* yacc.c:1646 */ break; - case 697: -#line 4880 "gram.y" /* yacc.c:1646 */ + case 747: +/* Line 1792 of yacc.c */ +#line 5310 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } -#line 29120 "gram.c" /* yacc.c:1646 */ break; - case 698: -#line 4882 "gram.y" /* yacc.c:1646 */ + case 748: +/* Line 1792 of yacc.c */ +#line 5312 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } -#line 29126 "gram.c" /* yacc.c:1646 */ break; - case 699: -#line 4884 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), (yyvsp[0].list)); } -#line 29132 "gram.c" /* yacc.c:1646 */ + case 749: +/* Line 1792 of yacc.c */ +#line 5314 "gram.y" + { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), (yyvsp[(3) - (3)].list)); } break; - case 700: -#line 4886 "gram.y" /* yacc.c:1646 */ + case 750: +/* Line 1792 of yacc.c */ +#line 5316 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_TRUNCATE), NIL); } -#line 29138 "gram.c" /* yacc.c:1646 */ break; - case 701: -#line 4891 "gram.y" /* yacc.c:1646 */ + case 751: +/* Line 1792 of yacc.c */ +#line 5320 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } + break; + + case 752: +/* Line 1792 of yacc.c */ +#line 5321 "gram.y" + { (yyval.list) = NIL; } + break; + + case 753: +/* Line 1792 of yacc.c */ +#line 5325 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } + break; + + case 754: +/* Line 1792 of yacc.c */ +#line 5326 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } + break; + + case 755: +/* Line 1792 of yacc.c */ +#line 5331 "gram.y" + { + TriggerTransition *n = makeNode(TriggerTransition); + n->name = (yyvsp[(4) - (4)].str); + n->isNew = (yyvsp[(1) - (4)].boolean); + n->isTable = (yyvsp[(2) - (4)].boolean); + (yyval.node) = (Node *)n; + } + break; + + case 756: +/* Line 1792 of yacc.c */ +#line 5341 "gram.y" + { (yyval.boolean) = TRUE; } + break; + + case 757: +/* Line 1792 of yacc.c */ +#line 5342 "gram.y" + { (yyval.boolean) = FALSE; } + break; + + case 758: +/* Line 1792 of yacc.c */ +#line 5346 "gram.y" + { (yyval.boolean) = TRUE; } + break; + + case 759: +/* Line 1792 of yacc.c */ +#line 5355 "gram.y" + { (yyval.boolean) = FALSE; } + break; + + case 760: +/* Line 1792 of yacc.c */ +#line 5359 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } + break; + + case 761: +/* Line 1792 of yacc.c */ +#line 5364 "gram.y" { - (yyval.boolean) = (yyvsp[0].boolean); + (yyval.boolean) = (yyvsp[(3) - (3)].boolean); } -#line 29146 "gram.c" /* yacc.c:1646 */ break; - case 702: -#line 4895 "gram.y" /* yacc.c:1646 */ + case 762: +/* Line 1792 of yacc.c */ +#line 5368 "gram.y" { /* * If ROW/STATEMENT not specified, default to @@ -29154,300 +32252,270 @@ yyreduce: */ (yyval.boolean) = FALSE; } -#line 29158 "gram.c" /* yacc.c:1646 */ break; - case 703: -#line 4905 "gram.y" /* yacc.c:1646 */ + case 763: +/* Line 1792 of yacc.c */ +#line 5378 "gram.y" {} -#line 29164 "gram.c" /* yacc.c:1646 */ break; - case 704: -#line 4906 "gram.y" /* yacc.c:1646 */ + case 764: +/* Line 1792 of yacc.c */ +#line 5379 "gram.y" {} -#line 29170 "gram.c" /* yacc.c:1646 */ break; - case 705: -#line 4910 "gram.y" /* yacc.c:1646 */ + case 765: +/* Line 1792 of yacc.c */ +#line 5383 "gram.y" { (yyval.boolean) = TRUE; } -#line 29176 "gram.c" /* yacc.c:1646 */ break; - case 706: -#line 4911 "gram.y" /* yacc.c:1646 */ + case 766: +/* Line 1792 of yacc.c */ +#line 5384 "gram.y" { (yyval.boolean) = FALSE; } -#line 29182 "gram.c" /* yacc.c:1646 */ break; - case 707: -#line 4915 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 29188 "gram.c" /* yacc.c:1646 */ + case 767: +/* Line 1792 of yacc.c */ +#line 5388 "gram.y" + { (yyval.node) = (yyvsp[(3) - (4)].node); } break; - case 708: -#line 4916 "gram.y" /* yacc.c:1646 */ + case 768: +/* Line 1792 of yacc.c */ +#line 5389 "gram.y" { (yyval.node) = NULL; } -#line 29194 "gram.c" /* yacc.c:1646 */ break; - case 709: -#line 4920 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].value)); } -#line 29200 "gram.c" /* yacc.c:1646 */ + case 769: +/* Line 1792 of yacc.c */ +#line 5393 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); } break; - case 710: -#line 4921 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].value)); } -#line 29206 "gram.c" /* yacc.c:1646 */ + case 770: +/* Line 1792 of yacc.c */ +#line 5394 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); } break; - case 711: -#line 4922 "gram.y" /* yacc.c:1646 */ + case 771: +/* Line 1792 of yacc.c */ +#line 5395 "gram.y" { (yyval.list) = NIL; } -#line 29212 "gram.c" /* yacc.c:1646 */ break; - case 712: -#line 4927 "gram.y" /* yacc.c:1646 */ + case 772: +/* Line 1792 of yacc.c */ +#line 5400 "gram.y" { - (yyval.value) = makeString(psprintf("%d", (yyvsp[0].ival))); + (yyval.value) = makeString(psprintf("%d", (yyvsp[(1) - (1)].ival))); } -#line 29220 "gram.c" /* yacc.c:1646 */ break; - case 713: -#line 4930 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeString((yyvsp[0].str)); } -#line 29226 "gram.c" /* yacc.c:1646 */ + case 773: +/* Line 1792 of yacc.c */ +#line 5403 "gram.y" + { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); } break; - case 714: -#line 4931 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeString((yyvsp[0].str)); } -#line 29232 "gram.c" /* yacc.c:1646 */ + case 774: +/* Line 1792 of yacc.c */ +#line 5404 "gram.y" + { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); } break; - case 715: -#line 4932 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeString((yyvsp[0].str)); } -#line 29238 "gram.c" /* yacc.c:1646 */ + case 775: +/* Line 1792 of yacc.c */ +#line 5405 "gram.y" + { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); } break; - case 716: -#line 4936 "gram.y" /* yacc.c:1646 */ - { (yyval.range) = (yyvsp[0].range); } -#line 29244 "gram.c" /* yacc.c:1646 */ + case 776: +/* Line 1792 of yacc.c */ +#line 5409 "gram.y" + { (yyval.range) = (yyvsp[(2) - (2)].range); } break; - case 717: -#line 4937 "gram.y" /* yacc.c:1646 */ + case 777: +/* Line 1792 of yacc.c */ +#line 5410 "gram.y" { (yyval.range) = NULL; } -#line 29250 "gram.c" /* yacc.c:1646 */ break; - case 718: -#line 4942 "gram.y" /* yacc.c:1646 */ + case 778: +/* Line 1792 of yacc.c */ +#line 5415 "gram.y" { (yyval.ival) = 0; } -#line 29256 "gram.c" /* yacc.c:1646 */ break; - case 719: -#line 4944 "gram.y" /* yacc.c:1646 */ + case 779: +/* Line 1792 of yacc.c */ +#line 5417 "gram.y" { /* * We must complain about conflicting options. * We could, but choose not to, complain about redundant * options (ie, where $2's bit is already set in $1). */ - int newspec = (yyvsp[-1].ival) | (yyvsp[0].ival); + int newspec = (yyvsp[(1) - (2)].ival) | (yyvsp[(2) - (2)].ival); /* special message for this case */ if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(2) - (2)])))); /* generic message for other conflicts */ if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("conflicting constraint properties"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(2) - (2)])))); (yyval.ival) = newspec; } -#line 29284 "gram.c" /* yacc.c:1646 */ break; - case 720: -#line 4970 "gram.y" /* yacc.c:1646 */ + case 780: +/* Line 1792 of yacc.c */ +#line 5443 "gram.y" { (yyval.ival) = CAS_NOT_DEFERRABLE; } -#line 29290 "gram.c" /* yacc.c:1646 */ break; - case 721: -#line 4971 "gram.y" /* yacc.c:1646 */ + case 781: +/* Line 1792 of yacc.c */ +#line 5444 "gram.y" { (yyval.ival) = CAS_DEFERRABLE; } -#line 29296 "gram.c" /* yacc.c:1646 */ break; - case 722: -#line 4972 "gram.y" /* yacc.c:1646 */ + case 782: +/* Line 1792 of yacc.c */ +#line 5445 "gram.y" { (yyval.ival) = CAS_INITIALLY_IMMEDIATE; } -#line 29302 "gram.c" /* yacc.c:1646 */ break; - case 723: -#line 4973 "gram.y" /* yacc.c:1646 */ + case 783: +/* Line 1792 of yacc.c */ +#line 5446 "gram.y" { (yyval.ival) = CAS_INITIALLY_DEFERRED; } -#line 29308 "gram.c" /* yacc.c:1646 */ break; - case 724: -#line 4974 "gram.y" /* yacc.c:1646 */ + case 784: +/* Line 1792 of yacc.c */ +#line 5447 "gram.y" { (yyval.ival) = CAS_NOT_VALID; } -#line 29314 "gram.c" /* yacc.c:1646 */ break; - case 725: -#line 4975 "gram.y" /* yacc.c:1646 */ + case 785: +/* Line 1792 of yacc.c */ +#line 5448 "gram.y" { (yyval.ival) = CAS_NO_INHERIT; } -#line 29320 "gram.c" /* yacc.c:1646 */ - break; - - case 726: -#line 4981 "gram.y" /* yacc.c:1646 */ - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_TRIGGER; - n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); - n->missing_ok = false; - n->concurrent = false; - (yyval.node) = (Node *) n; - } -#line 29335 "gram.c" /* yacc.c:1646 */ - break; - - case 727: -#line 4992 "gram.y" /* yacc.c:1646 */ - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_TRIGGER; - n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); - n->missing_ok = true; - n->concurrent = false; - (yyval.node) = (Node *) n; - } -#line 29350 "gram.c" /* yacc.c:1646 */ break; - case 728: -#line 5016 "gram.y" /* yacc.c:1646 */ + case 786: +/* Line 1792 of yacc.c */ +#line 5463 "gram.y" { CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); - n->trigname = (yyvsp[-7].str); - n->eventname = (yyvsp[-5].str); + n->trigname = (yyvsp[(4) - (11)].str); + n->eventname = (yyvsp[(6) - (11)].str); n->whenclause = NULL; - n->funcname = (yyvsp[-2].list); + n->funcname = (yyvsp[(9) - (11)].list); (yyval.node) = (Node *)n; } -#line 29363 "gram.c" /* yacc.c:1646 */ break; - case 729: -#line 5027 "gram.y" /* yacc.c:1646 */ + case 787: +/* Line 1792 of yacc.c */ +#line 5474 "gram.y" { CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); - n->trigname = (yyvsp[-9].str); - n->eventname = (yyvsp[-7].str); - n->whenclause = (yyvsp[-5].list); - n->funcname = (yyvsp[-2].list); + n->trigname = (yyvsp[(4) - (13)].str); + n->eventname = (yyvsp[(6) - (13)].str); + n->whenclause = (yyvsp[(8) - (13)].list); + n->funcname = (yyvsp[(11) - (13)].list); (yyval.node) = (Node *)n; } -#line 29376 "gram.c" /* yacc.c:1646 */ break; - case 730: -#line 5039 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 29382 "gram.c" /* yacc.c:1646 */ + case 788: +/* Line 1792 of yacc.c */ +#line 5486 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; - case 731: -#line 5041 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 29388 "gram.c" /* yacc.c:1646 */ + case 789: +/* Line 1792 of yacc.c */ +#line 5488 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } break; - case 732: -#line 5046 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem((yyvsp[-4].str), (Node *) (yyvsp[-1].list)); } -#line 29394 "gram.c" /* yacc.c:1646 */ + case 790: +/* Line 1792 of yacc.c */ +#line 5493 "gram.y" + { (yyval.defelt) = makeDefElem((yyvsp[(1) - (5)].str), (Node *) (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); } break; - case 733: -#line 5051 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 29400 "gram.c" /* yacc.c:1646 */ + case 791: +/* Line 1792 of yacc.c */ +#line 5498 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; - case 734: -#line 5053 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } -#line 29406 "gram.c" /* yacc.c:1646 */ + case 792: +/* Line 1792 of yacc.c */ +#line 5500 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); } break; - case 735: -#line 5058 "gram.y" /* yacc.c:1646 */ + case 793: +/* Line 1792 of yacc.c */ +#line 5505 "gram.y" { AlterEventTrigStmt *n = makeNode(AlterEventTrigStmt); - n->trigname = (yyvsp[-1].str); - n->tgenabled = (yyvsp[0].chr); + n->trigname = (yyvsp[(4) - (5)].str); + n->tgenabled = (yyvsp[(5) - (5)].chr); (yyval.node) = (Node *) n; } -#line 29417 "gram.c" /* yacc.c:1646 */ break; - case 736: -#line 5067 "gram.y" /* yacc.c:1646 */ + case 794: +/* Line 1792 of yacc.c */ +#line 5514 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_ORIGIN; } -#line 29423 "gram.c" /* yacc.c:1646 */ break; - case 737: -#line 5068 "gram.y" /* yacc.c:1646 */ + case 795: +/* Line 1792 of yacc.c */ +#line 5515 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_REPLICA; } -#line 29429 "gram.c" /* yacc.c:1646 */ break; - case 738: -#line 5069 "gram.y" /* yacc.c:1646 */ + case 796: +/* Line 1792 of yacc.c */ +#line 5516 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ALWAYS; } -#line 29435 "gram.c" /* yacc.c:1646 */ break; - case 739: -#line 5070 "gram.y" /* yacc.c:1646 */ + case 797: +/* Line 1792 of yacc.c */ +#line 5517 "gram.y" { (yyval.chr) = TRIGGER_DISABLED; } -#line 29441 "gram.c" /* yacc.c:1646 */ break; - case 740: -#line 5084 "gram.y" /* yacc.c:1646 */ + case 798: +/* Line 1792 of yacc.c */ +#line 5531 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); - n->trigname = (yyvsp[-5].str); - n->args = list_make1((yyvsp[-2].node)); + n->trigname = (yyvsp[(3) - (8)].str); + n->args = list_make1((yyvsp[(6) - (8)].node)); n->isconstraint = TRUE; - processCASbits((yyvsp[0].ival), (yylsp[0]), "ASSERTION", + processCASbits((yyvsp[(8) - (8)].ival), (yylsp[(8) - (8)]), "ASSERTION", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); @@ -29457,515 +32525,565 @@ yyreduce: (yyval.node) = (Node *)n; } -#line 29461 "gram.c" /* yacc.c:1646 */ break; - case 741: -#line 5103 "gram.y" /* yacc.c:1646 */ + case 799: +/* Line 1792 of yacc.c */ +#line 5550 "gram.y" { DropStmt *n = makeNode(DropStmt); n->objects = NIL; - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->removeType = OBJECT_TRIGGER; /* XXX */ ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("DROP ASSERTION is not yet implemented"))); (yyval.node) = (Node *) n; } -#line 29477 "gram.c" /* yacc.c:1646 */ break; - case 742: -#line 5126 "gram.y" /* yacc.c:1646 */ + case 800: +/* Line 1792 of yacc.c */ +#line 5572 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_AGGREGATE; n->oldstyle = false; - n->defnames = (yyvsp[-2].list); - n->args = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(3) - (5)].list); + n->args = (yyvsp[(4) - (5)].list); + n->definition = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 29491 "gram.c" /* yacc.c:1646 */ break; - case 743: -#line 5136 "gram.y" /* yacc.c:1646 */ + case 801: +/* Line 1792 of yacc.c */ +#line 5582 "gram.y" { /* old-style (pre-8.2) syntax for CREATE AGGREGATE */ DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_AGGREGATE; n->oldstyle = true; - n->defnames = (yyvsp[-1].list); + n->defnames = (yyvsp[(3) - (4)].list); n->args = NIL; - n->definition = (yyvsp[0].list); + n->definition = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 29506 "gram.c" /* yacc.c:1646 */ break; - case 744: -#line 5147 "gram.y" /* yacc.c:1646 */ + case 802: +/* Line 1792 of yacc.c */ +#line 5593 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_OPERATOR; n->oldstyle = false; - n->defnames = (yyvsp[-1].list); + n->defnames = (yyvsp[(3) - (4)].list); n->args = NIL; - n->definition = (yyvsp[0].list); + n->definition = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 29520 "gram.c" /* yacc.c:1646 */ break; - case 745: -#line 5157 "gram.y" /* yacc.c:1646 */ + case 803: +/* Line 1792 of yacc.c */ +#line 5603 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TYPE; n->oldstyle = false; - n->defnames = (yyvsp[-1].list); + n->defnames = (yyvsp[(3) - (4)].list); n->args = NIL; - n->definition = (yyvsp[0].list); + n->definition = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 29534 "gram.c" /* yacc.c:1646 */ break; - case 746: -#line 5167 "gram.y" /* yacc.c:1646 */ + case 804: +/* Line 1792 of yacc.c */ +#line 5613 "gram.y" { /* Shell type (identified by lack of definition) */ DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TYPE; n->oldstyle = false; - n->defnames = (yyvsp[0].list); + n->defnames = (yyvsp[(3) - (3)].list); n->args = NIL; n->definition = NIL; (yyval.node) = (Node *)n; } -#line 29549 "gram.c" /* yacc.c:1646 */ break; - case 747: -#line 5178 "gram.y" /* yacc.c:1646 */ + case 805: +/* Line 1792 of yacc.c */ +#line 5624 "gram.y" { CompositeTypeStmt *n = makeNode(CompositeTypeStmt); /* can't use qualified_name, sigh */ - n->typevar = makeRangeVarFromAnyName((yyvsp[-4].list), (yylsp[-4]), yyscanner); - n->coldeflist = (yyvsp[-1].list); + n->typevar = makeRangeVarFromAnyName((yyvsp[(3) - (7)].list), (yylsp[(3) - (7)]), yyscanner); + n->coldeflist = (yyvsp[(6) - (7)].list); (yyval.node) = (Node *)n; } -#line 29562 "gram.c" /* yacc.c:1646 */ break; - case 748: -#line 5187 "gram.y" /* yacc.c:1646 */ + case 806: +/* Line 1792 of yacc.c */ +#line 5633 "gram.y" { CreateEnumStmt *n = makeNode(CreateEnumStmt); - n->typeName = (yyvsp[-5].list); - n->vals = (yyvsp[-1].list); + n->typeName = (yyvsp[(3) - (8)].list); + n->vals = (yyvsp[(7) - (8)].list); (yyval.node) = (Node *)n; } -#line 29573 "gram.c" /* yacc.c:1646 */ break; - case 749: -#line 5194 "gram.y" /* yacc.c:1646 */ + case 807: +/* Line 1792 of yacc.c */ +#line 5640 "gram.y" { CreateRangeStmt *n = makeNode(CreateRangeStmt); - n->typeName = (yyvsp[-3].list); - n->params = (yyvsp[0].list); + n->typeName = (yyvsp[(3) - (6)].list); + n->params = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 29584 "gram.c" /* yacc.c:1646 */ break; - case 750: -#line 5201 "gram.y" /* yacc.c:1646 */ + case 808: +/* Line 1792 of yacc.c */ +#line 5647 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSPARSER; n->args = NIL; - n->defnames = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(5) - (6)].list); + n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 29597 "gram.c" /* yacc.c:1646 */ break; - case 751: -#line 5210 "gram.y" /* yacc.c:1646 */ + case 809: +/* Line 1792 of yacc.c */ +#line 5656 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSDICTIONARY; n->args = NIL; - n->defnames = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(5) - (6)].list); + n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 29610 "gram.c" /* yacc.c:1646 */ break; - case 752: -#line 5219 "gram.y" /* yacc.c:1646 */ + case 810: +/* Line 1792 of yacc.c */ +#line 5665 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSTEMPLATE; n->args = NIL; - n->defnames = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(5) - (6)].list); + n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 29623 "gram.c" /* yacc.c:1646 */ break; - case 753: -#line 5228 "gram.y" /* yacc.c:1646 */ + case 811: +/* Line 1792 of yacc.c */ +#line 5674 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSCONFIGURATION; n->args = NIL; - n->defnames = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(5) - (6)].list); + n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 29636 "gram.c" /* yacc.c:1646 */ break; - case 754: -#line 5237 "gram.y" /* yacc.c:1646 */ + case 812: +/* Line 1792 of yacc.c */ +#line 5683 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; n->args = NIL; - n->defnames = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(3) - (4)].list); + n->definition = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 29649 "gram.c" /* yacc.c:1646 */ break; - case 755: -#line 5246 "gram.y" /* yacc.c:1646 */ + case 813: +/* Line 1792 of yacc.c */ +#line 5692 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; n->args = NIL; - n->defnames = (yyvsp[-2].list); - n->definition = list_make1(makeDefElem("from", (Node *) (yyvsp[0].list))); + n->defnames = (yyvsp[(6) - (7)].list); + n->definition = (yyvsp[(7) - (7)].list); + n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 29662 "gram.c" /* yacc.c:1646 */ break; - case 756: -#line 5256 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 29668 "gram.c" /* yacc.c:1646 */ + case 814: +/* Line 1792 of yacc.c */ +#line 5702 "gram.y" + { + DefineStmt *n = makeNode(DefineStmt); + n->kind = OBJECT_COLLATION; + n->args = NIL; + n->defnames = (yyvsp[(3) - (5)].list); + n->definition = list_make1(makeDefElem("from", (Node *) (yyvsp[(5) - (5)].list), (yylsp[(5) - (5)]))); + (yyval.node) = (Node *)n; + } break; - case 757: -#line 5259 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 29674 "gram.c" /* yacc.c:1646 */ + case 815: +/* Line 1792 of yacc.c */ +#line 5711 "gram.y" + { + DefineStmt *n = makeNode(DefineStmt); + n->kind = OBJECT_COLLATION; + n->args = NIL; + n->defnames = (yyvsp[(6) - (8)].list); + n->definition = list_make1(makeDefElem("from", (Node *) (yyvsp[(8) - (8)].list), (yylsp[(8) - (8)]))); + n->if_not_exists = true; + (yyval.node) = (Node *)n; + } break; - case 758: -#line 5260 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 29680 "gram.c" /* yacc.c:1646 */ + case 816: +/* Line 1792 of yacc.c */ +#line 5722 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 759: -#line 5264 "gram.y" /* yacc.c:1646 */ + case 817: +/* Line 1792 of yacc.c */ +#line 5725 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } + break; + + case 818: +/* Line 1792 of yacc.c */ +#line 5726 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } + break; + + case 819: +/* Line 1792 of yacc.c */ +#line 5730 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *) (yyvsp[0].node)); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); } -#line 29688 "gram.c" /* yacc.c:1646 */ break; - case 760: -#line 5268 "gram.y" /* yacc.c:1646 */ + case 820: +/* Line 1792 of yacc.c */ +#line 5734 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[0].str), NULL); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); } -#line 29696 "gram.c" /* yacc.c:1646 */ break; - case 761: -#line 5274 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)(yyvsp[0].typnam); } -#line 29702 "gram.c" /* yacc.c:1646 */ + case 821: +/* Line 1792 of yacc.c */ +#line 5740 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].typnam); } break; - case 762: -#line 5275 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[0].keyword))); } -#line 29708 "gram.c" /* yacc.c:1646 */ + case 822: +/* Line 1792 of yacc.c */ +#line 5741 "gram.y" + { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); } break; - case 763: -#line 5276 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)(yyvsp[0].list); } -#line 29714 "gram.c" /* yacc.c:1646 */ + case 823: +/* Line 1792 of yacc.c */ +#line 5742 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].list); } break; - case 764: -#line 5277 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)(yyvsp[0].value); } -#line 29720 "gram.c" /* yacc.c:1646 */ + case 824: +/* Line 1792 of yacc.c */ +#line 5743 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].value); } break; - case 765: -#line 5278 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)makeString((yyvsp[0].str)); } -#line 29726 "gram.c" /* yacc.c:1646 */ + case 825: +/* Line 1792 of yacc.c */ +#line 5744 "gram.y" + { (yyval.node) = (Node *)makeString((yyvsp[(1) - (1)].str)); } break; - case 766: -#line 5281 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 29732 "gram.c" /* yacc.c:1646 */ + case 826: +/* Line 1792 of yacc.c */ +#line 5745 "gram.y" + { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); } break; - case 767: -#line 5284 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 29738 "gram.c" /* yacc.c:1646 */ + case 827: +/* Line 1792 of yacc.c */ +#line 5748 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 768: -#line 5285 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 29744 "gram.c" /* yacc.c:1646 */ + case 828: +/* Line 1792 of yacc.c */ +#line 5751 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; - case 769: -#line 5294 "gram.y" /* yacc.c:1646 */ + case 829: +/* Line 1792 of yacc.c */ +#line 5752 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } + break; + + case 830: +/* Line 1792 of yacc.c */ +#line 5761 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *)(yyvsp[0].node)); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)(yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); } -#line 29752 "gram.c" /* yacc.c:1646 */ break; - case 770: -#line 5300 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 29758 "gram.c" /* yacc.c:1646 */ + case 831: +/* Line 1792 of yacc.c */ +#line 5767 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 771: -#line 5301 "gram.y" /* yacc.c:1646 */ + case 832: +/* Line 1792 of yacc.c */ +#line 5768 "gram.y" { (yyval.list) = NIL; } -#line 29764 "gram.c" /* yacc.c:1646 */ break; - case 772: -#line 5305 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 29770 "gram.c" /* yacc.c:1646 */ + case 833: +/* Line 1792 of yacc.c */ +#line 5772 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; - case 773: -#line 5307 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } -#line 29776 "gram.c" /* yacc.c:1646 */ + case 834: +/* Line 1792 of yacc.c */ +#line 5774 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); } break; - case 774: -#line 5318 "gram.y" /* yacc.c:1646 */ + case 835: +/* Line 1792 of yacc.c */ +#line 5785 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); - n->typeName = (yyvsp[-4].list); - n->newVal = (yyvsp[0].str); + n->typeName = (yyvsp[(3) - (7)].list); + n->oldVal = NULL; + n->newVal = (yyvsp[(7) - (7)].str); n->newValNeighbor = NULL; n->newValIsAfter = true; - n->skipIfExists = (yyvsp[-1].boolean); + n->skipIfNewValExists = (yyvsp[(6) - (7)].boolean); (yyval.node) = (Node *) n; } -#line 29790 "gram.c" /* yacc.c:1646 */ break; - case 775: -#line 5328 "gram.y" /* yacc.c:1646 */ + case 836: +/* Line 1792 of yacc.c */ +#line 5796 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); - n->typeName = (yyvsp[-6].list); - n->newVal = (yyvsp[-2].str); - n->newValNeighbor = (yyvsp[0].str); + n->typeName = (yyvsp[(3) - (9)].list); + n->oldVal = NULL; + n->newVal = (yyvsp[(7) - (9)].str); + n->newValNeighbor = (yyvsp[(9) - (9)].str); n->newValIsAfter = false; - n->skipIfExists = (yyvsp[-3].boolean); + n->skipIfNewValExists = (yyvsp[(6) - (9)].boolean); (yyval.node) = (Node *) n; } -#line 29804 "gram.c" /* yacc.c:1646 */ break; - case 776: -#line 5338 "gram.y" /* yacc.c:1646 */ + case 837: +/* Line 1792 of yacc.c */ +#line 5807 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); - n->typeName = (yyvsp[-6].list); - n->newVal = (yyvsp[-2].str); - n->newValNeighbor = (yyvsp[0].str); + n->typeName = (yyvsp[(3) - (9)].list); + n->oldVal = NULL; + n->newVal = (yyvsp[(7) - (9)].str); + n->newValNeighbor = (yyvsp[(9) - (9)].str); n->newValIsAfter = true; - n->skipIfExists = (yyvsp[-3].boolean); + n->skipIfNewValExists = (yyvsp[(6) - (9)].boolean); (yyval.node) = (Node *) n; } -#line 29818 "gram.c" /* yacc.c:1646 */ break; - case 777: -#line 5349 "gram.y" /* yacc.c:1646 */ + case 838: +/* Line 1792 of yacc.c */ +#line 5818 "gram.y" + { + AlterEnumStmt *n = makeNode(AlterEnumStmt); + n->typeName = (yyvsp[(3) - (8)].list); + n->oldVal = (yyvsp[(6) - (8)].str); + n->newVal = (yyvsp[(8) - (8)].str); + n->newValNeighbor = NULL; + n->newValIsAfter = false; + n->skipIfNewValExists = false; + (yyval.node) = (Node *) n; + } + break; + + case 839: +/* Line 1792 of yacc.c */ +#line 5830 "gram.y" { (yyval.boolean) = true; } -#line 29824 "gram.c" /* yacc.c:1646 */ break; - case 778: -#line 5350 "gram.y" /* yacc.c:1646 */ + case 840: +/* Line 1792 of yacc.c */ +#line 5831 "gram.y" { (yyval.boolean) = false; } -#line 29830 "gram.c" /* yacc.c:1646 */ break; - case 779: -#line 5368 "gram.y" /* yacc.c:1646 */ + case 841: +/* Line 1792 of yacc.c */ +#line 5849 "gram.y" { CreateOpClassStmt *n = makeNode(CreateOpClassStmt); - n->opclassname = (yyvsp[-9].list); - n->isDefault = (yyvsp[-8].boolean); - n->datatype = (yyvsp[-5].typnam); - n->amname = (yyvsp[-3].str); - n->opfamilyname = (yyvsp[-2].list); - n->items = (yyvsp[0].list); + n->opclassname = (yyvsp[(4) - (13)].list); + n->isDefault = (yyvsp[(5) - (13)].boolean); + n->datatype = (yyvsp[(8) - (13)].typnam); + n->amname = (yyvsp[(10) - (13)].str); + n->opfamilyname = (yyvsp[(11) - (13)].list); + n->items = (yyvsp[(13) - (13)].list); (yyval.node) = (Node *) n; } -#line 29845 "gram.c" /* yacc.c:1646 */ break; - case 780: -#line 5381 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 29851 "gram.c" /* yacc.c:1646 */ + case 842: +/* Line 1792 of yacc.c */ +#line 5862 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 781: -#line 5382 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 29857 "gram.c" /* yacc.c:1646 */ + case 843: +/* Line 1792 of yacc.c */ +#line 5863 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 782: -#line 5387 "gram.y" /* yacc.c:1646 */ + case 844: +/* Line 1792 of yacc.c */ +#line 5868 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); + ObjectWithArgs *owa = makeNode(ObjectWithArgs); + owa->objname = (yyvsp[(3) - (5)].list); + owa->objargs = NIL; n->itemtype = OPCLASS_ITEM_OPERATOR; - n->name = (yyvsp[-2].list); - n->args = NIL; - n->number = (yyvsp[-3].ival); - n->order_family = (yyvsp[-1].list); + n->name = owa; + n->number = (yyvsp[(2) - (5)].ival); + n->order_family = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; } -#line 29871 "gram.c" /* yacc.c:1646 */ break; - case 783: -#line 5398 "gram.y" /* yacc.c:1646 */ + case 845: +/* Line 1792 of yacc.c */ +#line 5881 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; - n->name = (yyvsp[-3].list); - n->args = (yyvsp[-2].list); - n->number = (yyvsp[-4].ival); - n->order_family = (yyvsp[-1].list); + n->name = (yyvsp[(3) - (5)].objwithargs); + n->number = (yyvsp[(2) - (5)].ival); + n->order_family = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; } -#line 29885 "gram.c" /* yacc.c:1646 */ break; - case 784: -#line 5408 "gram.y" /* yacc.c:1646 */ + case 846: +/* Line 1792 of yacc.c */ +#line 5890 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; - n->name = (yyvsp[-1].list); - n->args = extractArgTypes((yyvsp[0].list)); - n->number = (yyvsp[-2].ival); + n->name = (yyvsp[(3) - (3)].objwithargs); + n->number = (yyvsp[(2) - (3)].ival); (yyval.node) = (Node *) n; } -#line 29898 "gram.c" /* yacc.c:1646 */ break; - case 785: -#line 5417 "gram.y" /* yacc.c:1646 */ + case 847: +/* Line 1792 of yacc.c */ +#line 5898 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; - n->name = (yyvsp[-1].list); - n->args = extractArgTypes((yyvsp[0].list)); - n->number = (yyvsp[-5].ival); - n->class_args = (yyvsp[-3].list); + n->name = (yyvsp[(6) - (6)].objwithargs); + n->number = (yyvsp[(2) - (6)].ival); + n->class_args = (yyvsp[(4) - (6)].list); (yyval.node) = (Node *) n; } -#line 29912 "gram.c" /* yacc.c:1646 */ break; - case 786: -#line 5427 "gram.y" /* yacc.c:1646 */ + case 848: +/* Line 1792 of yacc.c */ +#line 5907 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_STORAGETYPE; - n->storedtype = (yyvsp[0].typnam); + n->storedtype = (yyvsp[(2) - (2)].typnam); (yyval.node) = (Node *) n; } -#line 29923 "gram.c" /* yacc.c:1646 */ break; - case 787: -#line 5435 "gram.y" /* yacc.c:1646 */ + case 849: +/* Line 1792 of yacc.c */ +#line 5915 "gram.y" { (yyval.boolean) = TRUE; } -#line 29929 "gram.c" /* yacc.c:1646 */ break; - case 788: -#line 5436 "gram.y" /* yacc.c:1646 */ + case 850: +/* Line 1792 of yacc.c */ +#line 5916 "gram.y" { (yyval.boolean) = FALSE; } -#line 29935 "gram.c" /* yacc.c:1646 */ break; - case 789: -#line 5439 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 29941 "gram.c" /* yacc.c:1646 */ + case 851: +/* Line 1792 of yacc.c */ +#line 5919 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 790: -#line 5440 "gram.y" /* yacc.c:1646 */ + case 852: +/* Line 1792 of yacc.c */ +#line 5920 "gram.y" { (yyval.list) = NIL; } -#line 29947 "gram.c" /* yacc.c:1646 */ break; - case 791: -#line 5443 "gram.y" /* yacc.c:1646 */ + case 853: +/* Line 1792 of yacc.c */ +#line 5923 "gram.y" { (yyval.list) = NIL; } -#line 29953 "gram.c" /* yacc.c:1646 */ break; - case 792: -#line 5444 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 29959 "gram.c" /* yacc.c:1646 */ + case 854: +/* Line 1792 of yacc.c */ +#line 5924 "gram.y" + { (yyval.list) = (yyvsp[(4) - (4)].list); } break; - case 793: -#line 5445 "gram.y" /* yacc.c:1646 */ + case 855: +/* Line 1792 of yacc.c */ +#line 5925 "gram.y" { (yyval.list) = NIL; } -#line 29965 "gram.c" /* yacc.c:1646 */ break; - case 794: -#line 5449 "gram.y" /* yacc.c:1646 */ + case 856: +/* Line 1792 of yacc.c */ +#line 5929 "gram.y" { /* * RECHECK no longer does anything in opclass definitions, @@ -29976,552 +33094,651 @@ yyreduce: (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("RECHECK is no longer required"), errhint("Update your data type."), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); (yyval.boolean) = TRUE; } -#line 29983 "gram.c" /* yacc.c:1646 */ break; - case 795: -#line 5462 "gram.y" /* yacc.c:1646 */ + case 857: +/* Line 1792 of yacc.c */ +#line 5942 "gram.y" { (yyval.boolean) = FALSE; } -#line 29989 "gram.c" /* yacc.c:1646 */ break; - case 796: -#line 5468 "gram.y" /* yacc.c:1646 */ + case 858: +/* Line 1792 of yacc.c */ +#line 5948 "gram.y" { CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); - n->opfamilyname = (yyvsp[-2].list); - n->amname = (yyvsp[0].str); + n->opfamilyname = (yyvsp[(4) - (6)].list); + n->amname = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 30000 "gram.c" /* yacc.c:1646 */ break; - case 797: -#line 5478 "gram.y" /* yacc.c:1646 */ + case 859: +/* Line 1792 of yacc.c */ +#line 5958 "gram.y" { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); - n->opfamilyname = (yyvsp[-4].list); - n->amname = (yyvsp[-2].str); + n->opfamilyname = (yyvsp[(4) - (8)].list); + n->amname = (yyvsp[(6) - (8)].str); n->isDrop = false; - n->items = (yyvsp[0].list); + n->items = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; } -#line 30013 "gram.c" /* yacc.c:1646 */ break; - case 798: -#line 5487 "gram.y" /* yacc.c:1646 */ + case 860: +/* Line 1792 of yacc.c */ +#line 5967 "gram.y" { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); - n->opfamilyname = (yyvsp[-4].list); - n->amname = (yyvsp[-2].str); + n->opfamilyname = (yyvsp[(4) - (8)].list); + n->amname = (yyvsp[(6) - (8)].str); n->isDrop = true; - n->items = (yyvsp[0].list); + n->items = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; } -#line 30026 "gram.c" /* yacc.c:1646 */ break; - case 799: -#line 5498 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 30032 "gram.c" /* yacc.c:1646 */ + case 861: +/* Line 1792 of yacc.c */ +#line 5978 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 800: -#line 5499 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 30038 "gram.c" /* yacc.c:1646 */ + case 862: +/* Line 1792 of yacc.c */ +#line 5979 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 801: -#line 5504 "gram.y" /* yacc.c:1646 */ + case 863: +/* Line 1792 of yacc.c */ +#line 5984 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; - n->number = (yyvsp[-3].ival); - n->args = (yyvsp[-1].list); + n->number = (yyvsp[(2) - (5)].ival); + n->class_args = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; } -#line 30050 "gram.c" /* yacc.c:1646 */ break; - case 802: -#line 5512 "gram.y" /* yacc.c:1646 */ + case 864: +/* Line 1792 of yacc.c */ +#line 5992 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; - n->number = (yyvsp[-3].ival); - n->args = (yyvsp[-1].list); + n->number = (yyvsp[(2) - (5)].ival); + n->class_args = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; } -#line 30062 "gram.c" /* yacc.c:1646 */ break; - case 803: -#line 5524 "gram.y" /* yacc.c:1646 */ + case 865: +/* Line 1792 of yacc.c */ +#line 6004 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->objects = list_make1(lcons(makeString((yyvsp[-1].str)), (yyvsp[-3].list))); + n->objects = list_make1(lcons(makeString((yyvsp[(6) - (7)].str)), (yyvsp[(4) - (7)].list))); n->removeType = OBJECT_OPCLASS; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *) n; } -#line 30076 "gram.c" /* yacc.c:1646 */ break; - case 804: -#line 5534 "gram.y" /* yacc.c:1646 */ + case 866: +/* Line 1792 of yacc.c */ +#line 6014 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->objects = list_make1(lcons(makeString((yyvsp[-1].str)), (yyvsp[-3].list))); + n->objects = list_make1(lcons(makeString((yyvsp[(8) - (9)].str)), (yyvsp[(6) - (9)].list))); n->removeType = OBJECT_OPCLASS; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *) n; } -#line 30090 "gram.c" /* yacc.c:1646 */ break; - case 805: -#line 5547 "gram.y" /* yacc.c:1646 */ + case 867: +/* Line 1792 of yacc.c */ +#line 6027 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->objects = list_make1(lcons(makeString((yyvsp[-1].str)), (yyvsp[-3].list))); + n->objects = list_make1(lcons(makeString((yyvsp[(6) - (7)].str)), (yyvsp[(4) - (7)].list))); n->removeType = OBJECT_OPFAMILY; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *) n; } -#line 30104 "gram.c" /* yacc.c:1646 */ break; - case 806: -#line 5557 "gram.y" /* yacc.c:1646 */ + case 868: +/* Line 1792 of yacc.c */ +#line 6037 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->objects = list_make1(lcons(makeString((yyvsp[-1].str)), (yyvsp[-3].list))); + n->objects = list_make1(lcons(makeString((yyvsp[(8) - (9)].str)), (yyvsp[(6) - (9)].list))); n->removeType = OBJECT_OPFAMILY; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *) n; } -#line 30118 "gram.c" /* yacc.c:1646 */ break; - case 807: -#line 5579 "gram.y" /* yacc.c:1646 */ + case 869: +/* Line 1792 of yacc.c */ +#line 6059 "gram.y" { DropOwnedStmt *n = makeNode(DropOwnedStmt); - n->roles = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->roles = (yyvsp[(4) - (5)].list); + n->behavior = (yyvsp[(5) - (5)].dbehavior); (yyval.node) = (Node *)n; } -#line 30129 "gram.c" /* yacc.c:1646 */ break; - case 808: -#line 5589 "gram.y" /* yacc.c:1646 */ + case 870: +/* Line 1792 of yacc.c */ +#line 6069 "gram.y" { ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); - n->roles = (yyvsp[-2].list); - n->newrole = (yyvsp[0].node); + n->roles = (yyvsp[(4) - (6)].list); + n->newrole = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 30140 "gram.c" /* yacc.c:1646 */ break; - case 809: -#line 5607 "gram.y" /* yacc.c:1646 */ + case 871: +/* Line 1792 of yacc.c */ +#line 6087 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->removeType = (yyvsp[-4].objtype); + n->removeType = (yyvsp[(2) - (6)].objtype); n->missing_ok = TRUE; - n->objects = (yyvsp[-1].list); - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *)n; } -#line 30155 "gram.c" /* yacc.c:1646 */ break; - case 810: -#line 5618 "gram.y" /* yacc.c:1646 */ + case 872: +/* Line 1792 of yacc.c */ +#line 6097 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->removeType = (yyvsp[-2].objtype); + n->removeType = (yyvsp[(2) - (4)].objtype); n->missing_ok = FALSE; - n->objects = (yyvsp[-1].list); - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *)n; } -#line 30170 "gram.c" /* yacc.c:1646 */ break; - case 811: -#line 5629 "gram.y" /* yacc.c:1646 */ + case 873: +/* Line 1792 of yacc.c */ +#line 6107 "gram.y" + { + DropStmt *n = makeNode(DropStmt); + n->removeType = (yyvsp[(2) - (6)].objtype); + n->missing_ok = TRUE; + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); + n->concurrent = false; + (yyval.node) = (Node *)n; + } + break; + + case 874: +/* Line 1792 of yacc.c */ +#line 6117 "gram.y" + { + DropStmt *n = makeNode(DropStmt); + n->removeType = (yyvsp[(2) - (4)].objtype); + n->missing_ok = FALSE; + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); + n->concurrent = false; + (yyval.node) = (Node *)n; + } + break; + + case 875: +/* Line 1792 of yacc.c */ +#line 6127 "gram.y" + { + DropStmt *n = makeNode(DropStmt); + n->removeType = (yyvsp[(2) - (6)].objtype); + n->objects = list_make1(lappend((yyvsp[(5) - (6)].list), makeString((yyvsp[(3) - (6)].str)))); + n->behavior = (yyvsp[(6) - (6)].dbehavior); + n->missing_ok = false; + n->concurrent = false; + (yyval.node) = (Node *) n; + } + break; + + case 876: +/* Line 1792 of yacc.c */ +#line 6137 "gram.y" + { + DropStmt *n = makeNode(DropStmt); + n->removeType = (yyvsp[(2) - (8)].objtype); + n->objects = list_make1(lappend((yyvsp[(7) - (8)].list), makeString((yyvsp[(5) - (8)].str)))); + n->behavior = (yyvsp[(8) - (8)].dbehavior); + n->missing_ok = true; + n->concurrent = false; + (yyval.node) = (Node *) n; + } + break; + + case 877: +/* Line 1792 of yacc.c */ +#line 6147 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TYPE; n->missing_ok = FALSE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; } -#line 30184 "gram.c" /* yacc.c:1646 */ break; - case 812: -#line 5639 "gram.y" /* yacc.c:1646 */ + case 878: +/* Line 1792 of yacc.c */ +#line 6157 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TYPE; n->missing_ok = TRUE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; } -#line 30198 "gram.c" /* yacc.c:1646 */ break; - case 813: -#line 5649 "gram.y" /* yacc.c:1646 */ + case 879: +/* Line 1792 of yacc.c */ +#line 6167 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_DOMAIN; n->missing_ok = FALSE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; } -#line 30212 "gram.c" /* yacc.c:1646 */ break; - case 814: -#line 5659 "gram.y" /* yacc.c:1646 */ + case 880: +/* Line 1792 of yacc.c */ +#line 6177 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_DOMAIN; n->missing_ok = TRUE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; } -#line 30226 "gram.c" /* yacc.c:1646 */ break; - case 815: -#line 5669 "gram.y" /* yacc.c:1646 */ + case 881: +/* Line 1792 of yacc.c */ +#line 6187 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_INDEX; n->missing_ok = FALSE; - n->objects = (yyvsp[-1].list); - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(4) - (5)].list); + n->behavior = (yyvsp[(5) - (5)].dbehavior); n->concurrent = true; (yyval.node) = (Node *)n; } -#line 30241 "gram.c" /* yacc.c:1646 */ break; - case 816: -#line 5680 "gram.y" /* yacc.c:1646 */ + case 882: +/* Line 1792 of yacc.c */ +#line 6197 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_INDEX; n->missing_ok = TRUE; - n->objects = (yyvsp[-1].list); - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(6) - (7)].list); + n->behavior = (yyvsp[(7) - (7)].dbehavior); n->concurrent = true; (yyval.node) = (Node *)n; } -#line 30256 "gram.c" /* yacc.c:1646 */ break; - case 817: -#line 5693 "gram.y" /* yacc.c:1646 */ + case 883: +/* Line 1792 of yacc.c */ +#line 6210 "gram.y" { (yyval.objtype) = OBJECT_TABLE; } -#line 30262 "gram.c" /* yacc.c:1646 */ break; - case 818: -#line 5694 "gram.y" /* yacc.c:1646 */ + case 884: +/* Line 1792 of yacc.c */ +#line 6211 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; } -#line 30268 "gram.c" /* yacc.c:1646 */ break; - case 819: -#line 5695 "gram.y" /* yacc.c:1646 */ + case 885: +/* Line 1792 of yacc.c */ +#line 6212 "gram.y" { (yyval.objtype) = OBJECT_VIEW; } -#line 30274 "gram.c" /* yacc.c:1646 */ break; - case 820: -#line 5696 "gram.y" /* yacc.c:1646 */ + case 886: +/* Line 1792 of yacc.c */ +#line 6213 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; } -#line 30280 "gram.c" /* yacc.c:1646 */ break; - case 821: -#line 5697 "gram.y" /* yacc.c:1646 */ + case 887: +/* Line 1792 of yacc.c */ +#line 6214 "gram.y" { (yyval.objtype) = OBJECT_INDEX; } -#line 30286 "gram.c" /* yacc.c:1646 */ break; - case 822: -#line 5698 "gram.y" /* yacc.c:1646 */ + case 888: +/* Line 1792 of yacc.c */ +#line 6215 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; } -#line 30292 "gram.c" /* yacc.c:1646 */ break; - case 823: -#line 5699 "gram.y" /* yacc.c:1646 */ + case 889: +/* Line 1792 of yacc.c */ +#line 6216 "gram.y" + { (yyval.objtype) = OBJECT_COLLATION; } + break; + + case 890: +/* Line 1792 of yacc.c */ +#line 6217 "gram.y" + { (yyval.objtype) = OBJECT_CONVERSION; } + break; + + case 891: +/* Line 1792 of yacc.c */ +#line 6218 "gram.y" + { (yyval.objtype) = OBJECT_STATISTIC_EXT; } + break; + + case 892: +/* Line 1792 of yacc.c */ +#line 6219 "gram.y" + { (yyval.objtype) = OBJECT_TSPARSER; } + break; + + case 893: +/* Line 1792 of yacc.c */ +#line 6220 "gram.y" + { (yyval.objtype) = OBJECT_TSDICTIONARY; } + break; + + case 894: +/* Line 1792 of yacc.c */ +#line 6221 "gram.y" + { (yyval.objtype) = OBJECT_TSTEMPLATE; } + break; + + case 895: +/* Line 1792 of yacc.c */ +#line 6222 "gram.y" + { (yyval.objtype) = OBJECT_TSCONFIGURATION; } + break; + + case 896: +/* Line 1792 of yacc.c */ +#line 6227 "gram.y" { (yyval.objtype) = OBJECT_ACCESS_METHOD; } -#line 30298 "gram.c" /* yacc.c:1646 */ break; - case 824: -#line 5700 "gram.y" /* yacc.c:1646 */ + case 897: +/* Line 1792 of yacc.c */ +#line 6228 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; } -#line 30304 "gram.c" /* yacc.c:1646 */ break; - case 825: -#line 5701 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_COLLATION; } -#line 30310 "gram.c" /* yacc.c:1646 */ + case 898: +/* Line 1792 of yacc.c */ +#line 6229 "gram.y" + { (yyval.objtype) = OBJECT_EXTENSION; } break; - case 826: -#line 5702 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_CONVERSION; } -#line 30316 "gram.c" /* yacc.c:1646 */ + case 899: +/* Line 1792 of yacc.c */ +#line 6230 "gram.y" + { (yyval.objtype) = OBJECT_FDW; } break; - case 827: -#line 5703 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_SCHEMA; } -#line 30322 "gram.c" /* yacc.c:1646 */ + case 900: +/* Line 1792 of yacc.c */ +#line 6231 "gram.y" + { (yyval.objtype) = OBJECT_PUBLICATION; } break; - case 828: -#line 5704 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_EXTENSION; } -#line 30328 "gram.c" /* yacc.c:1646 */ + case 901: +/* Line 1792 of yacc.c */ +#line 6232 "gram.y" + { (yyval.objtype) = OBJECT_SCHEMA; } break; - case 829: -#line 5705 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TSPARSER; } -#line 30334 "gram.c" /* yacc.c:1646 */ + case 902: +/* Line 1792 of yacc.c */ +#line 6233 "gram.y" + { (yyval.objtype) = OBJECT_FOREIGN_SERVER; } break; - case 830: -#line 5706 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TSDICTIONARY; } -#line 30340 "gram.c" /* yacc.c:1646 */ + case 903: +/* Line 1792 of yacc.c */ +#line 6238 "gram.y" + { (yyval.objtype) = OBJECT_POLICY; } break; - case 831: -#line 5707 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TSTEMPLATE; } -#line 30346 "gram.c" /* yacc.c:1646 */ + case 904: +/* Line 1792 of yacc.c */ +#line 6239 "gram.y" + { (yyval.objtype) = OBJECT_RULE; } break; - case 832: -#line 5708 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TSCONFIGURATION; } -#line 30352 "gram.c" /* yacc.c:1646 */ + case 905: +/* Line 1792 of yacc.c */ +#line 6240 "gram.y" + { (yyval.objtype) = OBJECT_TRIGGER; } break; - case 833: -#line 5712 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].list)); } -#line 30358 "gram.c" /* yacc.c:1646 */ + case 906: +/* Line 1792 of yacc.c */ +#line 6244 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); } break; - case 834: -#line 5713 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } -#line 30364 "gram.c" /* yacc.c:1646 */ + case 907: +/* Line 1792 of yacc.c */ +#line 6245 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; - case 835: -#line 5716 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 30370 "gram.c" /* yacc.c:1646 */ + case 908: +/* Line 1792 of yacc.c */ +#line 6248 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; - case 836: -#line 5717 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)); } -#line 30376 "gram.c" /* yacc.c:1646 */ + case 909: +/* Line 1792 of yacc.c */ +#line 6249 "gram.y" + { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); } break; - case 837: -#line 5721 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 30382 "gram.c" /* yacc.c:1646 */ + case 910: +/* Line 1792 of yacc.c */ +#line 6253 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(2) - (2)].str))); } break; - case 838: -#line 5723 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } -#line 30388 "gram.c" /* yacc.c:1646 */ + case 911: +/* Line 1792 of yacc.c */ +#line 6255 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); } break; - case 839: -#line 5727 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(list_make1((yyvsp[0].typnam))); } -#line 30394 "gram.c" /* yacc.c:1646 */ + case 912: +/* Line 1792 of yacc.c */ +#line 6259 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); } break; - case 840: -#line 5728 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), list_make1((yyvsp[0].typnam))); } -#line 30400 "gram.c" /* yacc.c:1646 */ + case 913: +/* Line 1792 of yacc.c */ +#line 6260 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); } break; - case 841: -#line 5739 "gram.y" /* yacc.c:1646 */ + case 914: +/* Line 1792 of yacc.c */ +#line 6271 "gram.y" { TruncateStmt *n = makeNode(TruncateStmt); - n->relations = (yyvsp[-2].list); - n->restart_seqs = (yyvsp[-1].boolean); - n->behavior = (yyvsp[0].dbehavior); + n->relations = (yyvsp[(3) - (5)].list); + n->restart_seqs = (yyvsp[(4) - (5)].boolean); + n->behavior = (yyvsp[(5) - (5)].dbehavior); (yyval.node) = (Node *)n; } -#line 30412 "gram.c" /* yacc.c:1646 */ break; - case 842: -#line 5749 "gram.y" /* yacc.c:1646 */ + case 915: +/* Line 1792 of yacc.c */ +#line 6281 "gram.y" { (yyval.boolean) = false; } -#line 30418 "gram.c" /* yacc.c:1646 */ break; - case 843: -#line 5750 "gram.y" /* yacc.c:1646 */ + case 916: +/* Line 1792 of yacc.c */ +#line 6282 "gram.y" { (yyval.boolean) = true; } -#line 30424 "gram.c" /* yacc.c:1646 */ break; - case 844: -#line 5751 "gram.y" /* yacc.c:1646 */ + case 917: +/* Line 1792 of yacc.c */ +#line 6283 "gram.y" { (yyval.boolean) = false; } -#line 30430 "gram.c" /* yacc.c:1646 */ break; - case 845: -#line 5786 "gram.y" /* yacc.c:1646 */ + case 918: +/* Line 1792 of yacc.c */ +#line 6318 "gram.y" { CommentStmt *n = makeNode(CommentStmt); - n->objtype = (yyvsp[-3].objtype); - n->objname = (yyvsp[-2].list); - n->objargs = NIL; - n->comment = (yyvsp[0].str); + n->objtype = (yyvsp[(3) - (6)].objtype); + n->object = (Node *) (yyvsp[(4) - (6)].list); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 30443 "gram.c" /* yacc.c:1646 */ break; - case 846: -#line 5795 "gram.y" /* yacc.c:1646 */ + case 919: +/* Line 1792 of yacc.c */ +#line 6326 "gram.y" + { + CommentStmt *n = makeNode(CommentStmt); + n->objtype = (yyvsp[(3) - (6)].objtype); + n->object = (Node *) makeString((yyvsp[(4) - (6)].str)); + n->comment = (yyvsp[(6) - (6)].str); + (yyval.node) = (Node *) n; + } + break; + + case 920: +/* Line 1792 of yacc.c */ +#line 6334 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TYPE; - n->objname = list_make1((yyvsp[-2].typnam)); - n->objargs = NIL; - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(4) - (6)].typnam); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 30456 "gram.c" /* yacc.c:1646 */ break; - case 847: -#line 5804 "gram.y" /* yacc.c:1646 */ + case 921: +/* Line 1792 of yacc.c */ +#line 6342 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_DOMAIN; - n->objname = list_make1((yyvsp[-2].typnam)); - n->objargs = NIL; - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(4) - (6)].typnam); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 30469 "gram.c" /* yacc.c:1646 */ break; - case 848: -#line 5813 "gram.y" /* yacc.c:1646 */ + case 922: +/* Line 1792 of yacc.c */ +#line 6350 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_AGGREGATE; - n->objname = (yyvsp[-3].list); - n->objargs = extractAggrArgTypes((yyvsp[-2].list)); - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 30482 "gram.c" /* yacc.c:1646 */ break; - case 849: -#line 5822 "gram.y" /* yacc.c:1646 */ + case 923: +/* Line 1792 of yacc.c */ +#line 6358 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_FUNCTION; - n->objname = (yyvsp[-3].list); - n->objargs = extractArgTypes((yyvsp[-2].list)); - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 30495 "gram.c" /* yacc.c:1646 */ break; - case 850: -#line 5831 "gram.y" /* yacc.c:1646 */ + case 924: +/* Line 1792 of yacc.c */ +#line 6366 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPERATOR; - n->objname = (yyvsp[-3].list); - n->objargs = (yyvsp[-2].list); - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 30508 "gram.c" /* yacc.c:1646 */ break; - case 851: -#line 5840 "gram.y" /* yacc.c:1646 */ + case 925: +/* Line 1792 of yacc.c */ +#line 6374 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TABCONSTRAINT; - n->objname = lappend((yyvsp[-2].list), makeString((yyvsp[-4].str))); - n->objargs = NIL; - n->comment = (yyvsp[0].str); + n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); + n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 30521 "gram.c" /* yacc.c:1646 */ break; - case 852: -#line 5849 "gram.y" /* yacc.c:1646 */ + case 926: +/* Line 1792 of yacc.c */ +#line 6382 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_DOMCONSTRAINT; @@ -30530,1309 +33747,1292 @@ yyreduce: * there's a shift/reduce conflict if we do that, so fix it * up here. */ - n->objname = list_make1(makeTypeNameFromNameList((yyvsp[-2].list))); - n->objargs = list_make1(makeString((yyvsp[-5].str))); - n->comment = (yyvsp[0].str); + n->object = (Node *) list_make2(makeTypeNameFromNameList((yyvsp[(7) - (9)].list)), makeString((yyvsp[(4) - (9)].str))); + n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; } -#line 30539 "gram.c" /* yacc.c:1646 */ break; - case 853: -#line 5863 "gram.y" /* yacc.c:1646 */ + case 927: +/* Line 1792 of yacc.c */ +#line 6395 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_POLICY; - n->objname = lappend((yyvsp[-2].list), makeString((yyvsp[-4].str))); - n->objargs = NIL; - n->comment = (yyvsp[0].str); - (yyval.node) = (Node *) n; - } -#line 30552 "gram.c" /* yacc.c:1646 */ - break; - - case 854: -#line 5872 "gram.y" /* yacc.c:1646 */ - { - CommentStmt *n = makeNode(CommentStmt); - n->objtype = OBJECT_RULE; - n->objname = lappend((yyvsp[-2].list), makeString((yyvsp[-4].str))); - n->objargs = NIL; - n->comment = (yyvsp[0].str); + n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); + n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 30565 "gram.c" /* yacc.c:1646 */ break; - case 855: -#line 5881 "gram.y" /* yacc.c:1646 */ + case 928: +/* Line 1792 of yacc.c */ +#line 6403 "gram.y" { - /* Obsolete syntax supported for awhile for compatibility */ CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_RULE; - n->objname = list_make1(makeString((yyvsp[-2].str))); - n->objargs = NIL; - n->comment = (yyvsp[0].str); + n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); + n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 30579 "gram.c" /* yacc.c:1646 */ break; - case 856: -#line 5891 "gram.y" /* yacc.c:1646 */ + case 929: +/* Line 1792 of yacc.c */ +#line 6411 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TRANSFORM; - n->objname = list_make1((yyvsp[-4].typnam)); - n->objargs = list_make1(makeString((yyvsp[-2].str))); - n->comment = (yyvsp[0].str); + n->object = (Node *) list_make2((yyvsp[(5) - (9)].typnam), makeString((yyvsp[(7) - (9)].str))); + n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; } -#line 30592 "gram.c" /* yacc.c:1646 */ break; - case 857: -#line 5900 "gram.y" /* yacc.c:1646 */ + case 930: +/* Line 1792 of yacc.c */ +#line 6419 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TRIGGER; - n->objname = lappend((yyvsp[-2].list), makeString((yyvsp[-4].str))); - n->objargs = NIL; - n->comment = (yyvsp[0].str); + n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); + n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 30605 "gram.c" /* yacc.c:1646 */ break; - case 858: -#line 5909 "gram.y" /* yacc.c:1646 */ + case 931: +/* Line 1792 of yacc.c */ +#line 6427 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPCLASS; - n->objname = lcons(makeString((yyvsp[-2].str)), (yyvsp[-4].list)); - n->comment = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(7) - (9)].str)), (yyvsp[(5) - (9)].list)); + n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; } -#line 30617 "gram.c" /* yacc.c:1646 */ break; - case 859: -#line 5917 "gram.y" /* yacc.c:1646 */ + case 932: +/* Line 1792 of yacc.c */ +#line 6435 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPFAMILY; - n->objname = lcons(makeString((yyvsp[-2].str)), (yyvsp[-4].list)); - n->objargs = NIL; - n->comment = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(7) - (9)].str)), (yyvsp[(5) - (9)].list)); + n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; } -#line 30630 "gram.c" /* yacc.c:1646 */ break; - case 860: -#line 5926 "gram.y" /* yacc.c:1646 */ + case 933: +/* Line 1792 of yacc.c */ +#line 6443 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_LARGEOBJECT; - n->objname = list_make1((yyvsp[-2].value)); - n->objargs = NIL; - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (7)].value); + n->comment = (yyvsp[(7) - (7)].str); (yyval.node) = (Node *) n; } -#line 30643 "gram.c" /* yacc.c:1646 */ break; - case 861: -#line 5935 "gram.y" /* yacc.c:1646 */ + case 934: +/* Line 1792 of yacc.c */ +#line 6451 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_CAST; - n->objname = list_make1((yyvsp[-5].typnam)); - n->objargs = list_make1((yyvsp[-3].typnam)); - n->comment = (yyvsp[0].str); + n->object = (Node *) list_make2((yyvsp[(5) - (10)].typnam), (yyvsp[(7) - (10)].typnam)); + n->comment = (yyvsp[(10) - (10)].str); (yyval.node) = (Node *) n; } -#line 30656 "gram.c" /* yacc.c:1646 */ break; - case 862: -#line 5944 "gram.y" /* yacc.c:1646 */ - { - CommentStmt *n = makeNode(CommentStmt); - n->objtype = OBJECT_LANGUAGE; - n->objname = (yyvsp[-2].list); - n->objargs = NIL; - n->comment = (yyvsp[0].str); - (yyval.node) = (Node *) n; - } -#line 30669 "gram.c" /* yacc.c:1646 */ + case 935: +/* Line 1792 of yacc.c */ +#line 6462 "gram.y" + { (yyval.objtype) = OBJECT_COLUMN; } break; - case 863: -#line 5955 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_ACCESS_METHOD; } -#line 30675 "gram.c" /* yacc.c:1646 */ + case 936: +/* Line 1792 of yacc.c */ +#line 6463 "gram.y" + { (yyval.objtype) = OBJECT_INDEX; } break; - case 864: -#line 5956 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_COLUMN; } -#line 30681 "gram.c" /* yacc.c:1646 */ + case 937: +/* Line 1792 of yacc.c */ +#line 6464 "gram.y" + { (yyval.objtype) = OBJECT_SEQUENCE; } break; - case 865: -#line 5957 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_DATABASE; } -#line 30687 "gram.c" /* yacc.c:1646 */ + case 938: +/* Line 1792 of yacc.c */ +#line 6465 "gram.y" + { (yyval.objtype) = OBJECT_STATISTIC_EXT; } break; - case 866: -#line 5958 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_SCHEMA; } -#line 30693 "gram.c" /* yacc.c:1646 */ + case 939: +/* Line 1792 of yacc.c */ +#line 6466 "gram.y" + { (yyval.objtype) = OBJECT_TABLE; } break; - case 867: -#line 5959 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_INDEX; } -#line 30699 "gram.c" /* yacc.c:1646 */ + case 940: +/* Line 1792 of yacc.c */ +#line 6467 "gram.y" + { (yyval.objtype) = OBJECT_VIEW; } break; - case 868: -#line 5960 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_SEQUENCE; } -#line 30705 "gram.c" /* yacc.c:1646 */ + case 941: +/* Line 1792 of yacc.c */ +#line 6468 "gram.y" + { (yyval.objtype) = OBJECT_MATVIEW; } break; - case 869: -#line 5961 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TABLE; } -#line 30711 "gram.c" /* yacc.c:1646 */ + case 942: +/* Line 1792 of yacc.c */ +#line 6469 "gram.y" + { (yyval.objtype) = OBJECT_COLLATION; } break; - case 870: -#line 5962 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_VIEW; } -#line 30717 "gram.c" /* yacc.c:1646 */ + case 943: +/* Line 1792 of yacc.c */ +#line 6470 "gram.y" + { (yyval.objtype) = OBJECT_CONVERSION; } break; - case 871: -#line 5963 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_MATVIEW; } -#line 30723 "gram.c" /* yacc.c:1646 */ + case 944: +/* Line 1792 of yacc.c */ +#line 6471 "gram.y" + { (yyval.objtype) = OBJECT_FOREIGN_TABLE; } + break; + + case 945: +/* Line 1792 of yacc.c */ +#line 6472 "gram.y" + { (yyval.objtype) = OBJECT_TSCONFIGURATION; } + break; + + case 946: +/* Line 1792 of yacc.c */ +#line 6473 "gram.y" + { (yyval.objtype) = OBJECT_TSDICTIONARY; } + break; + + case 947: +/* Line 1792 of yacc.c */ +#line 6474 "gram.y" + { (yyval.objtype) = OBJECT_TSPARSER; } break; - case 872: -#line 5964 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_COLLATION; } -#line 30729 "gram.c" /* yacc.c:1646 */ + case 948: +/* Line 1792 of yacc.c */ +#line 6475 "gram.y" + { (yyval.objtype) = OBJECT_TSTEMPLATE; } break; - case 873: -#line 5965 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_CONVERSION; } -#line 30735 "gram.c" /* yacc.c:1646 */ + case 949: +/* Line 1792 of yacc.c */ +#line 6480 "gram.y" + { (yyval.objtype) = OBJECT_ACCESS_METHOD; } break; - case 874: -#line 5966 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TABLESPACE; } -#line 30741 "gram.c" /* yacc.c:1646 */ + case 950: +/* Line 1792 of yacc.c */ +#line 6481 "gram.y" + { (yyval.objtype) = OBJECT_DATABASE; } break; - case 875: -#line 5967 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_EXTENSION; } -#line 30747 "gram.c" /* yacc.c:1646 */ + case 951: +/* Line 1792 of yacc.c */ +#line 6482 "gram.y" + { (yyval.objtype) = OBJECT_EVENT_TRIGGER; } break; - case 876: -#line 5968 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_ROLE; } -#line 30753 "gram.c" /* yacc.c:1646 */ + case 952: +/* Line 1792 of yacc.c */ +#line 6483 "gram.y" + { (yyval.objtype) = OBJECT_EXTENSION; } break; - case 877: -#line 5969 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_FOREIGN_TABLE; } -#line 30759 "gram.c" /* yacc.c:1646 */ + case 953: +/* Line 1792 of yacc.c */ +#line 6484 "gram.y" + { (yyval.objtype) = OBJECT_FDW; } break; - case 878: -#line 5970 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_FOREIGN_SERVER; } -#line 30765 "gram.c" /* yacc.c:1646 */ + case 954: +/* Line 1792 of yacc.c */ +#line 6485 "gram.y" + { (yyval.objtype) = OBJECT_LANGUAGE; } break; - case 879: -#line 5971 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_FDW; } -#line 30771 "gram.c" /* yacc.c:1646 */ + case 955: +/* Line 1792 of yacc.c */ +#line 6486 "gram.y" + { (yyval.objtype) = OBJECT_PUBLICATION; } break; - case 880: -#line 5972 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_EVENT_TRIGGER; } -#line 30777 "gram.c" /* yacc.c:1646 */ + case 956: +/* Line 1792 of yacc.c */ +#line 6487 "gram.y" + { (yyval.objtype) = OBJECT_ROLE; } break; - case 881: -#line 5973 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TSCONFIGURATION; } -#line 30783 "gram.c" /* yacc.c:1646 */ + case 957: +/* Line 1792 of yacc.c */ +#line 6488 "gram.y" + { (yyval.objtype) = OBJECT_SCHEMA; } break; - case 882: -#line 5974 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TSDICTIONARY; } -#line 30789 "gram.c" /* yacc.c:1646 */ + case 958: +/* Line 1792 of yacc.c */ +#line 6489 "gram.y" + { (yyval.objtype) = OBJECT_FOREIGN_SERVER; } break; - case 883: -#line 5975 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TSPARSER; } -#line 30795 "gram.c" /* yacc.c:1646 */ + case 959: +/* Line 1792 of yacc.c */ +#line 6490 "gram.y" + { (yyval.objtype) = OBJECT_SUBSCRIPTION; } break; - case 884: -#line 5976 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TSTEMPLATE; } -#line 30801 "gram.c" /* yacc.c:1646 */ + case 960: +/* Line 1792 of yacc.c */ +#line 6491 "gram.y" + { (yyval.objtype) = OBJECT_TABLESPACE; } break; - case 885: -#line 5980 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 30807 "gram.c" /* yacc.c:1646 */ + case 961: +/* Line 1792 of yacc.c */ +#line 6495 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 886: -#line 5981 "gram.y" /* yacc.c:1646 */ + case 962: +/* Line 1792 of yacc.c */ +#line 6496 "gram.y" { (yyval.str) = NULL; } -#line 30813 "gram.c" /* yacc.c:1646 */ break; - case 887: -#line 5997 "gram.y" /* yacc.c:1646 */ + case 963: +/* Line 1792 of yacc.c */ +#line 6512 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-5].str); - n->objtype = (yyvsp[-3].objtype); - n->objname = (yyvsp[-2].list); - n->objargs = NIL; - n->label = (yyvsp[0].str); + n->provider = (yyvsp[(3) - (8)].str); + n->objtype = (yyvsp[(5) - (8)].objtype); + n->object = (Node *) (yyvsp[(6) - (8)].list); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 30827 "gram.c" /* yacc.c:1646 */ break; - case 888: -#line 6008 "gram.y" /* yacc.c:1646 */ + case 964: +/* Line 1792 of yacc.c */ +#line 6522 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-5].str); - n->objtype = OBJECT_TYPE; - n->objname = list_make1((yyvsp[-2].typnam)); - n->objargs = NIL; - n->label = (yyvsp[0].str); + n->provider = (yyvsp[(3) - (8)].str); + n->objtype = (yyvsp[(5) - (8)].objtype); + n->object = (Node *) makeString((yyvsp[(6) - (8)].str)); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 30841 "gram.c" /* yacc.c:1646 */ break; - case 889: -#line 6019 "gram.y" /* yacc.c:1646 */ + case 965: +/* Line 1792 of yacc.c */ +#line 6532 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-5].str); + n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_TYPE; - n->objname = list_make1((yyvsp[-2].typnam)); - n->objargs = NIL; - n->label = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(6) - (8)].typnam); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 30855 "gram.c" /* yacc.c:1646 */ break; - case 890: -#line 6030 "gram.y" /* yacc.c:1646 */ + case 966: +/* Line 1792 of yacc.c */ +#line 6542 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-6].str); - n->objtype = OBJECT_AGGREGATE; - n->objname = (yyvsp[-3].list); - n->objargs = extractAggrArgTypes((yyvsp[-2].list)); - n->label = (yyvsp[0].str); + n->provider = (yyvsp[(3) - (8)].str); + n->objtype = OBJECT_DOMAIN; + n->object = (Node *) (yyvsp[(6) - (8)].typnam); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 30869 "gram.c" /* yacc.c:1646 */ break; - case 891: -#line 6041 "gram.y" /* yacc.c:1646 */ + case 967: +/* Line 1792 of yacc.c */ +#line 6552 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-6].str); - n->objtype = OBJECT_FUNCTION; - n->objname = (yyvsp[-3].list); - n->objargs = extractArgTypes((yyvsp[-2].list)); - n->label = (yyvsp[0].str); + n->provider = (yyvsp[(3) - (8)].str); + n->objtype = OBJECT_AGGREGATE; + n->object = (Node *) (yyvsp[(6) - (8)].objwithargs); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 30883 "gram.c" /* yacc.c:1646 */ break; - case 892: -#line 6052 "gram.y" /* yacc.c:1646 */ + case 968: +/* Line 1792 of yacc.c */ +#line 6562 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-6].str); - n->objtype = OBJECT_LARGEOBJECT; - n->objname = list_make1((yyvsp[-2].value)); - n->objargs = NIL; - n->label = (yyvsp[0].str); + n->provider = (yyvsp[(3) - (8)].str); + n->objtype = OBJECT_FUNCTION; + n->object = (Node *) (yyvsp[(6) - (8)].objwithargs); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 30897 "gram.c" /* yacc.c:1646 */ break; - case 893: -#line 6063 "gram.y" /* yacc.c:1646 */ + case 969: +/* Line 1792 of yacc.c */ +#line 6572 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-6].str); - n->objtype = OBJECT_LANGUAGE; - n->objname = (yyvsp[-2].list); - n->objargs = NIL; - n->label = (yyvsp[0].str); + n->provider = (yyvsp[(3) - (9)].str); + n->objtype = OBJECT_LARGEOBJECT; + n->object = (Node *) (yyvsp[(7) - (9)].value); + n->label = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; } -#line 30911 "gram.c" /* yacc.c:1646 */ break; - case 894: -#line 6074 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 30917 "gram.c" /* yacc.c:1646 */ + case 970: +/* Line 1792 of yacc.c */ +#line 6582 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; - case 895: -#line 6075 "gram.y" /* yacc.c:1646 */ + case 971: +/* Line 1792 of yacc.c */ +#line 6583 "gram.y" { (yyval.str) = NULL; } -#line 30923 "gram.c" /* yacc.c:1646 */ break; - case 896: -#line 6079 "gram.y" /* yacc.c:1646 */ + case 972: +/* Line 1792 of yacc.c */ +#line 6588 "gram.y" { (yyval.objtype) = OBJECT_COLUMN; } -#line 30929 "gram.c" /* yacc.c:1646 */ break; - case 897: -#line 6080 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_DATABASE; } -#line 30935 "gram.c" /* yacc.c:1646 */ + case 973: +/* Line 1792 of yacc.c */ +#line 6589 "gram.y" + { (yyval.objtype) = OBJECT_FOREIGN_TABLE; } break; - case 898: -#line 6081 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_EVENT_TRIGGER; } -#line 30941 "gram.c" /* yacc.c:1646 */ + case 974: +/* Line 1792 of yacc.c */ +#line 6590 "gram.y" + { (yyval.objtype) = OBJECT_SEQUENCE; } break; - case 899: -#line 6082 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_FOREIGN_TABLE; } -#line 30947 "gram.c" /* yacc.c:1646 */ + case 975: +/* Line 1792 of yacc.c */ +#line 6591 "gram.y" + { (yyval.objtype) = OBJECT_TABLE; } break; - case 900: -#line 6083 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_SCHEMA; } -#line 30953 "gram.c" /* yacc.c:1646 */ + case 976: +/* Line 1792 of yacc.c */ +#line 6592 "gram.y" + { (yyval.objtype) = OBJECT_VIEW; } break; - case 901: -#line 6084 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_SEQUENCE; } -#line 30959 "gram.c" /* yacc.c:1646 */ + case 977: +/* Line 1792 of yacc.c */ +#line 6593 "gram.y" + { (yyval.objtype) = OBJECT_MATVIEW; } break; - case 902: -#line 6085 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TABLE; } -#line 30965 "gram.c" /* yacc.c:1646 */ + case 978: +/* Line 1792 of yacc.c */ +#line 6598 "gram.y" + { (yyval.objtype) = OBJECT_DATABASE; } break; - case 903: -#line 6086 "gram.y" /* yacc.c:1646 */ + case 979: +/* Line 1792 of yacc.c */ +#line 6599 "gram.y" + { (yyval.objtype) = OBJECT_EVENT_TRIGGER; } + break; + + case 980: +/* Line 1792 of yacc.c */ +#line 6600 "gram.y" + { (yyval.objtype) = OBJECT_LANGUAGE; } + break; + + case 981: +/* Line 1792 of yacc.c */ +#line 6601 "gram.y" + { (yyval.objtype) = OBJECT_PUBLICATION; } + break; + + case 982: +/* Line 1792 of yacc.c */ +#line 6602 "gram.y" { (yyval.objtype) = OBJECT_ROLE; } -#line 30971 "gram.c" /* yacc.c:1646 */ break; - case 904: -#line 6087 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_TABLESPACE; } -#line 30977 "gram.c" /* yacc.c:1646 */ + case 983: +/* Line 1792 of yacc.c */ +#line 6603 "gram.y" + { (yyval.objtype) = OBJECT_SCHEMA; } break; - case 905: -#line 6088 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_VIEW; } -#line 30983 "gram.c" /* yacc.c:1646 */ + case 984: +/* Line 1792 of yacc.c */ +#line 6604 "gram.y" + { (yyval.objtype) = OBJECT_SUBSCRIPTION; } break; - case 906: -#line 6089 "gram.y" /* yacc.c:1646 */ - { (yyval.objtype) = OBJECT_MATVIEW; } -#line 30989 "gram.c" /* yacc.c:1646 */ + case 985: +/* Line 1792 of yacc.c */ +#line 6605 "gram.y" + { (yyval.objtype) = OBJECT_TABLESPACE; } break; - case 907: -#line 6092 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 30995 "gram.c" /* yacc.c:1646 */ + case 986: +/* Line 1792 of yacc.c */ +#line 6608 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 908: -#line 6093 "gram.y" /* yacc.c:1646 */ + case 987: +/* Line 1792 of yacc.c */ +#line 6609 "gram.y" { (yyval.str) = NULL; } -#line 31001 "gram.c" /* yacc.c:1646 */ break; - case 909: -#line 6104 "gram.y" /* yacc.c:1646 */ + case 988: +/* Line 1792 of yacc.c */ +#line 6620 "gram.y" { - FetchStmt *n = (FetchStmt *) (yyvsp[0].node); + FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); n->ismove = FALSE; (yyval.node) = (Node *)n; } -#line 31011 "gram.c" /* yacc.c:1646 */ break; - case 910: -#line 6110 "gram.y" /* yacc.c:1646 */ + case 989: +/* Line 1792 of yacc.c */ +#line 6626 "gram.y" { - FetchStmt *n = (FetchStmt *) (yyvsp[0].node); + FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); n->ismove = TRUE; (yyval.node) = (Node *)n; } -#line 31021 "gram.c" /* yacc.c:1646 */ break; - case 911: -#line 6118 "gram.y" /* yacc.c:1646 */ + case 990: +/* Line 1792 of yacc.c */ +#line 6634 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(1) - (1)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 31033 "gram.c" /* yacc.c:1646 */ break; - case 912: -#line 6126 "gram.y" /* yacc.c:1646 */ + case 991: +/* Line 1792 of yacc.c */ +#line 6642 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(2) - (2)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 31045 "gram.c" /* yacc.c:1646 */ break; - case 913: -#line 6134 "gram.y" /* yacc.c:1646 */ + case 992: +/* Line 1792 of yacc.c */ +#line 6650 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 31057 "gram.c" /* yacc.c:1646 */ break; - case 914: -#line 6142 "gram.y" /* yacc.c:1646 */ + case 993: +/* Line 1792 of yacc.c */ +#line 6658 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_BACKWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 31069 "gram.c" /* yacc.c:1646 */ break; - case 915: -#line 6150 "gram.y" /* yacc.c:1646 */ + case 994: +/* Line 1792 of yacc.c */ +#line 6666 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_ABSOLUTE; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 31081 "gram.c" /* yacc.c:1646 */ break; - case 916: -#line 6158 "gram.y" /* yacc.c:1646 */ + case 995: +/* Line 1792 of yacc.c */ +#line 6674 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_ABSOLUTE; n->howMany = -1; (yyval.node) = (Node *)n; } -#line 31093 "gram.c" /* yacc.c:1646 */ break; - case 917: -#line 6166 "gram.y" /* yacc.c:1646 */ + case 996: +/* Line 1792 of yacc.c */ +#line 6682 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_ABSOLUTE; - n->howMany = (yyvsp[-2].ival); + n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; } -#line 31105 "gram.c" /* yacc.c:1646 */ break; - case 918: -#line 6174 "gram.y" /* yacc.c:1646 */ + case 997: +/* Line 1792 of yacc.c */ +#line 6690 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_RELATIVE; - n->howMany = (yyvsp[-2].ival); + n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; } -#line 31117 "gram.c" /* yacc.c:1646 */ break; - case 919: -#line 6182 "gram.y" /* yacc.c:1646 */ + case 998: +/* Line 1792 of yacc.c */ +#line 6698 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; - n->howMany = (yyvsp[-2].ival); + n->howMany = (yyvsp[(1) - (3)].ival); (yyval.node) = (Node *)n; } -#line 31129 "gram.c" /* yacc.c:1646 */ break; - case 920: -#line 6190 "gram.y" /* yacc.c:1646 */ + case 999: +/* Line 1792 of yacc.c */ +#line 6706 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; n->howMany = FETCH_ALL; (yyval.node) = (Node *)n; } -#line 31141 "gram.c" /* yacc.c:1646 */ break; - case 921: -#line 6198 "gram.y" /* yacc.c:1646 */ + case 1000: +/* Line 1792 of yacc.c */ +#line 6714 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 31153 "gram.c" /* yacc.c:1646 */ break; - case 922: -#line 6206 "gram.y" /* yacc.c:1646 */ + case 1001: +/* Line 1792 of yacc.c */ +#line 6722 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_FORWARD; - n->howMany = (yyvsp[-2].ival); + n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; } -#line 31165 "gram.c" /* yacc.c:1646 */ break; - case 923: -#line 6214 "gram.y" /* yacc.c:1646 */ + case 1002: +/* Line 1792 of yacc.c */ +#line 6730 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_FORWARD; n->howMany = FETCH_ALL; (yyval.node) = (Node *)n; } -#line 31177 "gram.c" /* yacc.c:1646 */ break; - case 924: -#line 6222 "gram.y" /* yacc.c:1646 */ + case 1003: +/* Line 1792 of yacc.c */ +#line 6738 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_BACKWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 31189 "gram.c" /* yacc.c:1646 */ break; - case 925: -#line 6230 "gram.y" /* yacc.c:1646 */ + case 1004: +/* Line 1792 of yacc.c */ +#line 6746 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_BACKWARD; - n->howMany = (yyvsp[-2].ival); + n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; } -#line 31201 "gram.c" /* yacc.c:1646 */ break; - case 926: -#line 6238 "gram.y" /* yacc.c:1646 */ + case 1005: +/* Line 1792 of yacc.c */ +#line 6754 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_BACKWARD; n->howMany = FETCH_ALL; (yyval.node) = (Node *)n; } -#line 31213 "gram.c" /* yacc.c:1646 */ break; - case 927: -#line 6247 "gram.y" /* yacc.c:1646 */ + case 1006: +/* Line 1792 of yacc.c */ +#line 6763 "gram.y" {} -#line 31219 "gram.c" /* yacc.c:1646 */ break; - case 928: -#line 6248 "gram.y" /* yacc.c:1646 */ + case 1007: +/* Line 1792 of yacc.c */ +#line 6764 "gram.y" {} -#line 31225 "gram.c" /* yacc.c:1646 */ break; - case 929: -#line 6251 "gram.y" /* yacc.c:1646 */ + case 1008: +/* Line 1792 of yacc.c */ +#line 6767 "gram.y" {} -#line 31231 "gram.c" /* yacc.c:1646 */ break; - case 930: -#line 6252 "gram.y" /* yacc.c:1646 */ + case 1009: +/* Line 1792 of yacc.c */ +#line 6768 "gram.y" {} -#line 31237 "gram.c" /* yacc.c:1646 */ break; - case 931: -#line 6264 "gram.y" /* yacc.c:1646 */ + case 1010: +/* Line 1792 of yacc.c */ +#line 6780 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = true; - n->privileges = (yyvsp[-5].list); - n->targtype = ((yyvsp[-3].privtarget))->targtype; - n->objtype = ((yyvsp[-3].privtarget))->objtype; - n->objects = ((yyvsp[-3].privtarget))->objs; - n->grantees = (yyvsp[-1].list); - n->grant_option = (yyvsp[0].boolean); + n->privileges = (yyvsp[(2) - (7)].list); + n->targtype = ((yyvsp[(4) - (7)].privtarget))->targtype; + n->objtype = ((yyvsp[(4) - (7)].privtarget))->objtype; + n->objects = ((yyvsp[(4) - (7)].privtarget))->objs; + n->grantees = (yyvsp[(6) - (7)].list); + n->grant_option = (yyvsp[(7) - (7)].boolean); (yyval.node) = (Node*)n; } -#line 31253 "gram.c" /* yacc.c:1646 */ break; - case 932: -#line 6280 "gram.y" /* yacc.c:1646 */ + case 1011: +/* Line 1792 of yacc.c */ +#line 6796 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = false; - n->privileges = (yyvsp[-5].list); - n->targtype = ((yyvsp[-3].privtarget))->targtype; - n->objtype = ((yyvsp[-3].privtarget))->objtype; - n->objects = ((yyvsp[-3].privtarget))->objs; - n->grantees = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->privileges = (yyvsp[(2) - (7)].list); + n->targtype = ((yyvsp[(4) - (7)].privtarget))->targtype; + n->objtype = ((yyvsp[(4) - (7)].privtarget))->objtype; + n->objects = ((yyvsp[(4) - (7)].privtarget))->objs; + n->grantees = (yyvsp[(6) - (7)].list); + n->behavior = (yyvsp[(7) - (7)].dbehavior); (yyval.node) = (Node *)n; } -#line 31270 "gram.c" /* yacc.c:1646 */ break; - case 933: -#line 6294 "gram.y" /* yacc.c:1646 */ + case 1012: +/* Line 1792 of yacc.c */ +#line 6810 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = true; - n->privileges = (yyvsp[-5].list); - n->targtype = ((yyvsp[-3].privtarget))->targtype; - n->objtype = ((yyvsp[-3].privtarget))->objtype; - n->objects = ((yyvsp[-3].privtarget))->objs; - n->grantees = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->privileges = (yyvsp[(5) - (10)].list); + n->targtype = ((yyvsp[(7) - (10)].privtarget))->targtype; + n->objtype = ((yyvsp[(7) - (10)].privtarget))->objtype; + n->objects = ((yyvsp[(7) - (10)].privtarget))->objs; + n->grantees = (yyvsp[(9) - (10)].list); + n->behavior = (yyvsp[(10) - (10)].dbehavior); (yyval.node) = (Node *)n; } -#line 31287 "gram.c" /* yacc.c:1646 */ break; - case 934: -#line 6319 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 31293 "gram.c" /* yacc.c:1646 */ + case 1013: +/* Line 1792 of yacc.c */ +#line 6835 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 935: -#line 6321 "gram.y" /* yacc.c:1646 */ + case 1014: +/* Line 1792 of yacc.c */ +#line 6837 "gram.y" { (yyval.list) = NIL; } -#line 31299 "gram.c" /* yacc.c:1646 */ break; - case 936: -#line 6323 "gram.y" /* yacc.c:1646 */ + case 1015: +/* Line 1792 of yacc.c */ +#line 6839 "gram.y" { (yyval.list) = NIL; } -#line 31305 "gram.c" /* yacc.c:1646 */ break; - case 937: -#line 6325 "gram.y" /* yacc.c:1646 */ + case 1016: +/* Line 1792 of yacc.c */ +#line 6841 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; - n->cols = (yyvsp[-1].list); + n->cols = (yyvsp[(3) - (4)].list); (yyval.list) = list_make1(n); } -#line 31316 "gram.c" /* yacc.c:1646 */ break; - case 938: -#line 6332 "gram.y" /* yacc.c:1646 */ + case 1017: +/* Line 1792 of yacc.c */ +#line 6848 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; - n->cols = (yyvsp[-1].list); + n->cols = (yyvsp[(4) - (5)].list); (yyval.list) = list_make1(n); } -#line 31327 "gram.c" /* yacc.c:1646 */ break; - case 939: -#line 6340 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].accesspriv)); } -#line 31333 "gram.c" /* yacc.c:1646 */ + case 1018: +/* Line 1792 of yacc.c */ +#line 6856 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].accesspriv)); } break; - case 940: -#line 6341 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].accesspriv)); } -#line 31339 "gram.c" /* yacc.c:1646 */ + case 1019: +/* Line 1792 of yacc.c */ +#line 6857 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].accesspriv)); } break; - case 941: -#line 6345 "gram.y" /* yacc.c:1646 */ + case 1020: +/* Line 1792 of yacc.c */ +#line 6861 "gram.y" { AccessPriv *n = makeNode(AccessPriv); - n->priv_name = pstrdup((yyvsp[-1].keyword)); - n->cols = (yyvsp[0].list); + n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); + n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; } -#line 31350 "gram.c" /* yacc.c:1646 */ break; - case 942: -#line 6352 "gram.y" /* yacc.c:1646 */ + case 1021: +/* Line 1792 of yacc.c */ +#line 6868 "gram.y" { AccessPriv *n = makeNode(AccessPriv); - n->priv_name = pstrdup((yyvsp[-1].keyword)); - n->cols = (yyvsp[0].list); + n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); + n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; } -#line 31361 "gram.c" /* yacc.c:1646 */ break; - case 943: -#line 6359 "gram.y" /* yacc.c:1646 */ + case 1022: +/* Line 1792 of yacc.c */ +#line 6875 "gram.y" { AccessPriv *n = makeNode(AccessPriv); - n->priv_name = pstrdup((yyvsp[-1].keyword)); - n->cols = (yyvsp[0].list); + n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); + n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; } -#line 31372 "gram.c" /* yacc.c:1646 */ break; - case 944: -#line 6366 "gram.y" /* yacc.c:1646 */ + case 1023: +/* Line 1792 of yacc.c */ +#line 6882 "gram.y" { AccessPriv *n = makeNode(AccessPriv); - n->priv_name = (yyvsp[-1].str); - n->cols = (yyvsp[0].list); + n->priv_name = (yyvsp[(1) - (2)].str); + n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; } -#line 31383 "gram.c" /* yacc.c:1646 */ break; - case 945: -#line 6380 "gram.y" /* yacc.c:1646 */ + case 1024: +/* Line 1792 of yacc.c */ +#line 6896 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_RELATION; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(1) - (1)].list); (yyval.privtarget) = n; } -#line 31395 "gram.c" /* yacc.c:1646 */ break; - case 946: -#line 6388 "gram.y" /* yacc.c:1646 */ + case 1025: +/* Line 1792 of yacc.c */ +#line 6904 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_RELATION; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 31407 "gram.c" /* yacc.c:1646 */ break; - case 947: -#line 6396 "gram.y" /* yacc.c:1646 */ + case 1026: +/* Line 1792 of yacc.c */ +#line 6912 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_SEQUENCE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 31419 "gram.c" /* yacc.c:1646 */ break; - case 948: -#line 6404 "gram.y" /* yacc.c:1646 */ + case 1027: +/* Line 1792 of yacc.c */ +#line 6920 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_FDW; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(4) - (4)].list); (yyval.privtarget) = n; } -#line 31431 "gram.c" /* yacc.c:1646 */ break; - case 949: -#line 6412 "gram.y" /* yacc.c:1646 */ + case 1028: +/* Line 1792 of yacc.c */ +#line 6928 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_FOREIGN_SERVER; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(3) - (3)].list); (yyval.privtarget) = n; } -#line 31443 "gram.c" /* yacc.c:1646 */ break; - case 950: -#line 6420 "gram.y" /* yacc.c:1646 */ + case 1029: +/* Line 1792 of yacc.c */ +#line 6936 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_FUNCTION; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 31455 "gram.c" /* yacc.c:1646 */ break; - case 951: -#line 6428 "gram.y" /* yacc.c:1646 */ + case 1030: +/* Line 1792 of yacc.c */ +#line 6944 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_DATABASE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 31467 "gram.c" /* yacc.c:1646 */ break; - case 952: -#line 6436 "gram.y" /* yacc.c:1646 */ + case 1031: +/* Line 1792 of yacc.c */ +#line 6952 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_DOMAIN; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 31479 "gram.c" /* yacc.c:1646 */ break; - case 953: -#line 6444 "gram.y" /* yacc.c:1646 */ + case 1032: +/* Line 1792 of yacc.c */ +#line 6960 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_LANGUAGE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 31491 "gram.c" /* yacc.c:1646 */ break; - case 954: -#line 6452 "gram.y" /* yacc.c:1646 */ + case 1033: +/* Line 1792 of yacc.c */ +#line 6968 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_LARGEOBJECT; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(3) - (3)].list); (yyval.privtarget) = n; } -#line 31503 "gram.c" /* yacc.c:1646 */ break; - case 955: -#line 6460 "gram.y" /* yacc.c:1646 */ + case 1034: +/* Line 1792 of yacc.c */ +#line 6976 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_NAMESPACE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 31515 "gram.c" /* yacc.c:1646 */ break; - case 956: -#line 6468 "gram.y" /* yacc.c:1646 */ + case 1035: +/* Line 1792 of yacc.c */ +#line 6984 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_TABLESPACE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 31527 "gram.c" /* yacc.c:1646 */ break; - case 957: -#line 6476 "gram.y" /* yacc.c:1646 */ + case 1036: +/* Line 1792 of yacc.c */ +#line 6992 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_TYPE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 31539 "gram.c" /* yacc.c:1646 */ break; - case 958: -#line 6484 "gram.y" /* yacc.c:1646 */ + case 1037: +/* Line 1792 of yacc.c */ +#line 7000 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; n->objtype = ACL_OBJECT_RELATION; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; } -#line 31551 "gram.c" /* yacc.c:1646 */ break; - case 959: -#line 6492 "gram.y" /* yacc.c:1646 */ + case 1038: +/* Line 1792 of yacc.c */ +#line 7008 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; n->objtype = ACL_OBJECT_SEQUENCE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; } -#line 31563 "gram.c" /* yacc.c:1646 */ break; - case 960: -#line 6500 "gram.y" /* yacc.c:1646 */ + case 1039: +/* Line 1792 of yacc.c */ +#line 7016 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; n->objtype = ACL_OBJECT_FUNCTION; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; } -#line 31575 "gram.c" /* yacc.c:1646 */ - break; - - case 961: -#line 6511 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 31581 "gram.c" /* yacc.c:1646 */ break; - case 962: -#line 6512 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 31587 "gram.c" /* yacc.c:1646 */ - break; - - case 963: -#line 6516 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 31593 "gram.c" /* yacc.c:1646 */ - break; - - case 964: -#line 6517 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 31599 "gram.c" /* yacc.c:1646 */ + case 1040: +/* Line 1792 of yacc.c */ +#line 7027 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); } break; - case 965: -#line 6522 "gram.y" /* yacc.c:1646 */ - { (yyval.boolean) = TRUE; } -#line 31605 "gram.c" /* yacc.c:1646 */ + case 1041: +/* Line 1792 of yacc.c */ +#line 7028 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); } break; - case 966: -#line 6523 "gram.y" /* yacc.c:1646 */ - { (yyval.boolean) = FALSE; } -#line 31611 "gram.c" /* yacc.c:1646 */ + case 1042: +/* Line 1792 of yacc.c */ +#line 7032 "gram.y" + { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); } break; - case 967: -#line 6527 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].funwithargs)); } -#line 31617 "gram.c" /* yacc.c:1646 */ + case 1043: +/* Line 1792 of yacc.c */ +#line 7033 "gram.y" + { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); } break; - case 968: -#line 6529 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].funwithargs)); } -#line 31623 "gram.c" /* yacc.c:1646 */ + case 1044: +/* Line 1792 of yacc.c */ +#line 7038 "gram.y" + { (yyval.boolean) = TRUE; } break; - case 969: -#line 6534 "gram.y" /* yacc.c:1646 */ - { - FuncWithArgs *n = makeNode(FuncWithArgs); - n->funcname = (yyvsp[-1].list); - n->funcargs = extractArgTypes((yyvsp[0].list)); - (yyval.funwithargs) = n; - } -#line 31634 "gram.c" /* yacc.c:1646 */ + case 1045: +/* Line 1792 of yacc.c */ +#line 7039 "gram.y" + { (yyval.boolean) = FALSE; } break; - case 970: -#line 6550 "gram.y" /* yacc.c:1646 */ + case 1046: +/* Line 1792 of yacc.c */ +#line 7050 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = true; - n->granted_roles = (yyvsp[-4].list); - n->grantee_roles = (yyvsp[-2].list); - n->admin_opt = (yyvsp[-1].boolean); - n->grantor = (yyvsp[0].node); + n->granted_roles = (yyvsp[(2) - (6)].list); + n->grantee_roles = (yyvsp[(4) - (6)].list); + n->admin_opt = (yyvsp[(5) - (6)].boolean); + n->grantor = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node*)n; } -#line 31648 "gram.c" /* yacc.c:1646 */ break; - case 971: -#line 6563 "gram.y" /* yacc.c:1646 */ + case 1047: +/* Line 1792 of yacc.c */ +#line 7063 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; n->admin_opt = false; - n->granted_roles = (yyvsp[-4].list); - n->grantee_roles = (yyvsp[-2].list); - n->behavior = (yyvsp[0].dbehavior); + n->granted_roles = (yyvsp[(2) - (6)].list); + n->grantee_roles = (yyvsp[(4) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); (yyval.node) = (Node*)n; } -#line 31662 "gram.c" /* yacc.c:1646 */ break; - case 972: -#line 6573 "gram.y" /* yacc.c:1646 */ + case 1048: +/* Line 1792 of yacc.c */ +#line 7073 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; n->admin_opt = true; - n->granted_roles = (yyvsp[-4].list); - n->grantee_roles = (yyvsp[-2].list); - n->behavior = (yyvsp[0].dbehavior); + n->granted_roles = (yyvsp[(5) - (9)].list); + n->grantee_roles = (yyvsp[(7) - (9)].list); + n->behavior = (yyvsp[(9) - (9)].dbehavior); (yyval.node) = (Node*)n; } -#line 31676 "gram.c" /* yacc.c:1646 */ break; - case 973: -#line 6584 "gram.y" /* yacc.c:1646 */ + case 1049: +/* Line 1792 of yacc.c */ +#line 7084 "gram.y" { (yyval.boolean) = TRUE; } -#line 31682 "gram.c" /* yacc.c:1646 */ break; - case 974: -#line 6585 "gram.y" /* yacc.c:1646 */ + case 1050: +/* Line 1792 of yacc.c */ +#line 7085 "gram.y" { (yyval.boolean) = FALSE; } -#line 31688 "gram.c" /* yacc.c:1646 */ break; - case 975: -#line 6588 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 31694 "gram.c" /* yacc.c:1646 */ + case 1051: +/* Line 1792 of yacc.c */ +#line 7088 "gram.y" + { (yyval.rolespec) = (yyvsp[(3) - (3)].rolespec); } break; - case 976: -#line 6589 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = NULL; } -#line 31700 "gram.c" /* yacc.c:1646 */ + case 1052: +/* Line 1792 of yacc.c */ +#line 7089 "gram.y" + { (yyval.rolespec) = NULL; } break; - case 977: -#line 6600 "gram.y" /* yacc.c:1646 */ + case 1053: +/* Line 1792 of yacc.c */ +#line 7100 "gram.y" { AlterDefaultPrivilegesStmt *n = makeNode(AlterDefaultPrivilegesStmt); - n->options = (yyvsp[-1].list); - n->action = (GrantStmt *) (yyvsp[0].node); + n->options = (yyvsp[(4) - (5)].list); + n->action = (GrantStmt *) (yyvsp[(5) - (5)].node); (yyval.node) = (Node*)n; } -#line 31711 "gram.c" /* yacc.c:1646 */ break; - case 978: -#line 6609 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 31717 "gram.c" /* yacc.c:1646 */ + case 1054: +/* Line 1792 of yacc.c */ +#line 7109 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; - case 979: -#line 6610 "gram.y" /* yacc.c:1646 */ + case 1055: +/* Line 1792 of yacc.c */ +#line 7110 "gram.y" { (yyval.list) = NIL; } -#line 31723 "gram.c" /* yacc.c:1646 */ break; - case 980: -#line 6615 "gram.y" /* yacc.c:1646 */ + case 1056: +/* Line 1792 of yacc.c */ +#line 7115 "gram.y" { - (yyval.defelt) = makeDefElem("schemas", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("schemas", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 31731 "gram.c" /* yacc.c:1646 */ break; - case 981: -#line 6619 "gram.y" /* yacc.c:1646 */ + case 1057: +/* Line 1792 of yacc.c */ +#line 7119 "gram.y" { - (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 31739 "gram.c" /* yacc.c:1646 */ break; - case 982: -#line 6623 "gram.y" /* yacc.c:1646 */ + case 1058: +/* Line 1792 of yacc.c */ +#line 7123 "gram.y" { - (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 31747 "gram.c" /* yacc.c:1646 */ break; - case 983: -#line 6635 "gram.y" /* yacc.c:1646 */ + case 1059: +/* Line 1792 of yacc.c */ +#line 7135 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = true; - n->privileges = (yyvsp[-5].list); + n->privileges = (yyvsp[(2) - (7)].list); n->targtype = ACL_TARGET_DEFAULTS; - n->objtype = (yyvsp[-3].ival); + n->objtype = (yyvsp[(4) - (7)].ival); n->objects = NIL; - n->grantees = (yyvsp[-1].list); - n->grant_option = (yyvsp[0].boolean); + n->grantees = (yyvsp[(6) - (7)].list); + n->grant_option = (yyvsp[(7) - (7)].boolean); (yyval.node) = (Node*)n; } -#line 31763 "gram.c" /* yacc.c:1646 */ break; - case 984: -#line 6648 "gram.y" /* yacc.c:1646 */ + case 1060: +/* Line 1792 of yacc.c */ +#line 7148 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = false; - n->privileges = (yyvsp[-5].list); + n->privileges = (yyvsp[(2) - (7)].list); n->targtype = ACL_TARGET_DEFAULTS; - n->objtype = (yyvsp[-3].ival); + n->objtype = (yyvsp[(4) - (7)].ival); n->objects = NIL; - n->grantees = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->grantees = (yyvsp[(6) - (7)].list); + n->behavior = (yyvsp[(7) - (7)].dbehavior); (yyval.node) = (Node *)n; } -#line 31780 "gram.c" /* yacc.c:1646 */ break; - case 985: -#line 6662 "gram.y" /* yacc.c:1646 */ + case 1061: +/* Line 1792 of yacc.c */ +#line 7162 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = true; - n->privileges = (yyvsp[-5].list); + n->privileges = (yyvsp[(5) - (10)].list); n->targtype = ACL_TARGET_DEFAULTS; - n->objtype = (yyvsp[-3].ival); + n->objtype = (yyvsp[(7) - (10)].ival); n->objects = NIL; - n->grantees = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->grantees = (yyvsp[(9) - (10)].list); + n->behavior = (yyvsp[(10) - (10)].dbehavior); (yyval.node) = (Node *)n; } -#line 31797 "gram.c" /* yacc.c:1646 */ break; - case 986: -#line 6677 "gram.y" /* yacc.c:1646 */ + case 1062: +/* Line 1792 of yacc.c */ +#line 7177 "gram.y" { (yyval.ival) = ACL_OBJECT_RELATION; } -#line 31803 "gram.c" /* yacc.c:1646 */ break; - case 987: -#line 6678 "gram.y" /* yacc.c:1646 */ + case 1063: +/* Line 1792 of yacc.c */ +#line 7178 "gram.y" { (yyval.ival) = ACL_OBJECT_FUNCTION; } -#line 31809 "gram.c" /* yacc.c:1646 */ break; - case 988: -#line 6679 "gram.y" /* yacc.c:1646 */ + case 1064: +/* Line 1792 of yacc.c */ +#line 7179 "gram.y" { (yyval.ival) = ACL_OBJECT_SEQUENCE; } -#line 31815 "gram.c" /* yacc.c:1646 */ break; - case 989: -#line 6680 "gram.y" /* yacc.c:1646 */ + case 1065: +/* Line 1792 of yacc.c */ +#line 7180 "gram.y" { (yyval.ival) = ACL_OBJECT_TYPE; } -#line 31821 "gram.c" /* yacc.c:1646 */ break; - case 990: -#line 6695 "gram.y" /* yacc.c:1646 */ + case 1066: +/* Line 1792 of yacc.c */ +#line 7181 "gram.y" + { (yyval.ival) = ACL_OBJECT_NAMESPACE; } + break; + + case 1067: +/* Line 1792 of yacc.c */ +#line 7196 "gram.y" { IndexStmt *n = makeNode(IndexStmt); - n->unique = (yyvsp[-12].boolean); - n->concurrent = (yyvsp[-10].boolean); - n->idxname = (yyvsp[-9].str); - n->relation = (yyvsp[-7].range); - n->accessMethod = (yyvsp[-6].str); - n->indexParams = (yyvsp[-4].list); - n->options = (yyvsp[-2].list); - n->tableSpace = (yyvsp[-1].str); - n->whereClause = (yyvsp[0].node); + n->unique = (yyvsp[(2) - (14)].boolean); + n->concurrent = (yyvsp[(4) - (14)].boolean); + n->idxname = (yyvsp[(5) - (14)].str); + n->relation = (yyvsp[(7) - (14)].range); + n->accessMethod = (yyvsp[(8) - (14)].str); + n->indexParams = (yyvsp[(10) - (14)].list); + n->options = (yyvsp[(12) - (14)].list); + n->tableSpace = (yyvsp[(13) - (14)].str); + n->whereClause = (yyvsp[(14) - (14)].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; @@ -31845,22 +35045,22 @@ yyreduce: n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 31849 "gram.c" /* yacc.c:1646 */ break; - case 991: -#line 6721 "gram.y" /* yacc.c:1646 */ + case 1068: +/* Line 1792 of yacc.c */ +#line 7222 "gram.y" { IndexStmt *n = makeNode(IndexStmt); - n->unique = (yyvsp[-15].boolean); - n->concurrent = (yyvsp[-13].boolean); - n->idxname = (yyvsp[-9].str); - n->relation = (yyvsp[-7].range); - n->accessMethod = (yyvsp[-6].str); - n->indexParams = (yyvsp[-4].list); - n->options = (yyvsp[-2].list); - n->tableSpace = (yyvsp[-1].str); - n->whereClause = (yyvsp[0].node); + n->unique = (yyvsp[(2) - (17)].boolean); + n->concurrent = (yyvsp[(4) - (17)].boolean); + n->idxname = (yyvsp[(8) - (17)].str); + n->relation = (yyvsp[(10) - (17)].range); + n->accessMethod = (yyvsp[(11) - (17)].str); + n->indexParams = (yyvsp[(13) - (17)].list); + n->options = (yyvsp[(15) - (17)].list); + n->tableSpace = (yyvsp[(16) - (17)].str); + n->whereClause = (yyvsp[(17) - (17)].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; @@ -31873,4620 +35073,5016 @@ yyreduce: n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 31877 "gram.c" /* yacc.c:1646 */ break; - case 992: -#line 6747 "gram.y" /* yacc.c:1646 */ + case 1069: +/* Line 1792 of yacc.c */ +#line 7248 "gram.y" { (yyval.boolean) = TRUE; } -#line 31883 "gram.c" /* yacc.c:1646 */ break; - case 993: -#line 6748 "gram.y" /* yacc.c:1646 */ + case 1070: +/* Line 1792 of yacc.c */ +#line 7249 "gram.y" { (yyval.boolean) = FALSE; } -#line 31889 "gram.c" /* yacc.c:1646 */ break; - case 994: -#line 6752 "gram.y" /* yacc.c:1646 */ + case 1071: +/* Line 1792 of yacc.c */ +#line 7253 "gram.y" { (yyval.boolean) = TRUE; } -#line 31895 "gram.c" /* yacc.c:1646 */ break; - case 995: -#line 6753 "gram.y" /* yacc.c:1646 */ + case 1072: +/* Line 1792 of yacc.c */ +#line 7254 "gram.y" { (yyval.boolean) = FALSE; } -#line 31901 "gram.c" /* yacc.c:1646 */ break; - case 996: -#line 6757 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 31907 "gram.c" /* yacc.c:1646 */ + case 1073: +/* Line 1792 of yacc.c */ +#line 7258 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 997: -#line 6758 "gram.y" /* yacc.c:1646 */ + case 1074: +/* Line 1792 of yacc.c */ +#line 7259 "gram.y" { (yyval.str) = NULL; } -#line 31913 "gram.c" /* yacc.c:1646 */ break; - case 998: -#line 6762 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 31919 "gram.c" /* yacc.c:1646 */ + case 1075: +/* Line 1792 of yacc.c */ +#line 7263 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; - case 999: -#line 6763 "gram.y" /* yacc.c:1646 */ + case 1076: +/* Line 1792 of yacc.c */ +#line 7264 "gram.y" { (yyval.str) = DEFAULT_INDEX_TYPE; } -#line 31925 "gram.c" /* yacc.c:1646 */ break; - case 1000: -#line 6766 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].ielem)); } -#line 31931 "gram.c" /* yacc.c:1646 */ + case 1077: +/* Line 1792 of yacc.c */ +#line 7267 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); } break; - case 1001: -#line 6767 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].ielem)); } -#line 31937 "gram.c" /* yacc.c:1646 */ + case 1078: +/* Line 1792 of yacc.c */ +#line 7268 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); } break; - case 1002: -#line 6776 "gram.y" /* yacc.c:1646 */ + case 1079: +/* Line 1792 of yacc.c */ +#line 7277 "gram.y" { (yyval.ielem) = makeNode(IndexElem); - (yyval.ielem)->name = (yyvsp[-4].str); + (yyval.ielem)->name = (yyvsp[(1) - (5)].str); (yyval.ielem)->expr = NULL; (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[-3].list); - (yyval.ielem)->opclass = (yyvsp[-2].list); - (yyval.ielem)->ordering = (yyvsp[-1].ival); - (yyval.ielem)->nulls_ordering = (yyvsp[0].ival); + (yyval.ielem)->collation = (yyvsp[(2) - (5)].list); + (yyval.ielem)->opclass = (yyvsp[(3) - (5)].list); + (yyval.ielem)->ordering = (yyvsp[(4) - (5)].ival); + (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].ival); } -#line 31952 "gram.c" /* yacc.c:1646 */ break; - case 1003: -#line 6787 "gram.y" /* yacc.c:1646 */ + case 1080: +/* Line 1792 of yacc.c */ +#line 7288 "gram.y" { (yyval.ielem) = makeNode(IndexElem); (yyval.ielem)->name = NULL; - (yyval.ielem)->expr = (yyvsp[-4].node); + (yyval.ielem)->expr = (yyvsp[(1) - (5)].node); (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[-3].list); - (yyval.ielem)->opclass = (yyvsp[-2].list); - (yyval.ielem)->ordering = (yyvsp[-1].ival); - (yyval.ielem)->nulls_ordering = (yyvsp[0].ival); + (yyval.ielem)->collation = (yyvsp[(2) - (5)].list); + (yyval.ielem)->opclass = (yyvsp[(3) - (5)].list); + (yyval.ielem)->ordering = (yyvsp[(4) - (5)].ival); + (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].ival); } -#line 31967 "gram.c" /* yacc.c:1646 */ break; - case 1004: -#line 6798 "gram.y" /* yacc.c:1646 */ + case 1081: +/* Line 1792 of yacc.c */ +#line 7299 "gram.y" { (yyval.ielem) = makeNode(IndexElem); (yyval.ielem)->name = NULL; - (yyval.ielem)->expr = (yyvsp[-5].node); + (yyval.ielem)->expr = (yyvsp[(2) - (7)].node); (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[-3].list); - (yyval.ielem)->opclass = (yyvsp[-2].list); - (yyval.ielem)->ordering = (yyvsp[-1].ival); - (yyval.ielem)->nulls_ordering = (yyvsp[0].ival); + (yyval.ielem)->collation = (yyvsp[(4) - (7)].list); + (yyval.ielem)->opclass = (yyvsp[(5) - (7)].list); + (yyval.ielem)->ordering = (yyvsp[(6) - (7)].ival); + (yyval.ielem)->nulls_ordering = (yyvsp[(7) - (7)].ival); } -#line 31982 "gram.c" /* yacc.c:1646 */ break; - case 1005: -#line 6810 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 31988 "gram.c" /* yacc.c:1646 */ + case 1082: +/* Line 1792 of yacc.c */ +#line 7311 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 1006: -#line 6811 "gram.y" /* yacc.c:1646 */ + case 1083: +/* Line 1792 of yacc.c */ +#line 7312 "gram.y" { (yyval.list) = NIL; } -#line 31994 "gram.c" /* yacc.c:1646 */ break; - case 1007: -#line 6814 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 32000 "gram.c" /* yacc.c:1646 */ + case 1084: +/* Line 1792 of yacc.c */ +#line 7315 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 1008: -#line 6815 "gram.y" /* yacc.c:1646 */ + case 1085: +/* Line 1792 of yacc.c */ +#line 7316 "gram.y" { (yyval.list) = NIL; } -#line 32006 "gram.c" /* yacc.c:1646 */ break; - case 1009: -#line 6818 "gram.y" /* yacc.c:1646 */ + case 1086: +/* Line 1792 of yacc.c */ +#line 7319 "gram.y" { (yyval.ival) = SORTBY_ASC; } -#line 32012 "gram.c" /* yacc.c:1646 */ break; - case 1010: -#line 6819 "gram.y" /* yacc.c:1646 */ + case 1087: +/* Line 1792 of yacc.c */ +#line 7320 "gram.y" { (yyval.ival) = SORTBY_DESC; } -#line 32018 "gram.c" /* yacc.c:1646 */ break; - case 1011: -#line 6820 "gram.y" /* yacc.c:1646 */ + case 1088: +/* Line 1792 of yacc.c */ +#line 7321 "gram.y" { (yyval.ival) = SORTBY_DEFAULT; } -#line 32024 "gram.c" /* yacc.c:1646 */ break; - case 1012: -#line 6823 "gram.y" /* yacc.c:1646 */ + case 1089: +/* Line 1792 of yacc.c */ +#line 7324 "gram.y" { (yyval.ival) = SORTBY_NULLS_FIRST; } -#line 32030 "gram.c" /* yacc.c:1646 */ break; - case 1013: -#line 6824 "gram.y" /* yacc.c:1646 */ + case 1090: +/* Line 1792 of yacc.c */ +#line 7325 "gram.y" { (yyval.ival) = SORTBY_NULLS_LAST; } -#line 32036 "gram.c" /* yacc.c:1646 */ break; - case 1014: -#line 6825 "gram.y" /* yacc.c:1646 */ + case 1091: +/* Line 1792 of yacc.c */ +#line 7326 "gram.y" { (yyval.ival) = SORTBY_NULLS_DEFAULT; } -#line 32042 "gram.c" /* yacc.c:1646 */ break; - case 1015: -#line 6843 "gram.y" /* yacc.c:1646 */ + case 1092: +/* Line 1792 of yacc.c */ +#line 7344 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); - n->replace = (yyvsp[-7].boolean); - n->funcname = (yyvsp[-5].list); - n->parameters = (yyvsp[-4].list); - n->returnType = (yyvsp[-2].typnam); - n->options = (yyvsp[-1].list); - n->withClause = (yyvsp[0].list); + n->replace = (yyvsp[(2) - (9)].boolean); + n->funcname = (yyvsp[(4) - (9)].list); + n->parameters = (yyvsp[(5) - (9)].list); + n->returnType = (yyvsp[(7) - (9)].typnam); + n->options = (yyvsp[(8) - (9)].list); + n->withClause = (yyvsp[(9) - (9)].list); (yyval.node) = (Node *)n; } -#line 32057 "gram.c" /* yacc.c:1646 */ break; - case 1016: -#line 6855 "gram.y" /* yacc.c:1646 */ + case 1093: +/* Line 1792 of yacc.c */ +#line 7356 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); - n->replace = (yyvsp[-10].boolean); - n->funcname = (yyvsp[-8].list); - n->parameters = mergeTableFuncParameters((yyvsp[-7].list), (yyvsp[-3].list)); - n->returnType = TableFuncTypeName((yyvsp[-3].list)); - n->returnType->location = (yylsp[-5]); - n->options = (yyvsp[-1].list); - n->withClause = (yyvsp[0].list); + n->replace = (yyvsp[(2) - (12)].boolean); + n->funcname = (yyvsp[(4) - (12)].list); + n->parameters = mergeTableFuncParameters((yyvsp[(5) - (12)].list), (yyvsp[(9) - (12)].list)); + n->returnType = TableFuncTypeName((yyvsp[(9) - (12)].list)); + n->returnType->location = (yylsp[(7) - (12)]); + n->options = (yyvsp[(11) - (12)].list); + n->withClause = (yyvsp[(12) - (12)].list); (yyval.node) = (Node *)n; } -#line 32073 "gram.c" /* yacc.c:1646 */ break; - case 1017: -#line 6868 "gram.y" /* yacc.c:1646 */ + case 1094: +/* Line 1792 of yacc.c */ +#line 7369 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); - n->replace = (yyvsp[-5].boolean); - n->funcname = (yyvsp[-3].list); - n->parameters = (yyvsp[-2].list); + n->replace = (yyvsp[(2) - (7)].boolean); + n->funcname = (yyvsp[(4) - (7)].list); + n->parameters = (yyvsp[(5) - (7)].list); n->returnType = NULL; - n->options = (yyvsp[-1].list); - n->withClause = (yyvsp[0].list); + n->options = (yyvsp[(6) - (7)].list); + n->withClause = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *)n; } -#line 32088 "gram.c" /* yacc.c:1646 */ break; - case 1018: -#line 6881 "gram.y" /* yacc.c:1646 */ + case 1095: +/* Line 1792 of yacc.c */ +#line 7382 "gram.y" { (yyval.boolean) = TRUE; } -#line 32094 "gram.c" /* yacc.c:1646 */ break; - case 1019: -#line 6882 "gram.y" /* yacc.c:1646 */ + case 1096: +/* Line 1792 of yacc.c */ +#line 7383 "gram.y" { (yyval.boolean) = FALSE; } -#line 32100 "gram.c" /* yacc.c:1646 */ break; - case 1020: -#line 6885 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 32106 "gram.c" /* yacc.c:1646 */ + case 1097: +/* Line 1792 of yacc.c */ +#line 7386 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 1021: -#line 6886 "gram.y" /* yacc.c:1646 */ + case 1098: +/* Line 1792 of yacc.c */ +#line 7387 "gram.y" { (yyval.list) = NIL; } -#line 32112 "gram.c" /* yacc.c:1646 */ break; - case 1022: -#line 6890 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].fun_param)); } -#line 32118 "gram.c" /* yacc.c:1646 */ + case 1099: +/* Line 1792 of yacc.c */ +#line 7391 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); } break; - case 1023: -#line 6891 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].fun_param)); } -#line 32124 "gram.c" /* yacc.c:1646 */ + case 1100: +/* Line 1792 of yacc.c */ +#line 7392 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); } break; - case 1024: -#line 6899 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 32130 "gram.c" /* yacc.c:1646 */ + case 1101: +/* Line 1792 of yacc.c */ +#line 7396 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); } break; - case 1025: -#line 6900 "gram.y" /* yacc.c:1646 */ + case 1102: +/* Line 1792 of yacc.c */ +#line 7398 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); } + break; + + case 1103: +/* Line 1792 of yacc.c */ +#line 7403 "gram.y" + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = (yyvsp[(1) - (2)].list); + n->objargs = extractArgTypes((yyvsp[(2) - (2)].list)); + (yyval.objwithargs) = n; + } + break; + + case 1104: +/* Line 1792 of yacc.c */ +#line 7415 "gram.y" + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = list_make1(makeString(pstrdup((yyvsp[(1) - (1)].keyword)))); + n->args_unspecified = true; + (yyval.objwithargs) = n; + } + break; + + case 1105: +/* Line 1792 of yacc.c */ +#line 7422 "gram.y" + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = list_make1(makeString((yyvsp[(1) - (1)].str))); + n->args_unspecified = true; + (yyval.objwithargs) = n; + } + break; + + case 1106: +/* Line 1792 of yacc.c */ +#line 7429 "gram.y" + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), + yyscanner); + n->args_unspecified = true; + (yyval.objwithargs) = n; + } + break; + + case 1107: +/* Line 1792 of yacc.c */ +#line 7443 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } + break; + + case 1108: +/* Line 1792 of yacc.c */ +#line 7444 "gram.y" { (yyval.list) = NIL; } -#line 32136 "gram.c" /* yacc.c:1646 */ break; - case 1026: -#line 6904 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].fun_param)); } -#line 32142 "gram.c" /* yacc.c:1646 */ + case 1109: +/* Line 1792 of yacc.c */ +#line 7448 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); } break; - case 1027: -#line 6906 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].fun_param)); } -#line 32148 "gram.c" /* yacc.c:1646 */ + case 1110: +/* Line 1792 of yacc.c */ +#line 7450 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); } break; - case 1028: -#line 6921 "gram.y" /* yacc.c:1646 */ + case 1111: +/* Line 1792 of yacc.c */ +#line 7465 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); - n->name = (yyvsp[-1].str); - n->argType = (yyvsp[0].typnam); - n->mode = (yyvsp[-2].fun_param_mode); + n->name = (yyvsp[(2) - (3)].str); + n->argType = (yyvsp[(3) - (3)].typnam); + n->mode = (yyvsp[(1) - (3)].fun_param_mode); n->defexpr = NULL; (yyval.fun_param) = n; } -#line 32161 "gram.c" /* yacc.c:1646 */ break; - case 1029: -#line 6930 "gram.y" /* yacc.c:1646 */ + case 1112: +/* Line 1792 of yacc.c */ +#line 7474 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); - n->name = (yyvsp[-2].str); - n->argType = (yyvsp[0].typnam); - n->mode = (yyvsp[-1].fun_param_mode); + n->name = (yyvsp[(1) - (3)].str); + n->argType = (yyvsp[(3) - (3)].typnam); + n->mode = (yyvsp[(2) - (3)].fun_param_mode); n->defexpr = NULL; (yyval.fun_param) = n; } -#line 32174 "gram.c" /* yacc.c:1646 */ break; - case 1030: -#line 6939 "gram.y" /* yacc.c:1646 */ + case 1113: +/* Line 1792 of yacc.c */ +#line 7483 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); - n->name = (yyvsp[-1].str); - n->argType = (yyvsp[0].typnam); + n->name = (yyvsp[(1) - (2)].str); + n->argType = (yyvsp[(2) - (2)].typnam); n->mode = FUNC_PARAM_IN; n->defexpr = NULL; (yyval.fun_param) = n; } -#line 32187 "gram.c" /* yacc.c:1646 */ break; - case 1031: -#line 6948 "gram.y" /* yacc.c:1646 */ + case 1114: +/* Line 1792 of yacc.c */ +#line 7492 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = NULL; - n->argType = (yyvsp[0].typnam); - n->mode = (yyvsp[-1].fun_param_mode); + n->argType = (yyvsp[(2) - (2)].typnam); + n->mode = (yyvsp[(1) - (2)].fun_param_mode); n->defexpr = NULL; (yyval.fun_param) = n; } -#line 32200 "gram.c" /* yacc.c:1646 */ break; - case 1032: -#line 6957 "gram.y" /* yacc.c:1646 */ + case 1115: +/* Line 1792 of yacc.c */ +#line 7501 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = NULL; - n->argType = (yyvsp[0].typnam); + n->argType = (yyvsp[(1) - (1)].typnam); n->mode = FUNC_PARAM_IN; n->defexpr = NULL; (yyval.fun_param) = n; } -#line 32213 "gram.c" /* yacc.c:1646 */ break; - case 1033: -#line 6968 "gram.y" /* yacc.c:1646 */ + case 1116: +/* Line 1792 of yacc.c */ +#line 7512 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_IN; } -#line 32219 "gram.c" /* yacc.c:1646 */ break; - case 1034: -#line 6969 "gram.y" /* yacc.c:1646 */ + case 1117: +/* Line 1792 of yacc.c */ +#line 7513 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_OUT; } -#line 32225 "gram.c" /* yacc.c:1646 */ break; - case 1035: -#line 6970 "gram.y" /* yacc.c:1646 */ + case 1118: +/* Line 1792 of yacc.c */ +#line 7514 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; } -#line 32231 "gram.c" /* yacc.c:1646 */ break; - case 1036: -#line 6971 "gram.y" /* yacc.c:1646 */ + case 1119: +/* Line 1792 of yacc.c */ +#line 7515 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; } -#line 32237 "gram.c" /* yacc.c:1646 */ break; - case 1037: -#line 6972 "gram.y" /* yacc.c:1646 */ + case 1120: +/* Line 1792 of yacc.c */ +#line 7516 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_VARIADIC; } -#line 32243 "gram.c" /* yacc.c:1646 */ break; - case 1039: -#line 6983 "gram.y" /* yacc.c:1646 */ + case 1122: +/* Line 1792 of yacc.c */ +#line 7527 "gram.y" { /* We can catch over-specified results here if we want to, * but for now better to silently swallow typmod, etc. * - thomas 2000-03-22 */ - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 32255 "gram.c" /* yacc.c:1646 */ break; - case 1040: -#line 6997 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 32261 "gram.c" /* yacc.c:1646 */ + case 1123: +/* Line 1792 of yacc.c */ +#line 7541 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; - case 1041: -#line 6999 "gram.y" /* yacc.c:1646 */ + case 1124: +/* Line 1792 of yacc.c */ +#line 7543 "gram.y" { - (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-3].str)), (yyvsp[-2].list))); + (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(1) - (4)].str)), (yyvsp[(2) - (4)].list))); (yyval.typnam)->pct_type = true; - (yyval.typnam)->location = (yylsp[-3]); + (yyval.typnam)->location = (yylsp[(1) - (4)]); } -#line 32271 "gram.c" /* yacc.c:1646 */ break; - case 1042: -#line 7005 "gram.y" /* yacc.c:1646 */ + case 1125: +/* Line 1792 of yacc.c */ +#line 7549 "gram.y" { - (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-3].str)), (yyvsp[-2].list))); + (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(2) - (5)].str)), (yyvsp[(3) - (5)].list))); (yyval.typnam)->pct_type = true; (yyval.typnam)->setof = TRUE; - (yyval.typnam)->location = (yylsp[-3]); + (yyval.typnam)->location = (yylsp[(2) - (5)]); } -#line 32282 "gram.c" /* yacc.c:1646 */ break; - case 1043: -#line 7015 "gram.y" /* yacc.c:1646 */ + case 1126: +/* Line 1792 of yacc.c */ +#line 7559 "gram.y" { - (yyval.fun_param) = (yyvsp[0].fun_param); + (yyval.fun_param) = (yyvsp[(1) - (1)].fun_param); } -#line 32290 "gram.c" /* yacc.c:1646 */ break; - case 1044: -#line 7019 "gram.y" /* yacc.c:1646 */ + case 1127: +/* Line 1792 of yacc.c */ +#line 7563 "gram.y" { - (yyval.fun_param) = (yyvsp[-2].fun_param); - (yyval.fun_param)->defexpr = (yyvsp[0].node); + (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); + (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); } -#line 32299 "gram.c" /* yacc.c:1646 */ break; - case 1045: -#line 7024 "gram.y" /* yacc.c:1646 */ + case 1128: +/* Line 1792 of yacc.c */ +#line 7568 "gram.y" { - (yyval.fun_param) = (yyvsp[-2].fun_param); - (yyval.fun_param)->defexpr = (yyvsp[0].node); + (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); + (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); } -#line 32308 "gram.c" /* yacc.c:1646 */ break; - case 1046: -#line 7032 "gram.y" /* yacc.c:1646 */ + case 1129: +/* Line 1792 of yacc.c */ +#line 7576 "gram.y" { - if (!((yyvsp[0].fun_param)->mode == FUNC_PARAM_IN || - (yyvsp[0].fun_param)->mode == FUNC_PARAM_VARIADIC)) + if (!((yyvsp[(1) - (1)].fun_param)->mode == FUNC_PARAM_IN || + (yyvsp[(1) - (1)].fun_param)->mode == FUNC_PARAM_VARIADIC)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("aggregates cannot have output arguments"), - parser_errposition((yylsp[0])))); - (yyval.fun_param) = (yyvsp[0].fun_param); + parser_errposition((yylsp[(1) - (1)])))); + (yyval.fun_param) = (yyvsp[(1) - (1)].fun_param); } -#line 32322 "gram.c" /* yacc.c:1646 */ break; - case 1047: -#line 7073 "gram.y" /* yacc.c:1646 */ + case 1130: +/* Line 1792 of yacc.c */ +#line 7617 "gram.y" { (yyval.list) = list_make2(NIL, makeInteger(-1)); } -#line 32330 "gram.c" /* yacc.c:1646 */ break; - case 1048: -#line 7077 "gram.y" /* yacc.c:1646 */ + case 1131: +/* Line 1792 of yacc.c */ +#line 7621 "gram.y" { - (yyval.list) = list_make2((yyvsp[-1].list), makeInteger(-1)); + (yyval.list) = list_make2((yyvsp[(2) - (3)].list), makeInteger(-1)); } -#line 32338 "gram.c" /* yacc.c:1646 */ break; - case 1049: -#line 7081 "gram.y" /* yacc.c:1646 */ + case 1132: +/* Line 1792 of yacc.c */ +#line 7625 "gram.y" { - (yyval.list) = list_make2((yyvsp[-1].list), makeInteger(0)); + (yyval.list) = list_make2((yyvsp[(4) - (5)].list), makeInteger(0)); } -#line 32346 "gram.c" /* yacc.c:1646 */ break; - case 1050: -#line 7085 "gram.y" /* yacc.c:1646 */ + case 1133: +/* Line 1792 of yacc.c */ +#line 7629 "gram.y" { /* this is the only case requiring consistency checking */ - (yyval.list) = makeOrderedSetArgs((yyvsp[-4].list), (yyvsp[-1].list), yyscanner); + (yyval.list) = makeOrderedSetArgs((yyvsp[(2) - (6)].list), (yyvsp[(5) - (6)].list), yyscanner); } -#line 32355 "gram.c" /* yacc.c:1646 */ break; - case 1051: -#line 7092 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].fun_param)); } -#line 32361 "gram.c" /* yacc.c:1646 */ + case 1134: +/* Line 1792 of yacc.c */ +#line 7636 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); } break; - case 1052: -#line 7093 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].fun_param)); } -#line 32367 "gram.c" /* yacc.c:1646 */ + case 1135: +/* Line 1792 of yacc.c */ +#line 7637 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); } break; - case 1053: -#line 7098 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 32373 "gram.c" /* yacc.c:1646 */ + case 1136: +/* Line 1792 of yacc.c */ +#line 7642 "gram.y" + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = (yyvsp[(1) - (2)].list); + n->objargs = extractAggrArgTypes((yyvsp[(2) - (2)].list)); + (yyval.objwithargs) = n; + } break; - case 1054: -#line 7099 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 32379 "gram.c" /* yacc.c:1646 */ + case 1137: +/* Line 1792 of yacc.c */ +#line 7651 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); } break; - case 1055: -#line 7107 "gram.y" /* yacc.c:1646 */ + case 1138: +/* Line 1792 of yacc.c */ +#line 7653 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); } + break; + + case 1139: +/* Line 1792 of yacc.c */ +#line 7658 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } + break; + + case 1140: +/* Line 1792 of yacc.c */ +#line 7659 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } + break; + + case 1141: +/* Line 1792 of yacc.c */ +#line 7667 "gram.y" { - (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(FALSE)); + (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(FALSE), (yylsp[(1) - (4)])); } -#line 32387 "gram.c" /* yacc.c:1646 */ break; - case 1056: -#line 7111 "gram.y" /* yacc.c:1646 */ + case 1142: +/* Line 1792 of yacc.c */ +#line 7671 "gram.y" { - (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE), (yylsp[(1) - (5)])); } -#line 32395 "gram.c" /* yacc.c:1646 */ break; - case 1057: -#line 7115 "gram.y" /* yacc.c:1646 */ + case 1143: +/* Line 1792 of yacc.c */ +#line 7675 "gram.y" { - (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 32403 "gram.c" /* yacc.c:1646 */ break; - case 1058: -#line 7119 "gram.y" /* yacc.c:1646 */ + case 1144: +/* Line 1792 of yacc.c */ +#line 7679 "gram.y" { - (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("immutable")); + (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("immutable"), (yylsp[(1) - (1)])); } -#line 32411 "gram.c" /* yacc.c:1646 */ break; - case 1059: -#line 7123 "gram.y" /* yacc.c:1646 */ + case 1145: +/* Line 1792 of yacc.c */ +#line 7683 "gram.y" { - (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("stable")); + (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("stable"), (yylsp[(1) - (1)])); } -#line 32419 "gram.c" /* yacc.c:1646 */ break; - case 1060: -#line 7127 "gram.y" /* yacc.c:1646 */ + case 1146: +/* Line 1792 of yacc.c */ +#line 7687 "gram.y" { - (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("volatile")); + (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("volatile"), (yylsp[(1) - (1)])); } -#line 32427 "gram.c" /* yacc.c:1646 */ break; - case 1061: -#line 7131 "gram.y" /* yacc.c:1646 */ + case 1147: +/* Line 1792 of yacc.c */ +#line 7691 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE), (yylsp[(1) - (3)])); } -#line 32435 "gram.c" /* yacc.c:1646 */ break; - case 1062: -#line 7135 "gram.y" /* yacc.c:1646 */ + case 1148: +/* Line 1792 of yacc.c */ +#line 7695 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE)); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE), (yylsp[(1) - (3)])); } -#line 32443 "gram.c" /* yacc.c:1646 */ break; - case 1063: -#line 7139 "gram.y" /* yacc.c:1646 */ + case 1149: +/* Line 1792 of yacc.c */ +#line 7699 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE), (yylsp[(1) - (2)])); } -#line 32451 "gram.c" /* yacc.c:1646 */ break; - case 1064: -#line 7143 "gram.y" /* yacc.c:1646 */ + case 1150: +/* Line 1792 of yacc.c */ +#line 7703 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE)); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE), (yylsp[(1) - (2)])); } -#line 32459 "gram.c" /* yacc.c:1646 */ break; - case 1065: -#line 7147 "gram.y" /* yacc.c:1646 */ + case 1151: +/* Line 1792 of yacc.c */ +#line 7707 "gram.y" { - (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 32467 "gram.c" /* yacc.c:1646 */ break; - case 1066: -#line 7151 "gram.y" /* yacc.c:1646 */ + case 1152: +/* Line 1792 of yacc.c */ +#line 7711 "gram.y" { - (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(FALSE)); + (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(FALSE), (yylsp[(1) - (2)])); } -#line 32475 "gram.c" /* yacc.c:1646 */ break; - case 1067: -#line 7155 "gram.y" /* yacc.c:1646 */ + case 1153: +/* Line 1792 of yacc.c */ +#line 7715 "gram.y" { - (yyval.defelt) = makeDefElem("cost", (Node *)(yyvsp[0].value)); + (yyval.defelt) = makeDefElem("cost", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); } -#line 32483 "gram.c" /* yacc.c:1646 */ break; - case 1068: -#line 7159 "gram.y" /* yacc.c:1646 */ + case 1154: +/* Line 1792 of yacc.c */ +#line 7719 "gram.y" { - (yyval.defelt) = makeDefElem("rows", (Node *)(yyvsp[0].value)); + (yyval.defelt) = makeDefElem("rows", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); } -#line 32491 "gram.c" /* yacc.c:1646 */ break; - case 1069: -#line 7163 "gram.y" /* yacc.c:1646 */ + case 1155: +/* Line 1792 of yacc.c */ +#line 7723 "gram.y" { /* we abuse the normal content of a DefElem here */ - (yyval.defelt) = makeDefElem("set", (Node *)(yyvsp[0].vsetstmt)); + (yyval.defelt) = makeDefElem("set", (Node *)(yyvsp[(1) - (1)].vsetstmt), (yylsp[(1) - (1)])); } -#line 32500 "gram.c" /* yacc.c:1646 */ break; - case 1070: -#line 7168 "gram.y" /* yacc.c:1646 */ + case 1156: +/* Line 1792 of yacc.c */ +#line 7728 "gram.y" { - (yyval.defelt) = makeDefElem("parallel", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("parallel", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 32508 "gram.c" /* yacc.c:1646 */ break; - case 1071: -#line 7175 "gram.y" /* yacc.c:1646 */ + case 1157: +/* Line 1792 of yacc.c */ +#line 7735 "gram.y" { - (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } -#line 32516 "gram.c" /* yacc.c:1646 */ break; - case 1072: -#line 7179 "gram.y" /* yacc.c:1646 */ + case 1158: +/* Line 1792 of yacc.c */ +#line 7739 "gram.y" { - (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 32524 "gram.c" /* yacc.c:1646 */ break; - case 1073: -#line 7183 "gram.y" /* yacc.c:1646 */ + case 1159: +/* Line 1792 of yacc.c */ +#line 7743 "gram.y" { - (yyval.defelt) = makeDefElem("transform", (Node *)(yyvsp[0].list)); + (yyval.defelt) = makeDefElem("transform", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } -#line 32532 "gram.c" /* yacc.c:1646 */ break; - case 1074: -#line 7187 "gram.y" /* yacc.c:1646 */ + case 1160: +/* Line 1792 of yacc.c */ +#line 7747 "gram.y" { - (yyval.defelt) = makeDefElem("window", (Node *)makeInteger(TRUE)); + (yyval.defelt) = makeDefElem("window", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 32540 "gram.c" /* yacc.c:1646 */ break; - case 1075: -#line 7191 "gram.y" /* yacc.c:1646 */ + case 1161: +/* Line 1792 of yacc.c */ +#line 7751 "gram.y" { - (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt) = (yyvsp[(1) - (1)].defelt); } -#line 32548 "gram.c" /* yacc.c:1646 */ break; - case 1076: -#line 7196 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 32554 "gram.c" /* yacc.c:1646 */ + case 1162: +/* Line 1792 of yacc.c */ +#line 7756 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; - case 1077: -#line 7198 "gram.y" /* yacc.c:1646 */ + case 1163: +/* Line 1792 of yacc.c */ +#line 7758 "gram.y" { - (yyval.list) = list_make2(makeString((yyvsp[-2].str)), makeString((yyvsp[0].str))); + (yyval.list) = list_make2(makeString((yyvsp[(1) - (3)].str)), makeString((yyvsp[(3) - (3)].str))); } -#line 32562 "gram.c" /* yacc.c:1646 */ break; - case 1078: -#line 7204 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].typnam)); } -#line 32568 "gram.c" /* yacc.c:1646 */ + case 1164: +/* Line 1792 of yacc.c */ +#line 7764 "gram.y" + { (yyval.list) = list_make1((yyvsp[(3) - (3)].typnam)); } break; - case 1079: -#line 7205 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-4].list), (yyvsp[0].typnam)); } -#line 32574 "gram.c" /* yacc.c:1646 */ + case 1165: +/* Line 1792 of yacc.c */ +#line 7765 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (5)].list), (yyvsp[(5) - (5)].typnam)); } break; - case 1080: -#line 7209 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 32580 "gram.c" /* yacc.c:1646 */ + case 1166: +/* Line 1792 of yacc.c */ +#line 7769 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 1081: -#line 7210 "gram.y" /* yacc.c:1646 */ + case 1167: +/* Line 1792 of yacc.c */ +#line 7770 "gram.y" { (yyval.list) = NIL; } -#line 32586 "gram.c" /* yacc.c:1646 */ break; - case 1082: -#line 7214 "gram.y" /* yacc.c:1646 */ + case 1168: +/* Line 1792 of yacc.c */ +#line 7774 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); - n->name = (yyvsp[-1].str); - n->argType = (yyvsp[0].typnam); + n->name = (yyvsp[(1) - (2)].str); + n->argType = (yyvsp[(2) - (2)].typnam); n->mode = FUNC_PARAM_TABLE; n->defexpr = NULL; (yyval.fun_param) = n; } -#line 32599 "gram.c" /* yacc.c:1646 */ break; - case 1083: -#line 7226 "gram.y" /* yacc.c:1646 */ + case 1169: +/* Line 1792 of yacc.c */ +#line 7786 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].fun_param)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); } -#line 32607 "gram.c" /* yacc.c:1646 */ break; - case 1084: -#line 7230 "gram.y" /* yacc.c:1646 */ + case 1170: +/* Line 1792 of yacc.c */ +#line 7790 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].fun_param)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); } -#line 32615 "gram.c" /* yacc.c:1646 */ break; - case 1085: -#line 7245 "gram.y" /* yacc.c:1646 */ + case 1171: +/* Line 1792 of yacc.c */ +#line 7805 "gram.y" { AlterFunctionStmt *n = makeNode(AlterFunctionStmt); - n->func = (yyvsp[-2].funwithargs); - n->actions = (yyvsp[-1].list); + n->func = (yyvsp[(3) - (5)].objwithargs); + n->actions = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; } -#line 32626 "gram.c" /* yacc.c:1646 */ break; - case 1086: -#line 7255 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 32632 "gram.c" /* yacc.c:1646 */ + case 1172: +/* Line 1792 of yacc.c */ +#line 7815 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; - case 1087: -#line 7256 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 32638 "gram.c" /* yacc.c:1646 */ + case 1173: +/* Line 1792 of yacc.c */ +#line 7816 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; - case 1090: -#line 7278 "gram.y" /* yacc.c:1646 */ + case 1176: +/* Line 1792 of yacc.c */ +#line 7838 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_FUNCTION; - n->objects = list_make1((yyvsp[-2].list)); - n->arguments = list_make1(extractArgTypes((yyvsp[-1].list))); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 32653 "gram.c" /* yacc.c:1646 */ break; - case 1091: -#line 7289 "gram.y" /* yacc.c:1646 */ + case 1177: +/* Line 1792 of yacc.c */ +#line 7848 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_FUNCTION; - n->objects = list_make1((yyvsp[-2].list)); - n->arguments = list_make1(extractArgTypes((yyvsp[-1].list))); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 32668 "gram.c" /* yacc.c:1646 */ break; - case 1092: -#line 7303 "gram.y" /* yacc.c:1646 */ + case 1178: +/* Line 1792 of yacc.c */ +#line 7861 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_AGGREGATE; - n->objects = list_make1((yyvsp[-2].list)); - n->arguments = list_make1(extractAggrArgTypes((yyvsp[-1].list))); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 32683 "gram.c" /* yacc.c:1646 */ break; - case 1093: -#line 7314 "gram.y" /* yacc.c:1646 */ + case 1179: +/* Line 1792 of yacc.c */ +#line 7871 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_AGGREGATE; - n->objects = list_make1((yyvsp[-2].list)); - n->arguments = list_make1(extractAggrArgTypes((yyvsp[-1].list))); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 32698 "gram.c" /* yacc.c:1646 */ break; - case 1094: -#line 7328 "gram.y" /* yacc.c:1646 */ + case 1180: +/* Line 1792 of yacc.c */ +#line 7884 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_OPERATOR; - n->objects = list_make1((yyvsp[-2].list)); - n->arguments = list_make1((yyvsp[-1].list)); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 32713 "gram.c" /* yacc.c:1646 */ break; - case 1095: -#line 7339 "gram.y" /* yacc.c:1646 */ + case 1181: +/* Line 1792 of yacc.c */ +#line 7894 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_OPERATOR; - n->objects = list_make1((yyvsp[-2].list)); - n->arguments = list_make1((yyvsp[-1].list)); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 32728 "gram.c" /* yacc.c:1646 */ break; - case 1096: -#line 7353 "gram.y" /* yacc.c:1646 */ + case 1182: +/* Line 1792 of yacc.c */ +#line 7907 "gram.y" { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("missing argument"), errhint("Use NONE to denote the missing argument of a unary operator."), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(3) - (3)])))); } -#line 32740 "gram.c" /* yacc.c:1646 */ break; - case 1097: -#line 7361 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[-3].typnam), (yyvsp[-1].typnam)); } -#line 32746 "gram.c" /* yacc.c:1646 */ + case 1183: +/* Line 1792 of yacc.c */ +#line 7915 "gram.y" + { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), (yyvsp[(4) - (5)].typnam)); } break; - case 1098: -#line 7363 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2(NULL, (yyvsp[-1].typnam)); } -#line 32752 "gram.c" /* yacc.c:1646 */ + case 1184: +/* Line 1792 of yacc.c */ +#line 7917 "gram.y" + { (yyval.list) = list_make2(NULL, (yyvsp[(4) - (5)].typnam)); } break; - case 1099: -#line 7365 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[-3].typnam), NULL); } -#line 32758 "gram.c" /* yacc.c:1646 */ + case 1185: +/* Line 1792 of yacc.c */ +#line 7919 "gram.y" + { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), NULL); } break; - case 1100: -#line 7370 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 32764 "gram.c" /* yacc.c:1646 */ + case 1186: +/* Line 1792 of yacc.c */ +#line 7924 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; - case 1101: -#line 7372 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lcons(makeString((yyvsp[-2].str)), (yyvsp[0].list)); } -#line 32770 "gram.c" /* yacc.c:1646 */ + case 1187: +/* Line 1792 of yacc.c */ +#line 7926 "gram.y" + { (yyval.list) = lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(3) - (3)].list)); } break; - case 1102: -#line 7385 "gram.y" /* yacc.c:1646 */ + case 1188: +/* Line 1792 of yacc.c */ +#line 7930 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); } + break; + + case 1189: +/* Line 1792 of yacc.c */ +#line 7932 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); } + break; + + case 1190: +/* Line 1792 of yacc.c */ +#line 7937 "gram.y" + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = (yyvsp[(1) - (2)].list); + n->objargs = (yyvsp[(2) - (2)].list); + (yyval.objwithargs) = n; + } + break; + + case 1191: +/* Line 1792 of yacc.c */ +#line 7955 "gram.y" { DoStmt *n = makeNode(DoStmt); - n->args = (yyvsp[0].list); + n->args = (yyvsp[(2) - (2)].list); (yyval.node) = (Node *)n; } -#line 32780 "gram.c" /* yacc.c:1646 */ break; - case 1103: -#line 7393 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 32786 "gram.c" /* yacc.c:1646 */ + case 1192: +/* Line 1792 of yacc.c */ +#line 7963 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; - case 1104: -#line 7394 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 32792 "gram.c" /* yacc.c:1646 */ + case 1193: +/* Line 1792 of yacc.c */ +#line 7964 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; - case 1105: -#line 7399 "gram.y" /* yacc.c:1646 */ + case 1194: +/* Line 1792 of yacc.c */ +#line 7969 "gram.y" { - (yyval.defelt) = makeDefElem("as", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("as", (Node *)makeString((yyvsp[(1) - (1)].str)), (yylsp[(1) - (1)])); } -#line 32800 "gram.c" /* yacc.c:1646 */ break; - case 1106: -#line 7403 "gram.y" /* yacc.c:1646 */ + case 1195: +/* Line 1792 of yacc.c */ +#line 7973 "gram.y" { - (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 32808 "gram.c" /* yacc.c:1646 */ break; - case 1107: -#line 7416 "gram.y" /* yacc.c:1646 */ + case 1196: +/* Line 1792 of yacc.c */ +#line 7986 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); - n->sourcetype = (yyvsp[-7].typnam); - n->targettype = (yyvsp[-5].typnam); - n->func = (yyvsp[-1].funwithargs); - n->context = (CoercionContext) (yyvsp[0].ival); + n->sourcetype = (yyvsp[(4) - (11)].typnam); + n->targettype = (yyvsp[(6) - (11)].typnam); + n->func = (yyvsp[(10) - (11)].objwithargs); + n->context = (CoercionContext) (yyvsp[(11) - (11)].ival); n->inout = false; (yyval.node) = (Node *)n; } -#line 32822 "gram.c" /* yacc.c:1646 */ break; - case 1108: -#line 7427 "gram.y" /* yacc.c:1646 */ + case 1197: +/* Line 1792 of yacc.c */ +#line 7997 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); - n->sourcetype = (yyvsp[-6].typnam); - n->targettype = (yyvsp[-4].typnam); + n->sourcetype = (yyvsp[(4) - (10)].typnam); + n->targettype = (yyvsp[(6) - (10)].typnam); n->func = NULL; - n->context = (CoercionContext) (yyvsp[0].ival); + n->context = (CoercionContext) (yyvsp[(10) - (10)].ival); n->inout = false; (yyval.node) = (Node *)n; } -#line 32836 "gram.c" /* yacc.c:1646 */ break; - case 1109: -#line 7438 "gram.y" /* yacc.c:1646 */ + case 1198: +/* Line 1792 of yacc.c */ +#line 8008 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); - n->sourcetype = (yyvsp[-6].typnam); - n->targettype = (yyvsp[-4].typnam); + n->sourcetype = (yyvsp[(4) - (10)].typnam); + n->targettype = (yyvsp[(6) - (10)].typnam); n->func = NULL; - n->context = (CoercionContext) (yyvsp[0].ival); + n->context = (CoercionContext) (yyvsp[(10) - (10)].ival); n->inout = true; (yyval.node) = (Node *)n; } -#line 32850 "gram.c" /* yacc.c:1646 */ break; - case 1110: -#line 7449 "gram.y" /* yacc.c:1646 */ + case 1199: +/* Line 1792 of yacc.c */ +#line 8019 "gram.y" { (yyval.ival) = COERCION_IMPLICIT; } -#line 32856 "gram.c" /* yacc.c:1646 */ break; - case 1111: -#line 7450 "gram.y" /* yacc.c:1646 */ + case 1200: +/* Line 1792 of yacc.c */ +#line 8020 "gram.y" { (yyval.ival) = COERCION_ASSIGNMENT; } -#line 32862 "gram.c" /* yacc.c:1646 */ break; - case 1112: -#line 7451 "gram.y" /* yacc.c:1646 */ + case 1201: +/* Line 1792 of yacc.c */ +#line 8021 "gram.y" { (yyval.ival) = COERCION_EXPLICIT; } -#line 32868 "gram.c" /* yacc.c:1646 */ break; - case 1113: -#line 7456 "gram.y" /* yacc.c:1646 */ + case 1202: +/* Line 1792 of yacc.c */ +#line 8026 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_CAST; - n->objects = list_make1(list_make1((yyvsp[-4].typnam))); - n->arguments = list_make1(list_make1((yyvsp[-2].typnam))); - n->behavior = (yyvsp[0].dbehavior); - n->missing_ok = (yyvsp[-6].boolean); + n->objects = list_make1(list_make2((yyvsp[(5) - (9)].typnam), (yyvsp[(7) - (9)].typnam))); + n->behavior = (yyvsp[(9) - (9)].dbehavior); + n->missing_ok = (yyvsp[(3) - (9)].boolean); n->concurrent = false; (yyval.node) = (Node *)n; } -#line 32883 "gram.c" /* yacc.c:1646 */ break; - case 1114: -#line 7468 "gram.y" /* yacc.c:1646 */ + case 1203: +/* Line 1792 of yacc.c */ +#line 8037 "gram.y" { (yyval.boolean) = TRUE; } -#line 32889 "gram.c" /* yacc.c:1646 */ break; - case 1115: -#line 7469 "gram.y" /* yacc.c:1646 */ + case 1204: +/* Line 1792 of yacc.c */ +#line 8038 "gram.y" { (yyval.boolean) = FALSE; } -#line 32895 "gram.c" /* yacc.c:1646 */ break; - case 1116: -#line 7480 "gram.y" /* yacc.c:1646 */ + case 1205: +/* Line 1792 of yacc.c */ +#line 8049 "gram.y" { CreateTransformStmt *n = makeNode(CreateTransformStmt); - n->replace = (yyvsp[-8].boolean); - n->type_name = (yyvsp[-5].typnam); - n->lang = (yyvsp[-3].str); - n->fromsql = linitial((yyvsp[-1].list)); - n->tosql = lsecond((yyvsp[-1].list)); + n->replace = (yyvsp[(2) - (10)].boolean); + n->type_name = (yyvsp[(5) - (10)].typnam); + n->lang = (yyvsp[(7) - (10)].str); + n->fromsql = linitial((yyvsp[(9) - (10)].list)); + n->tosql = lsecond((yyvsp[(9) - (10)].list)); (yyval.node) = (Node *)n; } -#line 32909 "gram.c" /* yacc.c:1646 */ break; - case 1117: -#line 7492 "gram.y" /* yacc.c:1646 */ + case 1206: +/* Line 1792 of yacc.c */ +#line 8061 "gram.y" { - (yyval.list) = list_make2((yyvsp[-6].funwithargs), (yyvsp[0].funwithargs)); + (yyval.list) = list_make2((yyvsp[(5) - (11)].objwithargs), (yyvsp[(11) - (11)].objwithargs)); } -#line 32917 "gram.c" /* yacc.c:1646 */ break; - case 1118: -#line 7496 "gram.y" /* yacc.c:1646 */ + case 1207: +/* Line 1792 of yacc.c */ +#line 8065 "gram.y" { - (yyval.list) = list_make2((yyvsp[0].funwithargs), (yyvsp[-6].funwithargs)); + (yyval.list) = list_make2((yyvsp[(11) - (11)].objwithargs), (yyvsp[(5) - (11)].objwithargs)); } -#line 32925 "gram.c" /* yacc.c:1646 */ break; - case 1119: -#line 7500 "gram.y" /* yacc.c:1646 */ + case 1208: +/* Line 1792 of yacc.c */ +#line 8069 "gram.y" { - (yyval.list) = list_make2((yyvsp[0].funwithargs), NULL); + (yyval.list) = list_make2((yyvsp[(5) - (5)].objwithargs), NULL); } -#line 32933 "gram.c" /* yacc.c:1646 */ break; - case 1120: -#line 7504 "gram.y" /* yacc.c:1646 */ + case 1209: +/* Line 1792 of yacc.c */ +#line 8073 "gram.y" { - (yyval.list) = list_make2(NULL, (yyvsp[0].funwithargs)); + (yyval.list) = list_make2(NULL, (yyvsp[(5) - (5)].objwithargs)); } -#line 32941 "gram.c" /* yacc.c:1646 */ break; - case 1121: -#line 7511 "gram.y" /* yacc.c:1646 */ + case 1210: +/* Line 1792 of yacc.c */ +#line 8080 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TRANSFORM; - n->objects = list_make1(list_make1((yyvsp[-3].typnam))); - n->arguments = list_make1(list_make1(makeString((yyvsp[-1].str)))); - n->behavior = (yyvsp[0].dbehavior); - n->missing_ok = (yyvsp[-5].boolean); + n->objects = list_make1(list_make2((yyvsp[(5) - (8)].typnam), makeString((yyvsp[(7) - (8)].str)))); + n->behavior = (yyvsp[(8) - (8)].dbehavior); + n->missing_ok = (yyvsp[(3) - (8)].boolean); (yyval.node) = (Node *)n; } -#line 32955 "gram.c" /* yacc.c:1646 */ break; - case 1122: -#line 7532 "gram.y" /* yacc.c:1646 */ + case 1211: +/* Line 1792 of yacc.c */ +#line 8100 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[-1].ival); - n->relation = (yyvsp[0].range); + n->kind = (yyvsp[(2) - (3)].ival); + n->relation = (yyvsp[(3) - (3)].range); n->name = NULL; n->options = 0; (yyval.node) = (Node *)n; } -#line 32968 "gram.c" /* yacc.c:1646 */ break; - case 1123: -#line 7541 "gram.y" /* yacc.c:1646 */ + case 1212: +/* Line 1792 of yacc.c */ +#line 8109 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[-1].ival); - n->name = (yyvsp[0].str); + n->kind = (yyvsp[(2) - (3)].ival); + n->name = (yyvsp[(3) - (3)].str); n->relation = NULL; n->options = 0; (yyval.node) = (Node *)n; } -#line 32981 "gram.c" /* yacc.c:1646 */ break; - case 1124: -#line 7550 "gram.y" /* yacc.c:1646 */ + case 1213: +/* Line 1792 of yacc.c */ +#line 8118 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[-1].ival); - n->relation = (yyvsp[0].range); + n->kind = (yyvsp[(5) - (6)].ival); + n->relation = (yyvsp[(6) - (6)].range); n->name = NULL; - n->options = (yyvsp[-3].ival); + n->options = (yyvsp[(3) - (6)].ival); (yyval.node) = (Node *)n; } -#line 32994 "gram.c" /* yacc.c:1646 */ break; - case 1125: -#line 7559 "gram.y" /* yacc.c:1646 */ + case 1214: +/* Line 1792 of yacc.c */ +#line 8127 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[-1].ival); - n->name = (yyvsp[0].str); + n->kind = (yyvsp[(5) - (6)].ival); + n->name = (yyvsp[(6) - (6)].str); n->relation = NULL; - n->options = (yyvsp[-3].ival); + n->options = (yyvsp[(3) - (6)].ival); (yyval.node) = (Node *)n; } -#line 33007 "gram.c" /* yacc.c:1646 */ break; - case 1126: -#line 7569 "gram.y" /* yacc.c:1646 */ + case 1215: +/* Line 1792 of yacc.c */ +#line 8137 "gram.y" { (yyval.ival) = REINDEX_OBJECT_INDEX; } -#line 33013 "gram.c" /* yacc.c:1646 */ break; - case 1127: -#line 7570 "gram.y" /* yacc.c:1646 */ + case 1216: +/* Line 1792 of yacc.c */ +#line 8138 "gram.y" { (yyval.ival) = REINDEX_OBJECT_TABLE; } -#line 33019 "gram.c" /* yacc.c:1646 */ break; - case 1128: -#line 7573 "gram.y" /* yacc.c:1646 */ + case 1217: +/* Line 1792 of yacc.c */ +#line 8141 "gram.y" { (yyval.ival) = REINDEX_OBJECT_SCHEMA; } -#line 33025 "gram.c" /* yacc.c:1646 */ break; - case 1129: -#line 7574 "gram.y" /* yacc.c:1646 */ + case 1218: +/* Line 1792 of yacc.c */ +#line 8142 "gram.y" { (yyval.ival) = REINDEX_OBJECT_SYSTEM; } -#line 33031 "gram.c" /* yacc.c:1646 */ break; - case 1130: -#line 7575 "gram.y" /* yacc.c:1646 */ + case 1219: +/* Line 1792 of yacc.c */ +#line 8143 "gram.y" { (yyval.ival) = REINDEX_OBJECT_DATABASE; } -#line 33037 "gram.c" /* yacc.c:1646 */ break; - case 1131: -#line 7578 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 33043 "gram.c" /* yacc.c:1646 */ + case 1220: +/* Line 1792 of yacc.c */ +#line 8146 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (1)].ival); } break; - case 1132: -#line 7579 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } -#line 33049 "gram.c" /* yacc.c:1646 */ + case 1221: +/* Line 1792 of yacc.c */ +#line 8147 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); } break; - case 1133: -#line 7582 "gram.y" /* yacc.c:1646 */ + case 1222: +/* Line 1792 of yacc.c */ +#line 8150 "gram.y" { (yyval.ival) = REINDEXOPT_VERBOSE; } -#line 33055 "gram.c" /* yacc.c:1646 */ break; - case 1134: -#line 7593 "gram.y" /* yacc.c:1646 */ + case 1223: +/* Line 1792 of yacc.c */ +#line 8161 "gram.y" { AlterTableSpaceOptionsStmt *n = makeNode(AlterTableSpaceOptionsStmt); - n->tablespacename = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->tablespacename = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); n->isReset = FALSE; (yyval.node) = (Node *)n; } -#line 33068 "gram.c" /* yacc.c:1646 */ break; - case 1135: -#line 7602 "gram.y" /* yacc.c:1646 */ + case 1224: +/* Line 1792 of yacc.c */ +#line 8170 "gram.y" { AlterTableSpaceOptionsStmt *n = makeNode(AlterTableSpaceOptionsStmt); - n->tablespacename = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->tablespacename = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); n->isReset = TRUE; (yyval.node) = (Node *)n; } -#line 33081 "gram.c" /* yacc.c:1646 */ break; - case 1136: -#line 7619 "gram.y" /* yacc.c:1646 */ + case 1225: +/* Line 1792 of yacc.c */ +#line 8187 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_AGGREGATE; - n->object = (yyvsp[-4].list); - n->objarg = extractAggrArgTypes((yyvsp[-3].list)); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33095 "gram.c" /* yacc.c:1646 */ break; - case 1137: -#line 7629 "gram.y" /* yacc.c:1646 */ + case 1226: +/* Line 1792 of yacc.c */ +#line 8196 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLLATION; - n->object = (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33108 "gram.c" /* yacc.c:1646 */ break; - case 1138: -#line 7638 "gram.y" /* yacc.c:1646 */ + case 1227: +/* Line 1792 of yacc.c */ +#line 8205 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_CONVERSION; - n->object = (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33121 "gram.c" /* yacc.c:1646 */ break; - case 1139: -#line 7647 "gram.y" /* yacc.c:1646 */ + case 1228: +/* Line 1792 of yacc.c */ +#line 8214 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DATABASE; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33134 "gram.c" /* yacc.c:1646 */ break; - case 1140: -#line 7656 "gram.y" /* yacc.c:1646 */ + case 1229: +/* Line 1792 of yacc.c */ +#line 8223 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DOMAIN; - n->object = (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33147 "gram.c" /* yacc.c:1646 */ break; - case 1141: -#line 7665 "gram.y" /* yacc.c:1646 */ + case 1230: +/* Line 1792 of yacc.c */ +#line 8232 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DOMCONSTRAINT; - n->object = (yyvsp[-5].list); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (8)].list); + n->subname = (yyvsp[(6) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *)n; } -#line 33160 "gram.c" /* yacc.c:1646 */ break; - case 1142: -#line 7674 "gram.y" /* yacc.c:1646 */ + case 1231: +/* Line 1792 of yacc.c */ +#line 8241 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FDW; - n->object = list_make1(makeString((yyvsp[-3].str))); - n->newname = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(5) - (8)].str)); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33173 "gram.c" /* yacc.c:1646 */ break; - case 1143: -#line 7683 "gram.y" /* yacc.c:1646 */ + case 1232: +/* Line 1792 of yacc.c */ +#line 8250 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FUNCTION; - n->object = (yyvsp[-3].funwithargs)->funcname; - n->objarg = (yyvsp[-3].funwithargs)->funcargs; - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33187 "gram.c" /* yacc.c:1646 */ break; - case 1144: -#line 7693 "gram.y" /* yacc.c:1646 */ + case 1233: +/* Line 1792 of yacc.c */ +#line 8259 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33200 "gram.c" /* yacc.c:1646 */ break; - case 1145: -#line 7702 "gram.y" /* yacc.c:1646 */ + case 1234: +/* Line 1792 of yacc.c */ +#line 8268 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_LANGUAGE; - n->object = list_make1(makeString((yyvsp[-3].str))); - n->newname = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); + n->newname = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33213 "gram.c" /* yacc.c:1646 */ break; - case 1146: -#line 7711 "gram.y" /* yacc.c:1646 */ + case 1235: +/* Line 1792 of yacc.c */ +#line 8277 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPCLASS; - n->object = lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newname = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33226 "gram.c" /* yacc.c:1646 */ break; - case 1147: -#line 7720 "gram.y" /* yacc.c:1646 */ + case 1236: +/* Line 1792 of yacc.c */ +#line 8286 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPFAMILY; - n->object = lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newname = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33239 "gram.c" /* yacc.c:1646 */ break; - case 1148: -#line 7729 "gram.y" /* yacc.c:1646 */ + case 1237: +/* Line 1792 of yacc.c */ +#line 8295 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_POLICY; - n->relation = (yyvsp[-3].range); - n->subname = (yyvsp[-5].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->subname = (yyvsp[(3) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33253 "gram.c" /* yacc.c:1646 */ break; - case 1149: -#line 7739 "gram.y" /* yacc.c:1646 */ + case 1238: +/* Line 1792 of yacc.c */ +#line 8305 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_POLICY; - n->relation = (yyvsp[-3].range); - n->subname = (yyvsp[-5].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(7) - (10)].range); + n->subname = (yyvsp[(5) - (10)].str); + n->newname = (yyvsp[(10) - (10)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33267 "gram.c" /* yacc.c:1646 */ break; - case 1150: -#line 7749 "gram.y" /* yacc.c:1646 */ + case 1239: +/* Line 1792 of yacc.c */ +#line 8315 "gram.y" + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_PUBLICATION; + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newname = (yyvsp[(6) - (6)].str); + n->missing_ok = false; + (yyval.node) = (Node *)n; + } + break; + + case 1240: +/* Line 1792 of yacc.c */ +#line 8324 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SCHEMA; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33280 "gram.c" /* yacc.c:1646 */ break; - case 1151: -#line 7758 "gram.y" /* yacc.c:1646 */ + case 1241: +/* Line 1792 of yacc.c */ +#line 8333 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_SERVER; - n->object = list_make1(makeString((yyvsp[-3].str))); - n->newname = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33293 "gram.c" /* yacc.c:1646 */ break; - case 1152: -#line 7767 "gram.y" /* yacc.c:1646 */ + case 1242: +/* Line 1792 of yacc.c */ +#line 8342 "gram.y" + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_SUBSCRIPTION; + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newname = (yyvsp[(6) - (6)].str); + n->missing_ok = false; + (yyval.node) = (Node *)n; + } + break; + + case 1243: +/* Line 1792 of yacc.c */ +#line 8351 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33307 "gram.c" /* yacc.c:1646 */ break; - case 1153: -#line 7777 "gram.y" /* yacc.c:1646 */ + case 1244: +/* Line 1792 of yacc.c */ +#line 8361 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33321 "gram.c" /* yacc.c:1646 */ break; - case 1154: -#line 7787 "gram.y" /* yacc.c:1646 */ + case 1245: +/* Line 1792 of yacc.c */ +#line 8371 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SEQUENCE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33335 "gram.c" /* yacc.c:1646 */ break; - case 1155: -#line 7797 "gram.y" /* yacc.c:1646 */ + case 1246: +/* Line 1792 of yacc.c */ +#line 8381 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SEQUENCE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33349 "gram.c" /* yacc.c:1646 */ break; - case 1156: -#line 7807 "gram.y" /* yacc.c:1646 */ + case 1247: +/* Line 1792 of yacc.c */ +#line 8391 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_VIEW; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33363 "gram.c" /* yacc.c:1646 */ break; - case 1157: -#line 7817 "gram.y" /* yacc.c:1646 */ + case 1248: +/* Line 1792 of yacc.c */ +#line 8401 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_VIEW; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33377 "gram.c" /* yacc.c:1646 */ break; - case 1158: -#line 7827 "gram.y" /* yacc.c:1646 */ + case 1249: +/* Line 1792 of yacc.c */ +#line 8411 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_MATVIEW; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(4) - (7)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33391 "gram.c" /* yacc.c:1646 */ break; - case 1159: -#line 7837 "gram.y" /* yacc.c:1646 */ + case 1250: +/* Line 1792 of yacc.c */ +#line 8421 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_MATVIEW; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(6) - (9)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33405 "gram.c" /* yacc.c:1646 */ break; - case 1160: -#line 7847 "gram.y" /* yacc.c:1646 */ + case 1251: +/* Line 1792 of yacc.c */ +#line 8431 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_INDEX; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33419 "gram.c" /* yacc.c:1646 */ break; - case 1161: -#line 7857 "gram.y" /* yacc.c:1646 */ + case 1252: +/* Line 1792 of yacc.c */ +#line 8441 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_INDEX; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33433 "gram.c" /* yacc.c:1646 */ break; - case 1162: -#line 7867 "gram.y" /* yacc.c:1646 */ + case 1253: +/* Line 1792 of yacc.c */ +#line 8451 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(4) - (7)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33447 "gram.c" /* yacc.c:1646 */ break; - case 1163: -#line 7877 "gram.y" /* yacc.c:1646 */ + case 1254: +/* Line 1792 of yacc.c */ +#line 8461 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(6) - (9)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33461 "gram.c" /* yacc.c:1646 */ break; - case 1164: -#line 7887 "gram.y" /* yacc.c:1646 */ + case 1255: +/* Line 1792 of yacc.c */ +#line 8471 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_TABLE; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(3) - (8)].range); + n->subname = (yyvsp[(6) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33476 "gram.c" /* yacc.c:1646 */ break; - case 1165: -#line 7898 "gram.y" /* yacc.c:1646 */ + case 1256: +/* Line 1792 of yacc.c */ +#line 8482 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_TABLE; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (10)].range); + n->subname = (yyvsp[(8) - (10)].str); + n->newname = (yyvsp[(10) - (10)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33491 "gram.c" /* yacc.c:1646 */ break; - case 1166: -#line 7909 "gram.y" /* yacc.c:1646 */ + case 1257: +/* Line 1792 of yacc.c */ +#line 8493 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_MATVIEW; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(4) - (9)].range); + n->subname = (yyvsp[(7) - (9)].str); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33506 "gram.c" /* yacc.c:1646 */ break; - case 1167: -#line 7920 "gram.y" /* yacc.c:1646 */ + case 1258: +/* Line 1792 of yacc.c */ +#line 8504 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_MATVIEW; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(6) - (11)].range); + n->subname = (yyvsp[(9) - (11)].str); + n->newname = (yyvsp[(11) - (11)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33521 "gram.c" /* yacc.c:1646 */ break; - case 1168: -#line 7931 "gram.y" /* yacc.c:1646 */ + case 1259: +/* Line 1792 of yacc.c */ +#line 8515 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABCONSTRAINT; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(3) - (8)].range); + n->subname = (yyvsp[(6) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33535 "gram.c" /* yacc.c:1646 */ break; - case 1169: -#line 7941 "gram.y" /* yacc.c:1646 */ + case 1260: +/* Line 1792 of yacc.c */ +#line 8525 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABCONSTRAINT; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (10)].range); + n->subname = (yyvsp[(8) - (10)].str); + n->newname = (yyvsp[(10) - (10)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33549 "gram.c" /* yacc.c:1646 */ break; - case 1170: -#line 7951 "gram.y" /* yacc.c:1646 */ + case 1261: +/* Line 1792 of yacc.c */ +#line 8535 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(4) - (9)].range); + n->subname = (yyvsp[(7) - (9)].str); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33564 "gram.c" /* yacc.c:1646 */ break; - case 1171: -#line 7962 "gram.y" /* yacc.c:1646 */ + case 1262: +/* Line 1792 of yacc.c */ +#line 8546 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(6) - (11)].range); + n->subname = (yyvsp[(9) - (11)].str); + n->newname = (yyvsp[(11) - (11)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33579 "gram.c" /* yacc.c:1646 */ break; - case 1172: -#line 7973 "gram.y" /* yacc.c:1646 */ + case 1263: +/* Line 1792 of yacc.c */ +#line 8557 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_RULE; - n->relation = (yyvsp[-3].range); - n->subname = (yyvsp[-5].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->subname = (yyvsp[(3) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33593 "gram.c" /* yacc.c:1646 */ break; - case 1173: -#line 7983 "gram.y" /* yacc.c:1646 */ + case 1264: +/* Line 1792 of yacc.c */ +#line 8567 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TRIGGER; - n->relation = (yyvsp[-3].range); - n->subname = (yyvsp[-5].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->subname = (yyvsp[(3) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33607 "gram.c" /* yacc.c:1646 */ break; - case 1174: -#line 7993 "gram.y" /* yacc.c:1646 */ + case 1265: +/* Line 1792 of yacc.c */ +#line 8577 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_EVENT_TRIGGER; - n->object = list_make1(makeString((yyvsp[-3].str))); - n->newname = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); + n->newname = (yyvsp[(7) - (7)].str); (yyval.node) = (Node *)n; } -#line 33619 "gram.c" /* yacc.c:1646 */ break; - case 1175: -#line 8001 "gram.y" /* yacc.c:1646 */ + case 1266: +/* Line 1792 of yacc.c */ +#line 8585 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33632 "gram.c" /* yacc.c:1646 */ break; - case 1176: -#line 8010 "gram.y" /* yacc.c:1646 */ + case 1267: +/* Line 1792 of yacc.c */ +#line 8594 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33645 "gram.c" /* yacc.c:1646 */ break; - case 1177: -#line 8019 "gram.y" /* yacc.c:1646 */ + case 1268: +/* Line 1792 of yacc.c */ +#line 8603 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLESPACE; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33658 "gram.c" /* yacc.c:1646 */ break; - case 1178: -#line 8028 "gram.y" /* yacc.c:1646 */ + case 1269: +/* Line 1792 of yacc.c */ +#line 8612 "gram.y" + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_STATISTIC_EXT; + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newname = (yyvsp[(6) - (6)].str); + n->missing_ok = false; + (yyval.node) = (Node *)n; + } + break; + + case 1270: +/* Line 1792 of yacc.c */ +#line 8621 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSPARSER; - n->object = (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33671 "gram.c" /* yacc.c:1646 */ break; - case 1179: -#line 8037 "gram.y" /* yacc.c:1646 */ + case 1271: +/* Line 1792 of yacc.c */ +#line 8630 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSDICTIONARY; - n->object = (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33684 "gram.c" /* yacc.c:1646 */ break; - case 1180: -#line 8046 "gram.y" /* yacc.c:1646 */ + case 1272: +/* Line 1792 of yacc.c */ +#line 8639 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSTEMPLATE; - n->object = (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33697 "gram.c" /* yacc.c:1646 */ break; - case 1181: -#line 8055 "gram.y" /* yacc.c:1646 */ + case 1273: +/* Line 1792 of yacc.c */ +#line 8648 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSCONFIGURATION; - n->object = (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33710 "gram.c" /* yacc.c:1646 */ break; - case 1182: -#line 8064 "gram.y" /* yacc.c:1646 */ + case 1274: +/* Line 1792 of yacc.c */ +#line 8657 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TYPE; - n->object = (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33723 "gram.c" /* yacc.c:1646 */ break; - case 1183: -#line 8073 "gram.y" /* yacc.c:1646 */ + case 1275: +/* Line 1792 of yacc.c */ +#line 8666 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ATTRIBUTE; n->relationType = OBJECT_TYPE; - n->relation = makeRangeVarFromAnyName((yyvsp[-6].list), (yylsp[-6]), yyscanner); - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->relation = makeRangeVarFromAnyName((yyvsp[(3) - (9)].list), (yylsp[(3) - (9)]), yyscanner); + n->subname = (yyvsp[(6) - (9)].str); + n->newname = (yyvsp[(8) - (9)].str); + n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33739 "gram.c" /* yacc.c:1646 */ break; - case 1184: -#line 8086 "gram.y" /* yacc.c:1646 */ + case 1276: +/* Line 1792 of yacc.c */ +#line 8679 "gram.y" { (yyval.ival) = COLUMN; } -#line 33745 "gram.c" /* yacc.c:1646 */ break; - case 1185: -#line 8087 "gram.y" /* yacc.c:1646 */ + case 1277: +/* Line 1792 of yacc.c */ +#line 8680 "gram.y" { (yyval.ival) = 0; } -#line 33751 "gram.c" /* yacc.c:1646 */ break; - case 1186: -#line 8090 "gram.y" /* yacc.c:1646 */ + case 1278: +/* Line 1792 of yacc.c */ +#line 8683 "gram.y" { (yyval.ival) = 1; } -#line 33757 "gram.c" /* yacc.c:1646 */ break; - case 1187: -#line 8091 "gram.y" /* yacc.c:1646 */ + case 1279: +/* Line 1792 of yacc.c */ +#line 8684 "gram.y" { (yyval.ival) = 0; } -#line 33763 "gram.c" /* yacc.c:1646 */ break; - case 1188: -#line 8102 "gram.y" /* yacc.c:1646 */ + case 1280: +/* Line 1792 of yacc.c */ +#line 8695 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_FUNCTION; - n->relation = NULL; - n->objname = (yyvsp[-4].funwithargs)->funcname; - n->objargs = (yyvsp[-4].funwithargs)->funcargs; - n->extname = makeString((yyvsp[0].str)); + n->object = (Node *) (yyvsp[(3) - (7)].objwithargs); + n->extname = makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; } -#line 33777 "gram.c" /* yacc.c:1646 */ break; - case 1189: -#line 8112 "gram.y" /* yacc.c:1646 */ + case 1281: +/* Line 1792 of yacc.c */ +#line 8703 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_TRIGGER; - n->relation = (yyvsp[-4].range); - n->objname = list_make1(makeString((yyvsp[-6].str))); - n->objargs = NIL; - n->extname = makeString((yyvsp[0].str)); + n->relation = (yyvsp[(5) - (9)].range); + n->object = (Node *) list_make1(makeString((yyvsp[(3) - (9)].str))); + n->extname = makeString((yyvsp[(9) - (9)].str)); (yyval.node) = (Node *)n; } -#line 33791 "gram.c" /* yacc.c:1646 */ break; - case 1190: -#line 8122 "gram.y" /* yacc.c:1646 */ + case 1282: +/* Line 1792 of yacc.c */ +#line 8712 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_MATVIEW; - n->relation = (yyvsp[-4].range); - n->objname = NIL; - n->objargs = NIL; - n->extname = makeString((yyvsp[0].str)); + n->relation = (yyvsp[(4) - (8)].range); + n->extname = makeString((yyvsp[(8) - (8)].str)); (yyval.node) = (Node *)n; } -#line 33805 "gram.c" /* yacc.c:1646 */ break; - case 1191: -#line 8132 "gram.y" /* yacc.c:1646 */ + case 1283: +/* Line 1792 of yacc.c */ +#line 8720 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_INDEX; - n->relation = (yyvsp[-4].range); - n->objname = NIL; - n->objargs = NIL; - n->extname = makeString((yyvsp[0].str)); + n->relation = (yyvsp[(3) - (7)].range); + n->extname = makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; } -#line 33819 "gram.c" /* yacc.c:1646 */ break; - case 1192: -#line 8151 "gram.y" /* yacc.c:1646 */ + case 1284: +/* Line 1792 of yacc.c */ +#line 8737 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_AGGREGATE; - n->object = (yyvsp[-4].list); - n->objarg = extractAggrArgTypes((yyvsp[-3].list)); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33833 "gram.c" /* yacc.c:1646 */ break; - case 1193: -#line 8161 "gram.y" /* yacc.c:1646 */ + case 1285: +/* Line 1792 of yacc.c */ +#line 8746 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_COLLATION; - n->object = (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33846 "gram.c" /* yacc.c:1646 */ break; - case 1194: -#line 8170 "gram.y" /* yacc.c:1646 */ + case 1286: +/* Line 1792 of yacc.c */ +#line 8755 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_CONVERSION; - n->object = (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33859 "gram.c" /* yacc.c:1646 */ break; - case 1195: -#line 8179 "gram.y" /* yacc.c:1646 */ + case 1287: +/* Line 1792 of yacc.c */ +#line 8764 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_DOMAIN; - n->object = (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33872 "gram.c" /* yacc.c:1646 */ break; - case 1196: -#line 8188 "gram.y" /* yacc.c:1646 */ + case 1288: +/* Line 1792 of yacc.c */ +#line 8773 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_EXTENSION; - n->object = (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33885 "gram.c" /* yacc.c:1646 */ break; - case 1197: -#line 8197 "gram.y" /* yacc.c:1646 */ + case 1289: +/* Line 1792 of yacc.c */ +#line 8782 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FUNCTION; - n->object = (yyvsp[-3].funwithargs)->funcname; - n->objarg = (yyvsp[-3].funwithargs)->funcargs; - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33899 "gram.c" /* yacc.c:1646 */ break; - case 1198: -#line 8207 "gram.y" /* yacc.c:1646 */ + case 1290: +/* Line 1792 of yacc.c */ +#line 8791 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPERATOR; - n->object = (yyvsp[-4].list); - n->objarg = (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33913 "gram.c" /* yacc.c:1646 */ break; - case 1199: -#line 8217 "gram.y" /* yacc.c:1646 */ + case 1291: +/* Line 1792 of yacc.c */ +#line 8800 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPCLASS; - n->object = lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newschema = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33926 "gram.c" /* yacc.c:1646 */ break; - case 1200: -#line 8226 "gram.y" /* yacc.c:1646 */ + case 1292: +/* Line 1792 of yacc.c */ +#line 8809 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPFAMILY; - n->object = lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newschema = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33939 "gram.c" /* yacc.c:1646 */ break; - case 1201: -#line 8235 "gram.y" /* yacc.c:1646 */ + case 1293: +/* Line 1792 of yacc.c */ +#line 8818 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TABLE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(3) - (6)].range); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33952 "gram.c" /* yacc.c:1646 */ break; - case 1202: -#line 8244 "gram.y" /* yacc.c:1646 */ + case 1294: +/* Line 1792 of yacc.c */ +#line 8827 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TABLE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 33965 "gram.c" /* yacc.c:1646 */ break; - case 1203: -#line 8253 "gram.y" /* yacc.c:1646 */ + case 1295: +/* Line 1792 of yacc.c */ +#line 8836 "gram.y" + { + AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); + n->objectType = OBJECT_STATISTIC_EXT; + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newschema = (yyvsp[(6) - (6)].str); + n->missing_ok = false; + (yyval.node) = (Node *)n; + } + break; + + case 1296: +/* Line 1792 of yacc.c */ +#line 8845 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSPARSER; - n->object = (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33978 "gram.c" /* yacc.c:1646 */ break; - case 1204: -#line 8262 "gram.y" /* yacc.c:1646 */ + case 1297: +/* Line 1792 of yacc.c */ +#line 8854 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSDICTIONARY; - n->object = (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 33991 "gram.c" /* yacc.c:1646 */ break; - case 1205: -#line 8271 "gram.y" /* yacc.c:1646 */ + case 1298: +/* Line 1792 of yacc.c */ +#line 8863 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSTEMPLATE; - n->object = (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 34004 "gram.c" /* yacc.c:1646 */ break; - case 1206: -#line 8280 "gram.y" /* yacc.c:1646 */ + case 1299: +/* Line 1792 of yacc.c */ +#line 8872 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSCONFIGURATION; - n->object = (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 34017 "gram.c" /* yacc.c:1646 */ break; - case 1207: -#line 8289 "gram.y" /* yacc.c:1646 */ + case 1300: +/* Line 1792 of yacc.c */ +#line 8881 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_SEQUENCE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(3) - (6)].range); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 34030 "gram.c" /* yacc.c:1646 */ break; - case 1208: -#line 8298 "gram.y" /* yacc.c:1646 */ + case 1301: +/* Line 1792 of yacc.c */ +#line 8890 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_SEQUENCE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 34043 "gram.c" /* yacc.c:1646 */ break; - case 1209: -#line 8307 "gram.y" /* yacc.c:1646 */ + case 1302: +/* Line 1792 of yacc.c */ +#line 8899 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_VIEW; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(3) - (6)].range); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 34056 "gram.c" /* yacc.c:1646 */ break; - case 1210: -#line 8316 "gram.y" /* yacc.c:1646 */ + case 1303: +/* Line 1792 of yacc.c */ +#line 8908 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_VIEW; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 34069 "gram.c" /* yacc.c:1646 */ break; - case 1211: -#line 8325 "gram.y" /* yacc.c:1646 */ + case 1304: +/* Line 1792 of yacc.c */ +#line 8917 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_MATVIEW; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(4) - (7)].range); + n->newschema = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 34082 "gram.c" /* yacc.c:1646 */ break; - case 1212: -#line 8334 "gram.y" /* yacc.c:1646 */ + case 1305: +/* Line 1792 of yacc.c */ +#line 8926 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_MATVIEW; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(6) - (9)].range); + n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 34095 "gram.c" /* yacc.c:1646 */ break; - case 1213: -#line 8343 "gram.y" /* yacc.c:1646 */ + case 1306: +/* Line 1792 of yacc.c */ +#line 8935 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(4) - (7)].range); + n->newschema = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 34108 "gram.c" /* yacc.c:1646 */ break; - case 1214: -#line 8352 "gram.y" /* yacc.c:1646 */ + case 1307: +/* Line 1792 of yacc.c */ +#line 8944 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(6) - (9)].range); + n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 34121 "gram.c" /* yacc.c:1646 */ break; - case 1215: -#line 8361 "gram.y" /* yacc.c:1646 */ + case 1308: +/* Line 1792 of yacc.c */ +#line 8953 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TYPE; - n->object = (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 34134 "gram.c" /* yacc.c:1646 */ break; - case 1216: -#line 8379 "gram.y" /* yacc.c:1646 */ + case 1309: +/* Line 1792 of yacc.c */ +#line 8971 "gram.y" { AlterOperatorStmt *n = makeNode(AlterOperatorStmt); - n->opername = (yyvsp[-5].list); - n->operargs = (yyvsp[-4].list); - n->options = (yyvsp[-1].list); + n->opername = (yyvsp[(3) - (7)].objwithargs); + n->options = (yyvsp[(6) - (7)].list); (yyval.node) = (Node *)n; } -#line 34146 "gram.c" /* yacc.c:1646 */ break; - case 1217: -#line 8388 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 34152 "gram.c" /* yacc.c:1646 */ + case 1310: +/* Line 1792 of yacc.c */ +#line 8979 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; - case 1218: -#line 8389 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 34158 "gram.c" /* yacc.c:1646 */ + case 1311: +/* Line 1792 of yacc.c */ +#line 8980 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } break; - case 1219: -#line 8393 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem((yyvsp[-2].str), NULL); } -#line 34164 "gram.c" /* yacc.c:1646 */ + case 1312: +/* Line 1792 of yacc.c */ +#line 8984 "gram.y" + { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); } break; - case 1220: -#line 8395 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *) (yyvsp[0].node)); } -#line 34170 "gram.c" /* yacc.c:1646 */ + case 1313: +/* Line 1792 of yacc.c */ +#line 8986 "gram.y" + { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); } break; - case 1221: -#line 8405 "gram.y" /* yacc.c:1646 */ + case 1314: +/* Line 1792 of yacc.c */ +#line 8991 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].typnam); } + break; + + case 1315: +/* Line 1792 of yacc.c */ +#line 8992 "gram.y" + { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); } + break; + + case 1316: +/* Line 1792 of yacc.c */ +#line 8993 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].list); } + break; + + case 1317: +/* Line 1792 of yacc.c */ +#line 8994 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].value); } + break; + + case 1318: +/* Line 1792 of yacc.c */ +#line 8995 "gram.y" + { (yyval.node) = (Node *)makeString((yyvsp[(1) - (1)].str)); } + break; + + case 1319: +/* Line 1792 of yacc.c */ +#line 9005 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_AGGREGATE; - n->object = (yyvsp[-4].list); - n->objarg = extractAggrArgTypes((yyvsp[-3].list)); - n->newowner = (yyvsp[0].node); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 34183 "gram.c" /* yacc.c:1646 */ break; - case 1222: -#line 8414 "gram.y" /* yacc.c:1646 */ + case 1320: +/* Line 1792 of yacc.c */ +#line 9013 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_COLLATION; - n->object = (yyvsp[-3].list); - n->newowner = (yyvsp[0].node); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 34195 "gram.c" /* yacc.c:1646 */ break; - case 1223: -#line 8422 "gram.y" /* yacc.c:1646 */ + case 1321: +/* Line 1792 of yacc.c */ +#line 9021 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_CONVERSION; - n->object = (yyvsp[-3].list); - n->newowner = (yyvsp[0].node); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 34207 "gram.c" /* yacc.c:1646 */ break; - case 1224: -#line 8430 "gram.y" /* yacc.c:1646 */ + case 1322: +/* Line 1792 of yacc.c */ +#line 9029 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DATABASE; - n->object = list_make1(makeString((yyvsp[-3].str))); - n->newowner = (yyvsp[0].node); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 34219 "gram.c" /* yacc.c:1646 */ break; - case 1225: -#line 8438 "gram.y" /* yacc.c:1646 */ + case 1323: +/* Line 1792 of yacc.c */ +#line 9037 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DOMAIN; - n->object = (yyvsp[-3].list); - n->newowner = (yyvsp[0].node); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 34231 "gram.c" /* yacc.c:1646 */ break; - case 1226: -#line 8446 "gram.y" /* yacc.c:1646 */ + case 1324: +/* Line 1792 of yacc.c */ +#line 9045 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FUNCTION; - n->object = (yyvsp[-3].funwithargs)->funcname; - n->objarg = (yyvsp[-3].funwithargs)->funcargs; - n->newowner = (yyvsp[0].node); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 34244 "gram.c" /* yacc.c:1646 */ break; - case 1227: -#line 8455 "gram.y" /* yacc.c:1646 */ + case 1325: +/* Line 1792 of yacc.c */ +#line 9053 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LANGUAGE; - n->object = list_make1(makeString((yyvsp[-3].str))); - n->newowner = (yyvsp[0].node); + n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); + n->newowner = (yyvsp[(7) - (7)].rolespec); (yyval.node) = (Node *)n; } -#line 34256 "gram.c" /* yacc.c:1646 */ break; - case 1228: -#line 8463 "gram.y" /* yacc.c:1646 */ + case 1326: +/* Line 1792 of yacc.c */ +#line 9061 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LARGEOBJECT; - n->object = list_make1((yyvsp[-3].value)); - n->newowner = (yyvsp[0].node); + n->object = (Node *) (yyvsp[(4) - (7)].value); + n->newowner = (yyvsp[(7) - (7)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1327: +/* Line 1792 of yacc.c */ +#line 9069 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_OPERATOR; + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newowner = (yyvsp[(6) - (6)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1328: +/* Line 1792 of yacc.c */ +#line 9077 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_OPCLASS; + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newowner = (yyvsp[(9) - (9)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1329: +/* Line 1792 of yacc.c */ +#line 9085 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_OPFAMILY; + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newowner = (yyvsp[(9) - (9)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1330: +/* Line 1792 of yacc.c */ +#line 9093 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_SCHEMA; + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1331: +/* Line 1792 of yacc.c */ +#line 9101 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_TYPE; + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newowner = (yyvsp[(6) - (6)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1332: +/* Line 1792 of yacc.c */ +#line 9109 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_TABLESPACE; + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1333: +/* Line 1792 of yacc.c */ +#line 9117 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_STATISTIC_EXT; + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newowner = (yyvsp[(6) - (6)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1334: +/* Line 1792 of yacc.c */ +#line 9125 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_TSDICTIONARY; + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newowner = (yyvsp[(8) - (8)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1335: +/* Line 1792 of yacc.c */ +#line 9133 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_TSCONFIGURATION; + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newowner = (yyvsp[(8) - (8)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1336: +/* Line 1792 of yacc.c */ +#line 9141 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_FDW; + n->object = (Node *) makeString((yyvsp[(5) - (8)].str)); + n->newowner = (yyvsp[(8) - (8)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1337: +/* Line 1792 of yacc.c */ +#line 9149 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_FOREIGN_SERVER; + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1338: +/* Line 1792 of yacc.c */ +#line 9157 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_EVENT_TRIGGER; + n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); + n->newowner = (yyvsp[(7) - (7)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1339: +/* Line 1792 of yacc.c */ +#line 9165 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_PUBLICATION; + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1340: +/* Line 1792 of yacc.c */ +#line 9173 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_SUBSCRIPTION; + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); + (yyval.node) = (Node *)n; + } + break; + + case 1341: +/* Line 1792 of yacc.c */ +#line 9191 "gram.y" + { + CreatePublicationStmt *n = makeNode(CreatePublicationStmt); + n->pubname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); + if ((yyvsp[(4) - (5)].node) != NULL) + { + /* FOR TABLE */ + if (IsA((yyvsp[(4) - (5)].node), List)) + n->tables = (List *)(yyvsp[(4) - (5)].node); + /* FOR ALL TABLES */ + else + n->for_all_tables = TRUE; + } + (yyval.node) = (Node *)n; + } + break; + + case 1342: +/* Line 1792 of yacc.c */ +#line 9209 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } + break; + + case 1343: +/* Line 1792 of yacc.c */ +#line 9210 "gram.y" + { (yyval.node) = NULL; } + break; + + case 1344: +/* Line 1792 of yacc.c */ +#line 9215 "gram.y" + { + (yyval.node) = (Node *) (yyvsp[(3) - (3)].list); + } + break; + + case 1345: +/* Line 1792 of yacc.c */ +#line 9219 "gram.y" + { + (yyval.node) = (Node *) makeInteger(TRUE); + } + break; + + case 1346: +/* Line 1792 of yacc.c */ +#line 9239 "gram.y" + { + AlterPublicationStmt *n = makeNode(AlterPublicationStmt); + n->pubname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); + (yyval.node) = (Node *)n; + } + break; + + case 1347: +/* Line 1792 of yacc.c */ +#line 9246 "gram.y" + { + AlterPublicationStmt *n = makeNode(AlterPublicationStmt); + n->pubname = (yyvsp[(3) - (6)].str); + n->tables = (yyvsp[(6) - (6)].list); + n->tableAction = DEFELEM_ADD; + (yyval.node) = (Node *)n; + } + break; + + case 1348: +/* Line 1792 of yacc.c */ +#line 9254 "gram.y" + { + AlterPublicationStmt *n = makeNode(AlterPublicationStmt); + n->pubname = (yyvsp[(3) - (6)].str); + n->tables = (yyvsp[(6) - (6)].list); + n->tableAction = DEFELEM_SET; + (yyval.node) = (Node *)n; + } + break; + + case 1349: +/* Line 1792 of yacc.c */ +#line 9262 "gram.y" + { + AlterPublicationStmt *n = makeNode(AlterPublicationStmt); + n->pubname = (yyvsp[(3) - (6)].str); + n->tables = (yyvsp[(6) - (6)].list); + n->tableAction = DEFELEM_DROP; (yyval.node) = (Node *)n; } -#line 34268 "gram.c" /* yacc.c:1646 */ break; - case 1229: -#line 8471 "gram.y" /* yacc.c:1646 */ + case 1350: +/* Line 1792 of yacc.c */ +#line 9279 "gram.y" { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_OPERATOR; - n->object = (yyvsp[-4].list); - n->objarg = (yyvsp[-3].list); - n->newowner = (yyvsp[0].node); + CreateSubscriptionStmt *n = + makeNode(CreateSubscriptionStmt); + n->subname = (yyvsp[(3) - (8)].str); + n->conninfo = (yyvsp[(5) - (8)].str); + n->publication = (yyvsp[(7) - (8)].list); + n->options = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; } -#line 34281 "gram.c" /* yacc.c:1646 */ break; - case 1230: -#line 8480 "gram.y" /* yacc.c:1646 */ + case 1351: +/* Line 1792 of yacc.c */ +#line 9292 "gram.y" { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_OPCLASS; - n->object = lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newowner = (yyvsp[0].node); - (yyval.node) = (Node *)n; + (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); } -#line 34293 "gram.c" /* yacc.c:1646 */ break; - case 1231: -#line 8488 "gram.y" /* yacc.c:1646 */ + case 1352: +/* Line 1792 of yacc.c */ +#line 9296 "gram.y" { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_OPFAMILY; - n->object = lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newowner = (yyvsp[0].node); - (yyval.node) = (Node *)n; + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); } -#line 34305 "gram.c" /* yacc.c:1646 */ break; - case 1232: -#line 8496 "gram.y" /* yacc.c:1646 */ + case 1353: +/* Line 1792 of yacc.c */ +#line 9302 "gram.y" + { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); } + break; + + case 1354: +/* Line 1792 of yacc.c */ +#line 9312 "gram.y" { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_SCHEMA; - n->object = list_make1(makeString((yyvsp[-3].str))); - n->newowner = (yyvsp[0].node); + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_OPTIONS; + n->subname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 34317 "gram.c" /* yacc.c:1646 */ break; - case 1233: -#line 8504 "gram.y" /* yacc.c:1646 */ + case 1355: +/* Line 1792 of yacc.c */ +#line 9321 "gram.y" { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_TYPE; - n->object = (yyvsp[-3].list); - n->newowner = (yyvsp[0].node); + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_CONNECTION; + n->subname = (yyvsp[(3) - (5)].str); + n->conninfo = (yyvsp[(5) - (5)].str); (yyval.node) = (Node *)n; } -#line 34329 "gram.c" /* yacc.c:1646 */ break; - case 1234: -#line 8512 "gram.y" /* yacc.c:1646 */ + case 1356: +/* Line 1792 of yacc.c */ +#line 9330 "gram.y" { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_TABLESPACE; - n->object = list_make1(makeString((yyvsp[-3].str))); - n->newowner = (yyvsp[0].node); + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_REFRESH; + n->subname = (yyvsp[(3) - (6)].str); + n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 34341 "gram.c" /* yacc.c:1646 */ break; - case 1235: -#line 8520 "gram.y" /* yacc.c:1646 */ + case 1357: +/* Line 1792 of yacc.c */ +#line 9339 "gram.y" { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_TSDICTIONARY; - n->object = (yyvsp[-3].list); - n->newowner = (yyvsp[0].node); + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_PUBLICATION; + n->subname = (yyvsp[(3) - (7)].str); + n->publication = (yyvsp[(6) - (7)].list); + n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *)n; } -#line 34353 "gram.c" /* yacc.c:1646 */ break; - case 1236: -#line 8528 "gram.y" /* yacc.c:1646 */ + case 1358: +/* Line 1792 of yacc.c */ +#line 9349 "gram.y" { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_TSCONFIGURATION; - n->object = (yyvsp[-3].list); - n->newowner = (yyvsp[0].node); + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_ENABLED; + n->subname = (yyvsp[(3) - (4)].str); + n->options = list_make1(makeDefElem("enabled", + (Node *)makeInteger(TRUE), (yylsp[(1) - (4)]))); (yyval.node) = (Node *)n; } -#line 34365 "gram.c" /* yacc.c:1646 */ break; - case 1237: -#line 8536 "gram.y" /* yacc.c:1646 */ + case 1359: +/* Line 1792 of yacc.c */ +#line 9359 "gram.y" { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_FDW; - n->object = list_make1(makeString((yyvsp[-3].str))); - n->newowner = (yyvsp[0].node); + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_ENABLED; + n->subname = (yyvsp[(3) - (4)].str); + n->options = list_make1(makeDefElem("enabled", + (Node *)makeInteger(FALSE), (yylsp[(1) - (4)]))); (yyval.node) = (Node *)n; } -#line 34377 "gram.c" /* yacc.c:1646 */ break; - case 1238: -#line 8544 "gram.y" /* yacc.c:1646 */ + case 1360: +/* Line 1792 of yacc.c */ +#line 9377 "gram.y" { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_FOREIGN_SERVER; - n->object = list_make1(makeString((yyvsp[-3].str))); - n->newowner = (yyvsp[0].node); - (yyval.node) = (Node *)n; + DropSubscriptionStmt *n = makeNode(DropSubscriptionStmt); + n->subname = (yyvsp[(3) - (4)].str); + n->missing_ok = false; + n->behavior = (yyvsp[(4) - (4)].dbehavior); + (yyval.node) = (Node *) n; } -#line 34389 "gram.c" /* yacc.c:1646 */ break; - case 1239: -#line 8552 "gram.y" /* yacc.c:1646 */ + case 1361: +/* Line 1792 of yacc.c */ +#line 9385 "gram.y" { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_EVENT_TRIGGER; - n->object = list_make1(makeString((yyvsp[-3].str))); - n->newowner = (yyvsp[0].node); - (yyval.node) = (Node *)n; + DropSubscriptionStmt *n = makeNode(DropSubscriptionStmt); + n->subname = (yyvsp[(5) - (6)].str); + n->missing_ok = true; + n->behavior = (yyvsp[(6) - (6)].dbehavior); + (yyval.node) = (Node *) n; } -#line 34401 "gram.c" /* yacc.c:1646 */ break; - case 1240: -#line 8571 "gram.y" /* yacc.c:1646 */ + case 1362: +/* Line 1792 of yacc.c */ +#line 9403 "gram.y" { RuleStmt *n = makeNode(RuleStmt); - n->replace = (yyvsp[-11].boolean); - n->relation = (yyvsp[-4].range); - n->rulename = (yyvsp[-9].str); - n->whereClause = (yyvsp[-3].node); - n->event = (yyvsp[-6].ival); - n->instead = (yyvsp[-1].boolean); - n->actions = (yyvsp[0].list); + n->replace = (yyvsp[(2) - (13)].boolean); + n->relation = (yyvsp[(9) - (13)].range); + n->rulename = (yyvsp[(4) - (13)].str); + n->whereClause = (yyvsp[(10) - (13)].node); + n->event = (yyvsp[(7) - (13)].ival); + n->instead = (yyvsp[(12) - (13)].boolean); + n->actions = (yyvsp[(13) - (13)].list); (yyval.node) = (Node *)n; } -#line 34417 "gram.c" /* yacc.c:1646 */ break; - case 1241: -#line 8585 "gram.y" /* yacc.c:1646 */ + case 1363: +/* Line 1792 of yacc.c */ +#line 9417 "gram.y" { (yyval.list) = NIL; } -#line 34423 "gram.c" /* yacc.c:1646 */ break; - case 1242: -#line 8586 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 34429 "gram.c" /* yacc.c:1646 */ + case 1364: +/* Line 1792 of yacc.c */ +#line 9418 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 1243: -#line 8587 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 34435 "gram.c" /* yacc.c:1646 */ + case 1365: +/* Line 1792 of yacc.c */ +#line 9419 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 1244: -#line 8593 "gram.y" /* yacc.c:1646 */ - { if ((yyvsp[0].node) != NULL) - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + case 1366: +/* Line 1792 of yacc.c */ +#line 9425 "gram.y" + { if ((yyvsp[(3) - (3)].node) != NULL) + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); else - (yyval.list) = (yyvsp[-2].list); + (yyval.list) = (yyvsp[(1) - (3)].list); } -#line 34445 "gram.c" /* yacc.c:1646 */ break; - case 1245: -#line 8599 "gram.y" /* yacc.c:1646 */ - { if ((yyvsp[0].node) != NULL) - (yyval.list) = list_make1((yyvsp[0].node)); + case 1367: +/* Line 1792 of yacc.c */ +#line 9431 "gram.y" + { if ((yyvsp[(1) - (1)].node) != NULL) + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); else (yyval.list) = NIL; } -#line 34455 "gram.c" /* yacc.c:1646 */ break; - case 1251: -#line 8615 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 34461 "gram.c" /* yacc.c:1646 */ + case 1373: +/* Line 1792 of yacc.c */ +#line 9447 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1252: -#line 8616 "gram.y" /* yacc.c:1646 */ + case 1374: +/* Line 1792 of yacc.c */ +#line 9448 "gram.y" { (yyval.node) = NULL; } -#line 34467 "gram.c" /* yacc.c:1646 */ break; - case 1253: -#line 8619 "gram.y" /* yacc.c:1646 */ + case 1375: +/* Line 1792 of yacc.c */ +#line 9451 "gram.y" { (yyval.ival) = CMD_SELECT; } -#line 34473 "gram.c" /* yacc.c:1646 */ break; - case 1254: -#line 8620 "gram.y" /* yacc.c:1646 */ + case 1376: +/* Line 1792 of yacc.c */ +#line 9452 "gram.y" { (yyval.ival) = CMD_UPDATE; } -#line 34479 "gram.c" /* yacc.c:1646 */ break; - case 1255: -#line 8621 "gram.y" /* yacc.c:1646 */ + case 1377: +/* Line 1792 of yacc.c */ +#line 9453 "gram.y" { (yyval.ival) = CMD_DELETE; } -#line 34485 "gram.c" /* yacc.c:1646 */ break; - case 1256: -#line 8622 "gram.y" /* yacc.c:1646 */ + case 1378: +/* Line 1792 of yacc.c */ +#line 9454 "gram.y" { (yyval.ival) = CMD_INSERT; } -#line 34491 "gram.c" /* yacc.c:1646 */ break; - case 1257: -#line 8626 "gram.y" /* yacc.c:1646 */ + case 1379: +/* Line 1792 of yacc.c */ +#line 9458 "gram.y" { (yyval.boolean) = TRUE; } -#line 34497 "gram.c" /* yacc.c:1646 */ break; - case 1258: -#line 8627 "gram.y" /* yacc.c:1646 */ + case 1380: +/* Line 1792 of yacc.c */ +#line 9459 "gram.y" { (yyval.boolean) = FALSE; } -#line 34503 "gram.c" /* yacc.c:1646 */ break; - case 1259: -#line 8628 "gram.y" /* yacc.c:1646 */ + case 1381: +/* Line 1792 of yacc.c */ +#line 9460 "gram.y" { (yyval.boolean) = FALSE; } -#line 34509 "gram.c" /* yacc.c:1646 */ - break; - - case 1260: -#line 8634 "gram.y" /* yacc.c:1646 */ - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_RULE; - n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); - n->missing_ok = false; - n->concurrent = false; - (yyval.node) = (Node *) n; - } -#line 34524 "gram.c" /* yacc.c:1646 */ - break; - - case 1261: -#line 8645 "gram.y" /* yacc.c:1646 */ - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_RULE; - n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); - n->arguments = NIL; - n->behavior = (yyvsp[0].dbehavior); - n->missing_ok = true; - n->concurrent = false; - (yyval.node) = (Node *) n; - } -#line 34539 "gram.c" /* yacc.c:1646 */ break; - case 1262: -#line 8667 "gram.y" /* yacc.c:1646 */ + case 1382: +/* Line 1792 of yacc.c */ +#line 9473 "gram.y" { NotifyStmt *n = makeNode(NotifyStmt); - n->conditionname = (yyvsp[-1].str); - n->payload = (yyvsp[0].str); + n->conditionname = (yyvsp[(2) - (3)].str); + n->payload = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 34550 "gram.c" /* yacc.c:1646 */ break; - case 1263: -#line 8676 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 34556 "gram.c" /* yacc.c:1646 */ + case 1383: +/* Line 1792 of yacc.c */ +#line 9482 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; - case 1264: -#line 8677 "gram.y" /* yacc.c:1646 */ + case 1384: +/* Line 1792 of yacc.c */ +#line 9483 "gram.y" { (yyval.str) = NULL; } -#line 34562 "gram.c" /* yacc.c:1646 */ break; - case 1265: -#line 8681 "gram.y" /* yacc.c:1646 */ + case 1385: +/* Line 1792 of yacc.c */ +#line 9487 "gram.y" { ListenStmt *n = makeNode(ListenStmt); - n->conditionname = (yyvsp[0].str); + n->conditionname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; } -#line 34572 "gram.c" /* yacc.c:1646 */ break; - case 1266: -#line 8690 "gram.y" /* yacc.c:1646 */ + case 1386: +/* Line 1792 of yacc.c */ +#line 9496 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); - n->conditionname = (yyvsp[0].str); + n->conditionname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; } -#line 34582 "gram.c" /* yacc.c:1646 */ break; - case 1267: -#line 8696 "gram.y" /* yacc.c:1646 */ + case 1387: +/* Line 1792 of yacc.c */ +#line 9502 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->conditionname = NULL; (yyval.node) = (Node *)n; } -#line 34592 "gram.c" /* yacc.c:1646 */ break; - case 1268: -#line 8715 "gram.y" /* yacc.c:1646 */ + case 1388: +/* Line 1792 of yacc.c */ +#line 9521 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; (yyval.node) = (Node *)n; } -#line 34603 "gram.c" /* yacc.c:1646 */ break; - case 1269: -#line 8722 "gram.y" /* yacc.c:1646 */ + case 1389: +/* Line 1792 of yacc.c */ +#line 9528 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_BEGIN; - n->options = (yyvsp[0].list); + n->options = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; } -#line 34614 "gram.c" /* yacc.c:1646 */ break; - case 1270: -#line 8729 "gram.y" /* yacc.c:1646 */ + case 1390: +/* Line 1792 of yacc.c */ +#line 9535 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_START; - n->options = (yyvsp[0].list); + n->options = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; } -#line 34625 "gram.c" /* yacc.c:1646 */ break; - case 1271: -#line 8736 "gram.y" /* yacc.c:1646 */ + case 1391: +/* Line 1792 of yacc.c */ +#line 9542 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; (yyval.node) = (Node *)n; } -#line 34636 "gram.c" /* yacc.c:1646 */ break; - case 1272: -#line 8743 "gram.y" /* yacc.c:1646 */ + case 1392: +/* Line 1792 of yacc.c */ +#line 9549 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; (yyval.node) = (Node *)n; } -#line 34647 "gram.c" /* yacc.c:1646 */ break; - case 1273: -#line 8750 "gram.y" /* yacc.c:1646 */ + case 1393: +/* Line 1792 of yacc.c */ +#line 9556 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; (yyval.node) = (Node *)n; } -#line 34658 "gram.c" /* yacc.c:1646 */ break; - case 1274: -#line 8757 "gram.y" /* yacc.c:1646 */ + case 1394: +/* Line 1792 of yacc.c */ +#line 9563 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_SAVEPOINT; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[0].str)))); + (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)]))); (yyval.node) = (Node *)n; } -#line 34670 "gram.c" /* yacc.c:1646 */ break; - case 1275: -#line 8765 "gram.y" /* yacc.c:1646 */ + case 1395: +/* Line 1792 of yacc.c */ +#line 9571 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[0].str)))); + (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)]))); (yyval.node) = (Node *)n; } -#line 34682 "gram.c" /* yacc.c:1646 */ break; - case 1276: -#line 8773 "gram.y" /* yacc.c:1646 */ + case 1396: +/* Line 1792 of yacc.c */ +#line 9579 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[0].str)))); + (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)]))); (yyval.node) = (Node *)n; } -#line 34694 "gram.c" /* yacc.c:1646 */ break; - case 1277: -#line 8781 "gram.y" /* yacc.c:1646 */ + case 1397: +/* Line 1792 of yacc.c */ +#line 9587 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[0].str)))); + (Node *)makeString((yyvsp[(5) - (5)].str)), (yylsp[(1) - (5)]))); (yyval.node) = (Node *)n; } -#line 34706 "gram.c" /* yacc.c:1646 */ break; - case 1278: -#line 8789 "gram.y" /* yacc.c:1646 */ + case 1398: +/* Line 1792 of yacc.c */ +#line 9595 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[0].str)))); + (Node *)makeString((yyvsp[(4) - (4)].str)), (yylsp[(1) - (4)]))); (yyval.node) = (Node *)n; } -#line 34718 "gram.c" /* yacc.c:1646 */ break; - case 1279: -#line 8797 "gram.y" /* yacc.c:1646 */ + case 1399: +/* Line 1792 of yacc.c */ +#line 9603 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_PREPARE; - n->gid = (yyvsp[0].str); + n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 34729 "gram.c" /* yacc.c:1646 */ break; - case 1280: -#line 8804 "gram.y" /* yacc.c:1646 */ + case 1400: +/* Line 1792 of yacc.c */ +#line 9610 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT_PREPARED; - n->gid = (yyvsp[0].str); + n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 34740 "gram.c" /* yacc.c:1646 */ break; - case 1281: -#line 8811 "gram.y" /* yacc.c:1646 */ + case 1401: +/* Line 1792 of yacc.c */ +#line 9617 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_PREPARED; - n->gid = (yyvsp[0].str); + n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 34751 "gram.c" /* yacc.c:1646 */ break; - case 1282: -#line 8819 "gram.y" /* yacc.c:1646 */ + case 1402: +/* Line 1792 of yacc.c */ +#line 9625 "gram.y" {} -#line 34757 "gram.c" /* yacc.c:1646 */ break; - case 1283: -#line 8820 "gram.y" /* yacc.c:1646 */ + case 1403: +/* Line 1792 of yacc.c */ +#line 9626 "gram.y" {} -#line 34763 "gram.c" /* yacc.c:1646 */ break; - case 1284: -#line 8821 "gram.y" /* yacc.c:1646 */ + case 1404: +/* Line 1792 of yacc.c */ +#line 9627 "gram.y" {} -#line 34769 "gram.c" /* yacc.c:1646 */ break; - case 1285: -#line 8826 "gram.y" /* yacc.c:1646 */ + case 1405: +/* Line 1792 of yacc.c */ +#line 9632 "gram.y" { (yyval.defelt) = makeDefElem("transaction_isolation", - makeStringConst((yyvsp[0].str), (yylsp[0]))); } -#line 34776 "gram.c" /* yacc.c:1646 */ + makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)])), (yylsp[(1) - (3)])); } break; - case 1286: -#line 8829 "gram.y" /* yacc.c:1646 */ + case 1406: +/* Line 1792 of yacc.c */ +#line 9635 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", - makeIntConst(TRUE, (yylsp[-1]))); } -#line 34783 "gram.c" /* yacc.c:1646 */ + makeIntConst(TRUE, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); } break; - case 1287: -#line 8832 "gram.y" /* yacc.c:1646 */ + case 1407: +/* Line 1792 of yacc.c */ +#line 9638 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", - makeIntConst(FALSE, (yylsp[-1]))); } -#line 34790 "gram.c" /* yacc.c:1646 */ + makeIntConst(FALSE, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); } break; - case 1288: -#line 8835 "gram.y" /* yacc.c:1646 */ + case 1408: +/* Line 1792 of yacc.c */ +#line 9641 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", - makeIntConst(TRUE, (yylsp[0]))); } -#line 34797 "gram.c" /* yacc.c:1646 */ + makeIntConst(TRUE, (yylsp[(1) - (1)])), (yylsp[(1) - (1)])); } break; - case 1289: -#line 8838 "gram.y" /* yacc.c:1646 */ + case 1409: +/* Line 1792 of yacc.c */ +#line 9644 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", - makeIntConst(FALSE, (yylsp[-1]))); } -#line 34804 "gram.c" /* yacc.c:1646 */ + makeIntConst(FALSE, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); } break; - case 1290: -#line 8845 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 34810 "gram.c" /* yacc.c:1646 */ + case 1410: +/* Line 1792 of yacc.c */ +#line 9651 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; - case 1291: -#line 8847 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 34816 "gram.c" /* yacc.c:1646 */ + case 1411: +/* Line 1792 of yacc.c */ +#line 9653 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } break; - case 1292: -#line 8849 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 34822 "gram.c" /* yacc.c:1646 */ + case 1412: +/* Line 1792 of yacc.c */ +#line 9655 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; - case 1294: -#line 8855 "gram.y" /* yacc.c:1646 */ + case 1414: +/* Line 1792 of yacc.c */ +#line 9661 "gram.y" { (yyval.list) = NIL; } -#line 34828 "gram.c" /* yacc.c:1646 */ break; - case 1295: -#line 8869 "gram.y" /* yacc.c:1646 */ + case 1415: +/* Line 1792 of yacc.c */ +#line 9675 "gram.y" { ViewStmt *n = makeNode(ViewStmt); - n->view = (yyvsp[-5].range); - n->view->relpersistence = (yyvsp[-7].ival); - n->aliases = (yyvsp[-4].list); - n->query = (yyvsp[-1].node); + n->view = (yyvsp[(4) - (9)].range); + n->view->relpersistence = (yyvsp[(2) - (9)].ival); + n->aliases = (yyvsp[(5) - (9)].list); + n->query = (yyvsp[(8) - (9)].node); n->replace = false; - n->options = (yyvsp[-3].list); - n->withCheckOption = (yyvsp[0].ival); + n->options = (yyvsp[(6) - (9)].list); + n->withCheckOption = (yyvsp[(9) - (9)].ival); (yyval.node) = (Node *) n; } -#line 34844 "gram.c" /* yacc.c:1646 */ break; - case 1296: -#line 8882 "gram.y" /* yacc.c:1646 */ + case 1416: +/* Line 1792 of yacc.c */ +#line 9688 "gram.y" { ViewStmt *n = makeNode(ViewStmt); - n->view = (yyvsp[-5].range); - n->view->relpersistence = (yyvsp[-7].ival); - n->aliases = (yyvsp[-4].list); - n->query = (yyvsp[-1].node); + n->view = (yyvsp[(6) - (11)].range); + n->view->relpersistence = (yyvsp[(4) - (11)].ival); + n->aliases = (yyvsp[(7) - (11)].list); + n->query = (yyvsp[(10) - (11)].node); n->replace = true; - n->options = (yyvsp[-3].list); - n->withCheckOption = (yyvsp[0].ival); + n->options = (yyvsp[(8) - (11)].list); + n->withCheckOption = (yyvsp[(11) - (11)].ival); (yyval.node) = (Node *) n; } -#line 34860 "gram.c" /* yacc.c:1646 */ break; - case 1297: -#line 8895 "gram.y" /* yacc.c:1646 */ + case 1417: +/* Line 1792 of yacc.c */ +#line 9701 "gram.y" { ViewStmt *n = makeNode(ViewStmt); - n->view = (yyvsp[-7].range); - n->view->relpersistence = (yyvsp[-10].ival); - n->aliases = (yyvsp[-5].list); - n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[-1].node)); + n->view = (yyvsp[(5) - (12)].range); + n->view->relpersistence = (yyvsp[(2) - (12)].ival); + n->aliases = (yyvsp[(7) - (12)].list); + n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[(11) - (12)].node)); n->replace = false; - n->options = (yyvsp[-3].list); - n->withCheckOption = (yyvsp[0].ival); + n->options = (yyvsp[(9) - (12)].list); + n->withCheckOption = (yyvsp[(12) - (12)].ival); if (n->withCheckOption != NO_CHECK_OPTION) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("WITH CHECK OPTION not supported on recursive views"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(12) - (12)])))); (yyval.node) = (Node *) n; } -#line 34881 "gram.c" /* yacc.c:1646 */ break; - case 1298: -#line 8913 "gram.y" /* yacc.c:1646 */ + case 1418: +/* Line 1792 of yacc.c */ +#line 9719 "gram.y" { ViewStmt *n = makeNode(ViewStmt); - n->view = (yyvsp[-7].range); - n->view->relpersistence = (yyvsp[-10].ival); - n->aliases = (yyvsp[-5].list); - n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[-1].node)); + n->view = (yyvsp[(7) - (14)].range); + n->view->relpersistence = (yyvsp[(4) - (14)].ival); + n->aliases = (yyvsp[(9) - (14)].list); + n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[(13) - (14)].node)); n->replace = true; - n->options = (yyvsp[-3].list); - n->withCheckOption = (yyvsp[0].ival); + n->options = (yyvsp[(11) - (14)].list); + n->withCheckOption = (yyvsp[(14) - (14)].ival); if (n->withCheckOption != NO_CHECK_OPTION) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("WITH CHECK OPTION not supported on recursive views"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(14) - (14)])))); (yyval.node) = (Node *) n; } -#line 34902 "gram.c" /* yacc.c:1646 */ break; - case 1299: -#line 8932 "gram.y" /* yacc.c:1646 */ + case 1419: +/* Line 1792 of yacc.c */ +#line 9738 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; } -#line 34908 "gram.c" /* yacc.c:1646 */ break; - case 1300: -#line 8933 "gram.y" /* yacc.c:1646 */ + case 1420: +/* Line 1792 of yacc.c */ +#line 9739 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; } -#line 34914 "gram.c" /* yacc.c:1646 */ break; - case 1301: -#line 8934 "gram.y" /* yacc.c:1646 */ + case 1421: +/* Line 1792 of yacc.c */ +#line 9740 "gram.y" { (yyval.ival) = LOCAL_CHECK_OPTION; } -#line 34920 "gram.c" /* yacc.c:1646 */ break; - case 1302: -#line 8935 "gram.y" /* yacc.c:1646 */ + case 1422: +/* Line 1792 of yacc.c */ +#line 9741 "gram.y" { (yyval.ival) = NO_CHECK_OPTION; } -#line 34926 "gram.c" /* yacc.c:1646 */ break; - case 1303: -#line 8946 "gram.y" /* yacc.c:1646 */ + case 1423: +/* Line 1792 of yacc.c */ +#line 9752 "gram.y" { LoadStmt *n = makeNode(LoadStmt); - n->filename = (yyvsp[0].str); + n->filename = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; } -#line 34936 "gram.c" /* yacc.c:1646 */ break; - case 1304: -#line 8962 "gram.y" /* yacc.c:1646 */ + case 1424: +/* Line 1792 of yacc.c */ +#line 9768 "gram.y" { CreatedbStmt *n = makeNode(CreatedbStmt); - n->dbname = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->dbname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 34947 "gram.c" /* yacc.c:1646 */ break; - case 1305: -#line 8971 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 34953 "gram.c" /* yacc.c:1646 */ + case 1425: +/* Line 1792 of yacc.c */ +#line 9777 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 1306: -#line 8972 "gram.y" /* yacc.c:1646 */ + case 1426: +/* Line 1792 of yacc.c */ +#line 9778 "gram.y" { (yyval.list) = NIL; } -#line 34959 "gram.c" /* yacc.c:1646 */ break; - case 1307: -#line 8976 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 34965 "gram.c" /* yacc.c:1646 */ + case 1427: +/* Line 1792 of yacc.c */ +#line 9782 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; - case 1308: -#line 8977 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 34971 "gram.c" /* yacc.c:1646 */ + case 1428: +/* Line 1792 of yacc.c */ +#line 9783 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; - case 1309: -#line 8982 "gram.y" /* yacc.c:1646 */ + case 1429: +/* Line 1792 of yacc.c */ +#line 9788 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *)makeInteger((yyvsp[0].ival))); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); } -#line 34979 "gram.c" /* yacc.c:1646 */ break; - case 1310: -#line 8986 "gram.y" /* yacc.c:1646 */ + case 1430: +/* Line 1792 of yacc.c */ +#line 9792 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *)makeString((yyvsp[0].str))); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 34987 "gram.c" /* yacc.c:1646 */ break; - case 1311: -#line 8990 "gram.y" /* yacc.c:1646 */ + case 1431: +/* Line 1792 of yacc.c */ +#line 9796 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), NULL); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); } -#line 34995 "gram.c" /* yacc.c:1646 */ break; - case 1312: -#line 9007 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 35001 "gram.c" /* yacc.c:1646 */ + case 1432: +/* Line 1792 of yacc.c */ +#line 9813 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 1313: -#line 9008 "gram.y" /* yacc.c:1646 */ + case 1433: +/* Line 1792 of yacc.c */ +#line 9814 "gram.y" { (yyval.str) = pstrdup("connection_limit"); } -#line 35007 "gram.c" /* yacc.c:1646 */ break; - case 1314: -#line 9009 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 35013 "gram.c" /* yacc.c:1646 */ + case 1434: +/* Line 1792 of yacc.c */ +#line 9815 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 1315: -#line 9010 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 35019 "gram.c" /* yacc.c:1646 */ + case 1435: +/* Line 1792 of yacc.c */ +#line 9816 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 1316: -#line 9011 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 35025 "gram.c" /* yacc.c:1646 */ + case 1436: +/* Line 1792 of yacc.c */ +#line 9817 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 1317: -#line 9012 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 35031 "gram.c" /* yacc.c:1646 */ + case 1437: +/* Line 1792 of yacc.c */ +#line 9818 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 1318: -#line 9013 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 35037 "gram.c" /* yacc.c:1646 */ + case 1438: +/* Line 1792 of yacc.c */ +#line 9819 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 1319: -#line 9020 "gram.y" /* yacc.c:1646 */ + case 1439: +/* Line 1792 of yacc.c */ +#line 9826 "gram.y" {} -#line 35043 "gram.c" /* yacc.c:1646 */ break; - case 1320: -#line 9021 "gram.y" /* yacc.c:1646 */ + case 1440: +/* Line 1792 of yacc.c */ +#line 9827 "gram.y" {} -#line 35049 "gram.c" /* yacc.c:1646 */ break; - case 1321: -#line 9033 "gram.y" /* yacc.c:1646 */ + case 1441: +/* Line 1792 of yacc.c */ +#line 9839 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); - n->dbname = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->dbname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 35060 "gram.c" /* yacc.c:1646 */ break; - case 1322: -#line 9040 "gram.y" /* yacc.c:1646 */ + case 1442: +/* Line 1792 of yacc.c */ +#line 9846 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); - n->dbname = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->dbname = (yyvsp[(3) - (4)].str); + n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 35071 "gram.c" /* yacc.c:1646 */ break; - case 1323: -#line 9047 "gram.y" /* yacc.c:1646 */ + case 1443: +/* Line 1792 of yacc.c */ +#line 9853 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); - n->dbname = (yyvsp[-3].str); + n->dbname = (yyvsp[(3) - (6)].str); n->options = list_make1(makeDefElem("tablespace", - (Node *)makeString((yyvsp[0].str)))); + (Node *)makeString((yyvsp[(6) - (6)].str)), (yylsp[(6) - (6)]))); (yyval.node) = (Node *)n; } -#line 35083 "gram.c" /* yacc.c:1646 */ break; - case 1324: -#line 9058 "gram.y" /* yacc.c:1646 */ + case 1444: +/* Line 1792 of yacc.c */ +#line 9864 "gram.y" { AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); - n->dbname = (yyvsp[-1].str); - n->setstmt = (yyvsp[0].vsetstmt); + n->dbname = (yyvsp[(3) - (4)].str); + n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *)n; } -#line 35094 "gram.c" /* yacc.c:1646 */ break; - case 1325: -#line 9075 "gram.y" /* yacc.c:1646 */ + case 1445: +/* Line 1792 of yacc.c */ +#line 9881 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); - n->dbname = (yyvsp[0].str); + n->dbname = (yyvsp[(3) - (3)].str); n->missing_ok = FALSE; (yyval.node) = (Node *)n; } -#line 35105 "gram.c" /* yacc.c:1646 */ break; - case 1326: -#line 9082 "gram.y" /* yacc.c:1646 */ + case 1446: +/* Line 1792 of yacc.c */ +#line 9888 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); - n->dbname = (yyvsp[0].str); + n->dbname = (yyvsp[(5) - (5)].str); n->missing_ok = TRUE; (yyval.node) = (Node *)n; } -#line 35116 "gram.c" /* yacc.c:1646 */ break; - case 1327: -#line 9100 "gram.y" /* yacc.c:1646 */ + case 1447: +/* Line 1792 of yacc.c */ +#line 9904 "gram.y" + { + AlterCollationStmt *n = makeNode(AlterCollationStmt); + n->collname = (yyvsp[(3) - (5)].list); + (yyval.node) = (Node *)n; + } + break; + + case 1448: +/* Line 1792 of yacc.c */ +#line 9921 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); - n->setstmt = (yyvsp[0].vsetstmt); + n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *)n; } -#line 35126 "gram.c" /* yacc.c:1646 */ break; - case 1328: -#line 9106 "gram.y" /* yacc.c:1646 */ + case 1449: +/* Line 1792 of yacc.c */ +#line 9927 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); - n->setstmt = (yyvsp[0].vsetstmt); + n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *)n; } -#line 35136 "gram.c" /* yacc.c:1646 */ break; - case 1329: -#line 9122 "gram.y" /* yacc.c:1646 */ + case 1450: +/* Line 1792 of yacc.c */ +#line 9943 "gram.y" { CreateDomainStmt *n = makeNode(CreateDomainStmt); - n->domainname = (yyvsp[-3].list); - n->typeName = (yyvsp[-1].typnam); - SplitColQualList((yyvsp[0].list), &n->constraints, &n->collClause, + n->domainname = (yyvsp[(3) - (6)].list); + n->typeName = (yyvsp[(5) - (6)].typnam); + SplitColQualList((yyvsp[(6) - (6)].list), &n->constraints, &n->collClause, yyscanner); (yyval.node) = (Node *)n; } -#line 35149 "gram.c" /* yacc.c:1646 */ break; - case 1330: -#line 9135 "gram.y" /* yacc.c:1646 */ + case 1451: +/* Line 1792 of yacc.c */ +#line 9956 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'T'; - n->typeName = (yyvsp[-1].list); - n->def = (yyvsp[0].node); + n->typeName = (yyvsp[(3) - (4)].list); + n->def = (yyvsp[(4) - (4)].node); (yyval.node) = (Node *)n; } -#line 35161 "gram.c" /* yacc.c:1646 */ break; - case 1331: -#line 9144 "gram.y" /* yacc.c:1646 */ + case 1452: +/* Line 1792 of yacc.c */ +#line 9965 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'N'; - n->typeName = (yyvsp[-3].list); + n->typeName = (yyvsp[(3) - (6)].list); (yyval.node) = (Node *)n; } -#line 35172 "gram.c" /* yacc.c:1646 */ break; - case 1332: -#line 9152 "gram.y" /* yacc.c:1646 */ + case 1453: +/* Line 1792 of yacc.c */ +#line 9973 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'O'; - n->typeName = (yyvsp[-3].list); + n->typeName = (yyvsp[(3) - (6)].list); (yyval.node) = (Node *)n; } -#line 35183 "gram.c" /* yacc.c:1646 */ break; - case 1333: -#line 9160 "gram.y" /* yacc.c:1646 */ + case 1454: +/* Line 1792 of yacc.c */ +#line 9981 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'C'; - n->typeName = (yyvsp[-2].list); - n->def = (yyvsp[0].node); + n->typeName = (yyvsp[(3) - (5)].list); + n->def = (yyvsp[(5) - (5)].node); (yyval.node) = (Node *)n; } -#line 35195 "gram.c" /* yacc.c:1646 */ break; - case 1334: -#line 9169 "gram.y" /* yacc.c:1646 */ + case 1455: +/* Line 1792 of yacc.c */ +#line 9990 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'X'; - n->typeName = (yyvsp[-4].list); - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->typeName = (yyvsp[(3) - (7)].list); + n->name = (yyvsp[(6) - (7)].str); + n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35209 "gram.c" /* yacc.c:1646 */ break; - case 1335: -#line 9180 "gram.y" /* yacc.c:1646 */ + case 1456: +/* Line 1792 of yacc.c */ +#line 10001 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'X'; - n->typeName = (yyvsp[-6].list); - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->typeName = (yyvsp[(3) - (9)].list); + n->name = (yyvsp[(8) - (9)].str); + n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35223 "gram.c" /* yacc.c:1646 */ break; - case 1336: -#line 9191 "gram.y" /* yacc.c:1646 */ + case 1457: +/* Line 1792 of yacc.c */ +#line 10012 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'V'; - n->typeName = (yyvsp[-3].list); - n->name = (yyvsp[0].str); + n->typeName = (yyvsp[(3) - (6)].list); + n->name = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *)n; } -#line 35235 "gram.c" /* yacc.c:1646 */ break; - case 1337: -#line 9200 "gram.y" /* yacc.c:1646 */ + case 1458: +/* Line 1792 of yacc.c */ +#line 10021 "gram.y" {} -#line 35241 "gram.c" /* yacc.c:1646 */ break; - case 1338: -#line 9201 "gram.y" /* yacc.c:1646 */ + case 1459: +/* Line 1792 of yacc.c */ +#line 10022 "gram.y" {} -#line 35247 "gram.c" /* yacc.c:1646 */ break; - case 1339: -#line 9213 "gram.y" /* yacc.c:1646 */ + case 1460: +/* Line 1792 of yacc.c */ +#line 10034 "gram.y" { AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt); - n->dictname = (yyvsp[-1].list); - n->options = (yyvsp[0].list); + n->dictname = (yyvsp[(5) - (6)].list); + n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 35258 "gram.c" /* yacc.c:1646 */ break; - case 1340: -#line 9223 "gram.y" /* yacc.c:1646 */ + case 1461: +/* Line 1792 of yacc.c */ +#line 10044 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_ADD_MAPPING; - n->cfgname = (yyvsp[-6].list); - n->tokentype = (yyvsp[-2].list); - n->dicts = (yyvsp[0].list); + n->cfgname = (yyvsp[(5) - (11)].list); + n->tokentype = (yyvsp[(9) - (11)].list); + n->dicts = (yyvsp[(11) - (11)].list); n->override = false; n->replace = false; (yyval.node) = (Node*)n; } -#line 35273 "gram.c" /* yacc.c:1646 */ break; - case 1341: -#line 9234 "gram.y" /* yacc.c:1646 */ + case 1462: +/* Line 1792 of yacc.c */ +#line 10055 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN; - n->cfgname = (yyvsp[-6].list); - n->tokentype = (yyvsp[-2].list); - n->dicts = (yyvsp[0].list); + n->cfgname = (yyvsp[(5) - (11)].list); + n->tokentype = (yyvsp[(9) - (11)].list); + n->dicts = (yyvsp[(11) - (11)].list); n->override = true; n->replace = false; (yyval.node) = (Node*)n; } -#line 35288 "gram.c" /* yacc.c:1646 */ break; - case 1342: -#line 9245 "gram.y" /* yacc.c:1646 */ + case 1463: +/* Line 1792 of yacc.c */ +#line 10066 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_REPLACE_DICT; - n->cfgname = (yyvsp[-6].list); + n->cfgname = (yyvsp[(5) - (11)].list); n->tokentype = NIL; - n->dicts = list_make2((yyvsp[-2].list),(yyvsp[0].list)); + n->dicts = list_make2((yyvsp[(9) - (11)].list),(yyvsp[(11) - (11)].list)); n->override = false; n->replace = true; (yyval.node) = (Node*)n; } -#line 35303 "gram.c" /* yacc.c:1646 */ break; - case 1343: -#line 9256 "gram.y" /* yacc.c:1646 */ + case 1464: +/* Line 1792 of yacc.c */ +#line 10077 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN; - n->cfgname = (yyvsp[-8].list); - n->tokentype = (yyvsp[-4].list); - n->dicts = list_make2((yyvsp[-2].list),(yyvsp[0].list)); + n->cfgname = (yyvsp[(5) - (13)].list); + n->tokentype = (yyvsp[(9) - (13)].list); + n->dicts = list_make2((yyvsp[(11) - (13)].list),(yyvsp[(13) - (13)].list)); n->override = false; n->replace = true; (yyval.node) = (Node*)n; } -#line 35318 "gram.c" /* yacc.c:1646 */ break; - case 1344: -#line 9267 "gram.y" /* yacc.c:1646 */ + case 1465: +/* Line 1792 of yacc.c */ +#line 10088 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_DROP_MAPPING; - n->cfgname = (yyvsp[-4].list); - n->tokentype = (yyvsp[0].list); + n->cfgname = (yyvsp[(5) - (9)].list); + n->tokentype = (yyvsp[(9) - (9)].list); n->missing_ok = false; (yyval.node) = (Node*)n; } -#line 35331 "gram.c" /* yacc.c:1646 */ break; - case 1345: -#line 9276 "gram.y" /* yacc.c:1646 */ + case 1466: +/* Line 1792 of yacc.c */ +#line 10097 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_DROP_MAPPING; - n->cfgname = (yyvsp[-6].list); - n->tokentype = (yyvsp[0].list); + n->cfgname = (yyvsp[(5) - (11)].list); + n->tokentype = (yyvsp[(11) - (11)].list); n->missing_ok = true; (yyval.node) = (Node*)n; } -#line 35344 "gram.c" /* yacc.c:1646 */ break; - case 1346: -#line 9287 "gram.y" /* yacc.c:1646 */ + case 1467: +/* Line 1792 of yacc.c */ +#line 10108 "gram.y" {} -#line 35350 "gram.c" /* yacc.c:1646 */ break; - case 1347: -#line 9288 "gram.y" /* yacc.c:1646 */ + case 1468: +/* Line 1792 of yacc.c */ +#line 10109 "gram.y" {} -#line 35356 "gram.c" /* yacc.c:1646 */ break; - case 1348: -#line 9304 "gram.y" /* yacc.c:1646 */ + case 1469: +/* Line 1792 of yacc.c */ +#line 10125 "gram.y" { CreateConversionStmt *n = makeNode(CreateConversionStmt); - n->conversion_name = (yyvsp[-6].list); - n->for_encoding_name = (yyvsp[-4].str); - n->to_encoding_name = (yyvsp[-2].str); - n->func_name = (yyvsp[0].list); - n->def = (yyvsp[-8].boolean); + n->conversion_name = (yyvsp[(4) - (10)].list); + n->for_encoding_name = (yyvsp[(6) - (10)].str); + n->to_encoding_name = (yyvsp[(8) - (10)].str); + n->func_name = (yyvsp[(10) - (10)].list); + n->def = (yyvsp[(2) - (10)].boolean); (yyval.node) = (Node *)n; } -#line 35370 "gram.c" /* yacc.c:1646 */ break; - case 1349: -#line 9326 "gram.y" /* yacc.c:1646 */ + case 1470: +/* Line 1792 of yacc.c */ +#line 10147 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); - n->relation = (yyvsp[-1].range); - n->indexname = (yyvsp[0].str); - n->verbose = (yyvsp[-2].boolean); + n->relation = (yyvsp[(3) - (4)].range); + n->indexname = (yyvsp[(4) - (4)].str); + n->verbose = (yyvsp[(2) - (4)].boolean); (yyval.node) = (Node*)n; } -#line 35382 "gram.c" /* yacc.c:1646 */ break; - case 1350: -#line 9334 "gram.y" /* yacc.c:1646 */ + case 1471: +/* Line 1792 of yacc.c */ +#line 10155 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = NULL; n->indexname = NULL; - n->verbose = (yyvsp[0].boolean); + n->verbose = (yyvsp[(2) - (2)].boolean); (yyval.node) = (Node*)n; } -#line 35394 "gram.c" /* yacc.c:1646 */ break; - case 1351: -#line 9343 "gram.y" /* yacc.c:1646 */ + case 1472: +/* Line 1792 of yacc.c */ +#line 10164 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); - n->relation = (yyvsp[0].range); - n->indexname = (yyvsp[-2].str); - n->verbose = (yyvsp[-3].boolean); + n->relation = (yyvsp[(5) - (5)].range); + n->indexname = (yyvsp[(3) - (5)].str); + n->verbose = (yyvsp[(2) - (5)].boolean); (yyval.node) = (Node*)n; } -#line 35406 "gram.c" /* yacc.c:1646 */ break; - case 1352: -#line 9353 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 35412 "gram.c" /* yacc.c:1646 */ + case 1473: +/* Line 1792 of yacc.c */ +#line 10174 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; - case 1353: -#line 9354 "gram.y" /* yacc.c:1646 */ + case 1474: +/* Line 1792 of yacc.c */ +#line 10175 "gram.y" { (yyval.str) = NULL; } -#line 35418 "gram.c" /* yacc.c:1646 */ break; - case 1354: -#line 9367 "gram.y" /* yacc.c:1646 */ + case 1475: +/* Line 1792 of yacc.c */ +#line 10188 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = VACOPT_VACUUM; - if ((yyvsp[-2].boolean)) + if ((yyvsp[(2) - (4)].boolean)) n->options |= VACOPT_FULL; - if ((yyvsp[-1].boolean)) + if ((yyvsp[(3) - (4)].boolean)) n->options |= VACOPT_FREEZE; - if ((yyvsp[0].boolean)) + if ((yyvsp[(4) - (4)].boolean)) n->options |= VACOPT_VERBOSE; n->relation = NULL; n->va_cols = NIL; (yyval.node) = (Node *)n; } -#line 35436 "gram.c" /* yacc.c:1646 */ break; - case 1355: -#line 9381 "gram.y" /* yacc.c:1646 */ + case 1476: +/* Line 1792 of yacc.c */ +#line 10202 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = VACOPT_VACUUM; - if ((yyvsp[-3].boolean)) + if ((yyvsp[(2) - (5)].boolean)) n->options |= VACOPT_FULL; - if ((yyvsp[-2].boolean)) + if ((yyvsp[(3) - (5)].boolean)) n->options |= VACOPT_FREEZE; - if ((yyvsp[-1].boolean)) + if ((yyvsp[(4) - (5)].boolean)) n->options |= VACOPT_VERBOSE; - n->relation = (yyvsp[0].range); + n->relation = (yyvsp[(5) - (5)].range); n->va_cols = NIL; (yyval.node) = (Node *)n; } -#line 35454 "gram.c" /* yacc.c:1646 */ break; - case 1356: -#line 9395 "gram.y" /* yacc.c:1646 */ + case 1477: +/* Line 1792 of yacc.c */ +#line 10216 "gram.y" { - VacuumStmt *n = (VacuumStmt *) (yyvsp[0].node); + VacuumStmt *n = (VacuumStmt *) (yyvsp[(5) - (5)].node); n->options |= VACOPT_VACUUM; - if ((yyvsp[-3].boolean)) + if ((yyvsp[(2) - (5)].boolean)) n->options |= VACOPT_FULL; - if ((yyvsp[-2].boolean)) + if ((yyvsp[(3) - (5)].boolean)) n->options |= VACOPT_FREEZE; - if ((yyvsp[-1].boolean)) + if ((yyvsp[(4) - (5)].boolean)) n->options |= VACOPT_VERBOSE; (yyval.node) = (Node *)n; } -#line 35470 "gram.c" /* yacc.c:1646 */ break; - case 1357: -#line 9407 "gram.y" /* yacc.c:1646 */ + case 1478: +/* Line 1792 of yacc.c */ +#line 10228 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); - n->options = VACOPT_VACUUM | (yyvsp[-1].ival); + n->options = VACOPT_VACUUM | (yyvsp[(3) - (4)].ival); n->relation = NULL; n->va_cols = NIL; (yyval.node) = (Node *) n; } -#line 35482 "gram.c" /* yacc.c:1646 */ break; - case 1358: -#line 9415 "gram.y" /* yacc.c:1646 */ + case 1479: +/* Line 1792 of yacc.c */ +#line 10236 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); - n->options = VACOPT_VACUUM | (yyvsp[-3].ival); - n->relation = (yyvsp[-1].range); - n->va_cols = (yyvsp[0].list); + n->options = VACOPT_VACUUM | (yyvsp[(3) - (6)].ival); + n->relation = (yyvsp[(5) - (6)].range); + n->va_cols = (yyvsp[(6) - (6)].list); if (n->va_cols != NIL) /* implies analyze */ n->options |= VACOPT_ANALYZE; (yyval.node) = (Node *) n; } -#line 35496 "gram.c" /* yacc.c:1646 */ break; - case 1359: -#line 9427 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 35502 "gram.c" /* yacc.c:1646 */ + case 1480: +/* Line 1792 of yacc.c */ +#line 10248 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (1)].ival); } break; - case 1360: -#line 9428 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } -#line 35508 "gram.c" /* yacc.c:1646 */ + case 1481: +/* Line 1792 of yacc.c */ +#line 10249 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); } break; - case 1361: -#line 9432 "gram.y" /* yacc.c:1646 */ + case 1482: +/* Line 1792 of yacc.c */ +#line 10253 "gram.y" { (yyval.ival) = VACOPT_ANALYZE; } -#line 35514 "gram.c" /* yacc.c:1646 */ break; - case 1362: -#line 9433 "gram.y" /* yacc.c:1646 */ + case 1483: +/* Line 1792 of yacc.c */ +#line 10254 "gram.y" { (yyval.ival) = VACOPT_VERBOSE; } -#line 35520 "gram.c" /* yacc.c:1646 */ break; - case 1363: -#line 9434 "gram.y" /* yacc.c:1646 */ + case 1484: +/* Line 1792 of yacc.c */ +#line 10255 "gram.y" { (yyval.ival) = VACOPT_FREEZE; } -#line 35526 "gram.c" /* yacc.c:1646 */ break; - case 1364: -#line 9435 "gram.y" /* yacc.c:1646 */ + case 1485: +/* Line 1792 of yacc.c */ +#line 10256 "gram.y" { (yyval.ival) = VACOPT_FULL; } -#line 35532 "gram.c" /* yacc.c:1646 */ break; - case 1365: -#line 9437 "gram.y" /* yacc.c:1646 */ + case 1486: +/* Line 1792 of yacc.c */ +#line 10258 "gram.y" { - if (strcmp((yyvsp[0].str), "disable_page_skipping") == 0) + if (strcmp((yyvsp[(1) - (1)].str), "disable_page_skipping") == 0) (yyval.ival) = VACOPT_DISABLE_PAGE_SKIPPING; else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("unrecognized VACUUM option \"%s\"", (yyvsp[0].str)), - parser_errposition((yylsp[0])))); + errmsg("unrecognized VACUUM option \"%s\"", (yyvsp[(1) - (1)].str)), + parser_errposition((yylsp[(1) - (1)])))); } -#line 35546 "gram.c" /* yacc.c:1646 */ break; - case 1366: -#line 9450 "gram.y" /* yacc.c:1646 */ + case 1487: +/* Line 1792 of yacc.c */ +#line 10271 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = VACOPT_ANALYZE; - if ((yyvsp[0].boolean)) + if ((yyvsp[(2) - (2)].boolean)) n->options |= VACOPT_VERBOSE; n->relation = NULL; n->va_cols = NIL; (yyval.node) = (Node *)n; } -#line 35560 "gram.c" /* yacc.c:1646 */ break; - case 1367: -#line 9460 "gram.y" /* yacc.c:1646 */ + case 1488: +/* Line 1792 of yacc.c */ +#line 10281 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = VACOPT_ANALYZE; - if ((yyvsp[-2].boolean)) + if ((yyvsp[(2) - (4)].boolean)) n->options |= VACOPT_VERBOSE; - n->relation = (yyvsp[-1].range); - n->va_cols = (yyvsp[0].list); + n->relation = (yyvsp[(3) - (4)].range); + n->va_cols = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 35574 "gram.c" /* yacc.c:1646 */ break; - case 1368: -#line 9472 "gram.y" /* yacc.c:1646 */ + case 1489: +/* Line 1792 of yacc.c */ +#line 10293 "gram.y" {} -#line 35580 "gram.c" /* yacc.c:1646 */ break; - case 1369: -#line 9473 "gram.y" /* yacc.c:1646 */ + case 1490: +/* Line 1792 of yacc.c */ +#line 10294 "gram.y" {} -#line 35586 "gram.c" /* yacc.c:1646 */ break; - case 1370: -#line 9477 "gram.y" /* yacc.c:1646 */ + case 1491: +/* Line 1792 of yacc.c */ +#line 10298 "gram.y" { (yyval.boolean) = TRUE; } -#line 35592 "gram.c" /* yacc.c:1646 */ break; - case 1371: -#line 9478 "gram.y" /* yacc.c:1646 */ + case 1492: +/* Line 1792 of yacc.c */ +#line 10299 "gram.y" { (yyval.boolean) = FALSE; } -#line 35598 "gram.c" /* yacc.c:1646 */ break; - case 1372: -#line 9481 "gram.y" /* yacc.c:1646 */ + case 1493: +/* Line 1792 of yacc.c */ +#line 10302 "gram.y" { (yyval.boolean) = TRUE; } -#line 35604 "gram.c" /* yacc.c:1646 */ break; - case 1373: -#line 9482 "gram.y" /* yacc.c:1646 */ + case 1494: +/* Line 1792 of yacc.c */ +#line 10303 "gram.y" { (yyval.boolean) = FALSE; } -#line 35610 "gram.c" /* yacc.c:1646 */ break; - case 1374: -#line 9485 "gram.y" /* yacc.c:1646 */ + case 1495: +/* Line 1792 of yacc.c */ +#line 10306 "gram.y" { (yyval.boolean) = TRUE; } -#line 35616 "gram.c" /* yacc.c:1646 */ break; - case 1375: -#line 9486 "gram.y" /* yacc.c:1646 */ + case 1496: +/* Line 1792 of yacc.c */ +#line 10307 "gram.y" { (yyval.boolean) = FALSE; } -#line 35622 "gram.c" /* yacc.c:1646 */ break; - case 1376: -#line 9490 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 35628 "gram.c" /* yacc.c:1646 */ + case 1497: +/* Line 1792 of yacc.c */ +#line 10311 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 1377: -#line 9491 "gram.y" /* yacc.c:1646 */ + case 1498: +/* Line 1792 of yacc.c */ +#line 10312 "gram.y" { (yyval.list) = NIL; } -#line 35634 "gram.c" /* yacc.c:1646 */ break; - case 1378: -#line 9505 "gram.y" /* yacc.c:1646 */ + case 1499: +/* Line 1792 of yacc.c */ +#line 10326 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); - n->query = (yyvsp[0].node); + n->query = (yyvsp[(2) - (2)].node); n->options = NIL; (yyval.node) = (Node *) n; } -#line 35645 "gram.c" /* yacc.c:1646 */ break; - case 1379: -#line 9512 "gram.y" /* yacc.c:1646 */ + case 1500: +/* Line 1792 of yacc.c */ +#line 10333 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); - n->query = (yyvsp[0].node); - n->options = list_make1(makeDefElem("analyze", NULL)); - if ((yyvsp[-1].boolean)) + n->query = (yyvsp[(4) - (4)].node); + n->options = list_make1(makeDefElem("analyze", NULL, (yylsp[(2) - (4)]))); + if ((yyvsp[(3) - (4)].boolean)) n->options = lappend(n->options, - makeDefElem("verbose", NULL)); + makeDefElem("verbose", NULL, (yylsp[(3) - (4)]))); (yyval.node) = (Node *) n; } -#line 35659 "gram.c" /* yacc.c:1646 */ break; - case 1380: -#line 9522 "gram.y" /* yacc.c:1646 */ + case 1501: +/* Line 1792 of yacc.c */ +#line 10343 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); - n->query = (yyvsp[0].node); - n->options = list_make1(makeDefElem("verbose", NULL)); + n->query = (yyvsp[(3) - (3)].node); + n->options = list_make1(makeDefElem("verbose", NULL, (yylsp[(2) - (3)]))); (yyval.node) = (Node *) n; } -#line 35670 "gram.c" /* yacc.c:1646 */ break; - case 1381: -#line 9529 "gram.y" /* yacc.c:1646 */ + case 1502: +/* Line 1792 of yacc.c */ +#line 10350 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); - n->query = (yyvsp[0].node); - n->options = (yyvsp[-2].list); + n->query = (yyvsp[(5) - (5)].node); + n->options = (yyvsp[(3) - (5)].list); (yyval.node) = (Node *) n; } -#line 35681 "gram.c" /* yacc.c:1646 */ break; - case 1391: -#line 9551 "gram.y" /* yacc.c:1646 */ + case 1512: +/* Line 1792 of yacc.c */ +#line 10372 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].defelt)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } -#line 35689 "gram.c" /* yacc.c:1646 */ break; - case 1392: -#line 9555 "gram.y" /* yacc.c:1646 */ + case 1513: +/* Line 1792 of yacc.c */ +#line 10376 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } -#line 35697 "gram.c" /* yacc.c:1646 */ break; - case 1393: -#line 9562 "gram.y" /* yacc.c:1646 */ + case 1514: +/* Line 1792 of yacc.c */ +#line 10383 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node)); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } -#line 35705 "gram.c" /* yacc.c:1646 */ break; - case 1394: -#line 9568 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 35711 "gram.c" /* yacc.c:1646 */ + case 1515: +/* Line 1792 of yacc.c */ +#line 10389 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 1395: -#line 9569 "gram.y" /* yacc.c:1646 */ + case 1516: +/* Line 1792 of yacc.c */ +#line 10390 "gram.y" { (yyval.str) = "analyze"; } -#line 35717 "gram.c" /* yacc.c:1646 */ break; - case 1396: -#line 9573 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeString((yyvsp[0].str)); } -#line 35723 "gram.c" /* yacc.c:1646 */ + case 1517: +/* Line 1792 of yacc.c */ +#line 10394 "gram.y" + { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); } break; - case 1397: -#line 9574 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[0].value); } -#line 35729 "gram.c" /* yacc.c:1646 */ + case 1518: +/* Line 1792 of yacc.c */ +#line 10395 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(1) - (1)].value); } break; - case 1398: -#line 9575 "gram.y" /* yacc.c:1646 */ + case 1519: +/* Line 1792 of yacc.c */ +#line 10396 "gram.y" { (yyval.node) = NULL; } -#line 35735 "gram.c" /* yacc.c:1646 */ break; - case 1399: -#line 9586 "gram.y" /* yacc.c:1646 */ + case 1520: +/* Line 1792 of yacc.c */ +#line 10407 "gram.y" { PrepareStmt *n = makeNode(PrepareStmt); - n->name = (yyvsp[-3].str); - n->argtypes = (yyvsp[-2].list); - n->query = (yyvsp[0].node); + n->name = (yyvsp[(2) - (5)].str); + n->argtypes = (yyvsp[(3) - (5)].list); + n->query = (yyvsp[(5) - (5)].node); (yyval.node) = (Node *) n; } -#line 35747 "gram.c" /* yacc.c:1646 */ break; - case 1400: -#line 9595 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 35753 "gram.c" /* yacc.c:1646 */ + case 1521: +/* Line 1792 of yacc.c */ +#line 10416 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 1401: -#line 9596 "gram.y" /* yacc.c:1646 */ + case 1522: +/* Line 1792 of yacc.c */ +#line 10417 "gram.y" { (yyval.list) = NIL; } -#line 35759 "gram.c" /* yacc.c:1646 */ break; - case 1406: -#line 9614 "gram.y" /* yacc.c:1646 */ + case 1527: +/* Line 1792 of yacc.c */ +#line 10435 "gram.y" { ExecuteStmt *n = makeNode(ExecuteStmt); - n->name = (yyvsp[-1].str); - n->params = (yyvsp[0].list); + n->name = (yyvsp[(2) - (3)].str); + n->params = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; } -#line 35770 "gram.c" /* yacc.c:1646 */ break; - case 1407: -#line 9622 "gram.y" /* yacc.c:1646 */ + case 1528: +/* Line 1792 of yacc.c */ +#line 10443 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ExecuteStmt *n = makeNode(ExecuteStmt); - n->name = (yyvsp[-2].str); - n->params = (yyvsp[-1].list); + n->name = (yyvsp[(7) - (9)].str); + n->params = (yyvsp[(8) - (9)].list); ctas->query = (Node *) n; - ctas->into = (yyvsp[-5].into); + ctas->into = (yyvsp[(4) - (9)].into); ctas->relkind = OBJECT_TABLE; ctas->is_select_into = false; /* cram additional flags into the IntoClause */ - (yyvsp[-5].into)->rel->relpersistence = (yyvsp[-7].ival); - (yyvsp[-5].into)->skipData = !((yyvsp[0].boolean)); + (yyvsp[(4) - (9)].into)->rel->relpersistence = (yyvsp[(2) - (9)].ival); + (yyvsp[(4) - (9)].into)->skipData = !((yyvsp[(9) - (9)].boolean)); (yyval.node) = (Node *) ctas; } -#line 35789 "gram.c" /* yacc.c:1646 */ break; - case 1408: -#line 9638 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 35795 "gram.c" /* yacc.c:1646 */ + case 1529: +/* Line 1792 of yacc.c */ +#line 10459 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 1409: -#line 9639 "gram.y" /* yacc.c:1646 */ + case 1530: +/* Line 1792 of yacc.c */ +#line 10460 "gram.y" { (yyval.list) = NIL; } -#line 35801 "gram.c" /* yacc.c:1646 */ break; - case 1410: -#line 9650 "gram.y" /* yacc.c:1646 */ + case 1531: +/* Line 1792 of yacc.c */ +#line 10471 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); - n->name = (yyvsp[0].str); + n->name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; } -#line 35811 "gram.c" /* yacc.c:1646 */ break; - case 1411: -#line 9656 "gram.y" /* yacc.c:1646 */ + case 1532: +/* Line 1792 of yacc.c */ +#line 10477 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; } -#line 35821 "gram.c" /* yacc.c:1646 */ break; - case 1412: -#line 9662 "gram.y" /* yacc.c:1646 */ + case 1533: +/* Line 1792 of yacc.c */ +#line 10483 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; (yyval.node) = (Node *) n; } -#line 35831 "gram.c" /* yacc.c:1646 */ break; - case 1413: -#line 9668 "gram.y" /* yacc.c:1646 */ + case 1534: +/* Line 1792 of yacc.c */ +#line 10489 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; (yyval.node) = (Node *) n; } -#line 35841 "gram.c" /* yacc.c:1646 */ break; - case 1414: -#line 9685 "gram.y" /* yacc.c:1646 */ + case 1535: +/* Line 1792 of yacc.c */ +#line 10506 "gram.y" { - (yyvsp[-2].istmt)->relation = (yyvsp[-3].range); - (yyvsp[-2].istmt)->onConflictClause = (yyvsp[-1].onconflict); - (yyvsp[-2].istmt)->returningList = (yyvsp[0].list); - (yyvsp[-2].istmt)->withClause = (yyvsp[-6].with); - (yyval.node) = (Node *) (yyvsp[-2].istmt); + (yyvsp[(5) - (7)].istmt)->relation = (yyvsp[(4) - (7)].range); + (yyvsp[(5) - (7)].istmt)->onConflictClause = (yyvsp[(6) - (7)].onconflict); + (yyvsp[(5) - (7)].istmt)->returningList = (yyvsp[(7) - (7)].list); + (yyvsp[(5) - (7)].istmt)->withClause = (yyvsp[(1) - (7)].with); + (yyval.node) = (Node *) (yyvsp[(5) - (7)].istmt); } -#line 35853 "gram.c" /* yacc.c:1646 */ break; - case 1415: -#line 9702 "gram.y" /* yacc.c:1646 */ + case 1536: +/* Line 1792 of yacc.c */ +#line 10523 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(1) - (1)].range); } -#line 35861 "gram.c" /* yacc.c:1646 */ break; - case 1416: -#line 9706 "gram.y" /* yacc.c:1646 */ + case 1537: +/* Line 1792 of yacc.c */ +#line 10527 "gram.y" { - (yyvsp[-2].range)->alias = makeAlias((yyvsp[0].str), NIL); - (yyval.range) = (yyvsp[-2].range); + (yyvsp[(1) - (3)].range)->alias = makeAlias((yyvsp[(3) - (3)].str), NIL); + (yyval.range) = (yyvsp[(1) - (3)].range); } -#line 35870 "gram.c" /* yacc.c:1646 */ break; - case 1417: -#line 9714 "gram.y" /* yacc.c:1646 */ + case 1538: +/* Line 1792 of yacc.c */ +#line 10535 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; - (yyval.istmt)->selectStmt = (yyvsp[0].node); + (yyval.istmt)->selectStmt = (yyvsp[(1) - (1)].node); } -#line 35880 "gram.c" /* yacc.c:1646 */ break; - case 1418: -#line 9720 "gram.y" /* yacc.c:1646 */ + case 1539: +/* Line 1792 of yacc.c */ +#line 10541 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); - (yyval.istmt)->cols = (yyvsp[-2].list); - (yyval.istmt)->selectStmt = (yyvsp[0].node); + (yyval.istmt)->cols = NIL; + (yyval.istmt)->override = (yyvsp[(2) - (4)].ival); + (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); } -#line 35890 "gram.c" /* yacc.c:1646 */ break; - case 1419: -#line 9726 "gram.y" /* yacc.c:1646 */ + case 1540: +/* Line 1792 of yacc.c */ +#line 10548 "gram.y" + { + (yyval.istmt) = makeNode(InsertStmt); + (yyval.istmt)->cols = (yyvsp[(2) - (4)].list); + (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); + } + break; + + case 1541: +/* Line 1792 of yacc.c */ +#line 10554 "gram.y" + { + (yyval.istmt) = makeNode(InsertStmt); + (yyval.istmt)->cols = (yyvsp[(2) - (7)].list); + (yyval.istmt)->override = (yyvsp[(5) - (7)].ival); + (yyval.istmt)->selectStmt = (yyvsp[(7) - (7)].node); + } + break; + + case 1542: +/* Line 1792 of yacc.c */ +#line 10561 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; (yyval.istmt)->selectStmt = NULL; } -#line 35900 "gram.c" /* yacc.c:1646 */ break; - case 1420: -#line 9735 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].target)); } -#line 35906 "gram.c" /* yacc.c:1646 */ + case 1543: +/* Line 1792 of yacc.c */ +#line 10569 "gram.y" + { (yyval.ival) = OVERRIDING_USER_VALUE; } break; - case 1421: -#line 9737 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } -#line 35912 "gram.c" /* yacc.c:1646 */ + case 1544: +/* Line 1792 of yacc.c */ +#line 10570 "gram.y" + { (yyval.ival) = OVERRIDING_SYSTEM_VALUE; } break; - case 1422: -#line 9742 "gram.y" /* yacc.c:1646 */ + case 1545: +/* Line 1792 of yacc.c */ +#line 10575 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); } + break; + + case 1546: +/* Line 1792 of yacc.c */ +#line 10577 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); } + break; + + case 1547: +/* Line 1792 of yacc.c */ +#line 10582 "gram.y" { (yyval.target) = makeNode(ResTarget); - (yyval.target)->name = (yyvsp[-1].str); - (yyval.target)->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.target)->name = (yyvsp[(1) - (2)].str); + (yyval.target)->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.target)->val = NULL; - (yyval.target)->location = (yylsp[-1]); + (yyval.target)->location = (yylsp[(1) - (2)]); } -#line 35924 "gram.c" /* yacc.c:1646 */ break; - case 1423: -#line 9753 "gram.y" /* yacc.c:1646 */ + case 1548: +/* Line 1792 of yacc.c */ +#line 10593 "gram.y" { (yyval.onconflict) = makeNode(OnConflictClause); (yyval.onconflict)->action = ONCONFLICT_UPDATE; - (yyval.onconflict)->infer = (yyvsp[-5].infer); - (yyval.onconflict)->targetList = (yyvsp[-1].list); - (yyval.onconflict)->whereClause = (yyvsp[0].node); - (yyval.onconflict)->location = (yylsp[-7]); + (yyval.onconflict)->infer = (yyvsp[(3) - (8)].infer); + (yyval.onconflict)->targetList = (yyvsp[(7) - (8)].list); + (yyval.onconflict)->whereClause = (yyvsp[(8) - (8)].node); + (yyval.onconflict)->location = (yylsp[(1) - (8)]); } -#line 35937 "gram.c" /* yacc.c:1646 */ break; - case 1424: -#line 9763 "gram.y" /* yacc.c:1646 */ + case 1549: +/* Line 1792 of yacc.c */ +#line 10603 "gram.y" { (yyval.onconflict) = makeNode(OnConflictClause); (yyval.onconflict)->action = ONCONFLICT_NOTHING; - (yyval.onconflict)->infer = (yyvsp[-2].infer); + (yyval.onconflict)->infer = (yyvsp[(3) - (5)].infer); (yyval.onconflict)->targetList = NIL; (yyval.onconflict)->whereClause = NULL; - (yyval.onconflict)->location = (yylsp[-4]); + (yyval.onconflict)->location = (yylsp[(1) - (5)]); } -#line 35950 "gram.c" /* yacc.c:1646 */ break; - case 1425: -#line 9772 "gram.y" /* yacc.c:1646 */ + case 1550: +/* Line 1792 of yacc.c */ +#line 10612 "gram.y" { (yyval.onconflict) = NULL; } -#line 35958 "gram.c" /* yacc.c:1646 */ break; - case 1426: -#line 9779 "gram.y" /* yacc.c:1646 */ + case 1551: +/* Line 1792 of yacc.c */ +#line 10619 "gram.y" { (yyval.infer) = makeNode(InferClause); - (yyval.infer)->indexElems = (yyvsp[-2].list); - (yyval.infer)->whereClause = (yyvsp[0].node); + (yyval.infer)->indexElems = (yyvsp[(2) - (4)].list); + (yyval.infer)->whereClause = (yyvsp[(4) - (4)].node); (yyval.infer)->conname = NULL; - (yyval.infer)->location = (yylsp[-3]); + (yyval.infer)->location = (yylsp[(1) - (4)]); } -#line 35970 "gram.c" /* yacc.c:1646 */ break; - case 1427: -#line 9788 "gram.y" /* yacc.c:1646 */ + case 1552: +/* Line 1792 of yacc.c */ +#line 10628 "gram.y" { (yyval.infer) = makeNode(InferClause); (yyval.infer)->indexElems = NIL; (yyval.infer)->whereClause = NULL; - (yyval.infer)->conname = (yyvsp[0].str); - (yyval.infer)->location = (yylsp[-2]); + (yyval.infer)->conname = (yyvsp[(3) - (3)].str); + (yyval.infer)->location = (yylsp[(1) - (3)]); } -#line 35982 "gram.c" /* yacc.c:1646 */ break; - case 1428: -#line 9796 "gram.y" /* yacc.c:1646 */ + case 1553: +/* Line 1792 of yacc.c */ +#line 10636 "gram.y" { (yyval.infer) = NULL; } -#line 35990 "gram.c" /* yacc.c:1646 */ break; - case 1429: -#line 9802 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 35996 "gram.c" /* yacc.c:1646 */ + case 1554: +/* Line 1792 of yacc.c */ +#line 10642 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 1430: -#line 9803 "gram.y" /* yacc.c:1646 */ + case 1555: +/* Line 1792 of yacc.c */ +#line 10643 "gram.y" { (yyval.list) = NIL; } -#line 36002 "gram.c" /* yacc.c:1646 */ break; - case 1431: -#line 9816 "gram.y" /* yacc.c:1646 */ + case 1556: +/* Line 1792 of yacc.c */ +#line 10656 "gram.y" { DeleteStmt *n = makeNode(DeleteStmt); - n->relation = (yyvsp[-3].range); - n->usingClause = (yyvsp[-2].list); - n->whereClause = (yyvsp[-1].node); - n->returningList = (yyvsp[0].list); - n->withClause = (yyvsp[-6].with); + n->relation = (yyvsp[(4) - (7)].range); + n->usingClause = (yyvsp[(5) - (7)].list); + n->whereClause = (yyvsp[(6) - (7)].node); + n->returningList = (yyvsp[(7) - (7)].list); + n->withClause = (yyvsp[(1) - (7)].with); (yyval.node) = (Node *)n; } -#line 36016 "gram.c" /* yacc.c:1646 */ break; - case 1432: -#line 9828 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 36022 "gram.c" /* yacc.c:1646 */ + case 1557: +/* Line 1792 of yacc.c */ +#line 10668 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 1433: -#line 9829 "gram.y" /* yacc.c:1646 */ + case 1558: +/* Line 1792 of yacc.c */ +#line 10669 "gram.y" { (yyval.list) = NIL; } -#line 36028 "gram.c" /* yacc.c:1646 */ break; - case 1434: -#line 9841 "gram.y" /* yacc.c:1646 */ + case 1559: +/* Line 1792 of yacc.c */ +#line 10681 "gram.y" { LockStmt *n = makeNode(LockStmt); - n->relations = (yyvsp[-2].list); - n->mode = (yyvsp[-1].ival); - n->nowait = (yyvsp[0].boolean); + n->relations = (yyvsp[(3) - (5)].list); + n->mode = (yyvsp[(4) - (5)].ival); + n->nowait = (yyvsp[(5) - (5)].boolean); (yyval.node) = (Node *)n; } -#line 36041 "gram.c" /* yacc.c:1646 */ break; - case 1435: -#line 9851 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-1].ival); } -#line 36047 "gram.c" /* yacc.c:1646 */ + case 1560: +/* Line 1792 of yacc.c */ +#line 10691 "gram.y" + { (yyval.ival) = (yyvsp[(2) - (3)].ival); } break; - case 1436: -#line 9852 "gram.y" /* yacc.c:1646 */ + case 1561: +/* Line 1792 of yacc.c */ +#line 10692 "gram.y" { (yyval.ival) = AccessExclusiveLock; } -#line 36053 "gram.c" /* yacc.c:1646 */ break; - case 1437: -#line 9855 "gram.y" /* yacc.c:1646 */ + case 1562: +/* Line 1792 of yacc.c */ +#line 10695 "gram.y" { (yyval.ival) = AccessShareLock; } -#line 36059 "gram.c" /* yacc.c:1646 */ break; - case 1438: -#line 9856 "gram.y" /* yacc.c:1646 */ + case 1563: +/* Line 1792 of yacc.c */ +#line 10696 "gram.y" { (yyval.ival) = RowShareLock; } -#line 36065 "gram.c" /* yacc.c:1646 */ break; - case 1439: -#line 9857 "gram.y" /* yacc.c:1646 */ + case 1564: +/* Line 1792 of yacc.c */ +#line 10697 "gram.y" { (yyval.ival) = RowExclusiveLock; } -#line 36071 "gram.c" /* yacc.c:1646 */ break; - case 1440: -#line 9858 "gram.y" /* yacc.c:1646 */ + case 1565: +/* Line 1792 of yacc.c */ +#line 10698 "gram.y" { (yyval.ival) = ShareUpdateExclusiveLock; } -#line 36077 "gram.c" /* yacc.c:1646 */ break; - case 1441: -#line 9859 "gram.y" /* yacc.c:1646 */ + case 1566: +/* Line 1792 of yacc.c */ +#line 10699 "gram.y" { (yyval.ival) = ShareLock; } -#line 36083 "gram.c" /* yacc.c:1646 */ break; - case 1442: -#line 9860 "gram.y" /* yacc.c:1646 */ + case 1567: +/* Line 1792 of yacc.c */ +#line 10700 "gram.y" { (yyval.ival) = ShareRowExclusiveLock; } -#line 36089 "gram.c" /* yacc.c:1646 */ break; - case 1443: -#line 9861 "gram.y" /* yacc.c:1646 */ + case 1568: +/* Line 1792 of yacc.c */ +#line 10701 "gram.y" { (yyval.ival) = ExclusiveLock; } -#line 36095 "gram.c" /* yacc.c:1646 */ break; - case 1444: -#line 9862 "gram.y" /* yacc.c:1646 */ + case 1569: +/* Line 1792 of yacc.c */ +#line 10702 "gram.y" { (yyval.ival) = AccessExclusiveLock; } -#line 36101 "gram.c" /* yacc.c:1646 */ break; - case 1445: -#line 9865 "gram.y" /* yacc.c:1646 */ + case 1570: +/* Line 1792 of yacc.c */ +#line 10705 "gram.y" { (yyval.boolean) = TRUE; } -#line 36107 "gram.c" /* yacc.c:1646 */ break; - case 1446: -#line 9866 "gram.y" /* yacc.c:1646 */ + case 1571: +/* Line 1792 of yacc.c */ +#line 10706 "gram.y" { (yyval.boolean) = FALSE; } -#line 36113 "gram.c" /* yacc.c:1646 */ break; - case 1447: -#line 9870 "gram.y" /* yacc.c:1646 */ + case 1572: +/* Line 1792 of yacc.c */ +#line 10710 "gram.y" { (yyval.ival) = LockWaitError; } -#line 36119 "gram.c" /* yacc.c:1646 */ break; - case 1448: -#line 9871 "gram.y" /* yacc.c:1646 */ + case 1573: +/* Line 1792 of yacc.c */ +#line 10711 "gram.y" { (yyval.ival) = LockWaitSkip; } -#line 36125 "gram.c" /* yacc.c:1646 */ break; - case 1449: -#line 9872 "gram.y" /* yacc.c:1646 */ + case 1574: +/* Line 1792 of yacc.c */ +#line 10712 "gram.y" { (yyval.ival) = LockWaitBlock; } -#line 36131 "gram.c" /* yacc.c:1646 */ break; - case 1450: -#line 9888 "gram.y" /* yacc.c:1646 */ + case 1575: +/* Line 1792 of yacc.c */ +#line 10728 "gram.y" { UpdateStmt *n = makeNode(UpdateStmt); - n->relation = (yyvsp[-5].range); - n->targetList = (yyvsp[-3].list); - n->fromClause = (yyvsp[-2].list); - n->whereClause = (yyvsp[-1].node); - n->returningList = (yyvsp[0].list); - n->withClause = (yyvsp[-7].with); + n->relation = (yyvsp[(3) - (8)].range); + n->targetList = (yyvsp[(5) - (8)].list); + n->fromClause = (yyvsp[(6) - (8)].list); + n->whereClause = (yyvsp[(7) - (8)].node); + n->returningList = (yyvsp[(8) - (8)].list); + n->withClause = (yyvsp[(1) - (8)].with); (yyval.node) = (Node *)n; } -#line 36146 "gram.c" /* yacc.c:1646 */ - break; - - case 1451: -#line 9901 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 36152 "gram.c" /* yacc.c:1646 */ - break; - - case 1452: -#line 9902 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_concat((yyvsp[-2].list),(yyvsp[0].list)); } -#line 36158 "gram.c" /* yacc.c:1646 */ - break; - - case 1453: -#line 9906 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].target)); } -#line 36164 "gram.c" /* yacc.c:1646 */ break; - case 1454: -#line 9907 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 36170 "gram.c" /* yacc.c:1646 */ + case 1576: +/* Line 1792 of yacc.c */ +#line 10741 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 1455: -#line 9912 "gram.y" /* yacc.c:1646 */ - { - (yyval.target) = (yyvsp[-2].target); - (yyval.target)->val = (Node *) (yyvsp[0].node); - } -#line 36179 "gram.c" /* yacc.c:1646 */ + case 1577: +/* Line 1792 of yacc.c */ +#line 10742 "gram.y" + { (yyval.list) = list_concat((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].list)); } break; - case 1456: -#line 9928 "gram.y" /* yacc.c:1646 */ + case 1578: +/* Line 1792 of yacc.c */ +#line 10747 "gram.y" { - ListCell *col_cell; - ListCell *val_cell; - - /* - * Break the ctext_row apart, merge individual expressions - * into the destination ResTargets. This is semantically - * equivalent to, and much cheaper to process than, the - * general case. - */ - if (list_length((yyvsp[-3].list)) != list_length((yyvsp[0].list))) - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("number of columns does not match number of values"), - parser_errposition((yylsp[0])))); - forboth(col_cell, (yyvsp[-3].list), val_cell, (yyvsp[0].list)) - { - ResTarget *res_col = (ResTarget *) lfirst(col_cell); - Node *res_val = (Node *) lfirst(val_cell); - - res_col->val = res_val; - } - - (yyval.list) = (yyvsp[-3].list); + (yyvsp[(1) - (3)].target)->val = (Node *) (yyvsp[(3) - (3)].node); + (yyval.list) = list_make1((yyvsp[(1) - (3)].target)); } -#line 36209 "gram.c" /* yacc.c:1646 */ break; - case 1457: -#line 9954 "gram.y" /* yacc.c:1646 */ + case 1579: +/* Line 1792 of yacc.c */ +#line 10752 "gram.y" { - SubLink *sl = makeNode(SubLink); - int ncolumns = list_length((yyvsp[-3].list)); + int ncolumns = list_length((yyvsp[(2) - (5)].list)); int i = 1; ListCell *col_cell; - /* First, convert bare SelectStmt into a SubLink */ - sl->subLinkType = MULTIEXPR_SUBLINK; - sl->subLinkId = 0; /* will be assigned later */ - sl->testexpr = NULL; - sl->operName = NIL; - sl->subselect = (yyvsp[0].node); - sl->location = (yylsp[0]); - /* Create a MultiAssignRef source for each target */ - foreach(col_cell, (yyvsp[-3].list)) + foreach(col_cell, (yyvsp[(2) - (5)].list)) { ResTarget *res_col = (ResTarget *) lfirst(col_cell); MultiAssignRef *r = makeNode(MultiAssignRef); - r->source = (Node *) sl; + r->source = (Node *) (yyvsp[(5) - (5)].node); r->colno = i; r->ncolumns = ncolumns; res_col->val = (Node *) r; i++; } - (yyval.list) = (yyvsp[-3].list); + (yyval.list) = (yyvsp[(2) - (5)].list); } -#line 36243 "gram.c" /* yacc.c:1646 */ break; - case 1458: -#line 9987 "gram.y" /* yacc.c:1646 */ + case 1580: +/* Line 1792 of yacc.c */ +#line 10776 "gram.y" { (yyval.target) = makeNode(ResTarget); - (yyval.target)->name = (yyvsp[-1].str); - (yyval.target)->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.target)->name = (yyvsp[(1) - (2)].str); + (yyval.target)->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.target)->val = NULL; /* upper production sets this */ - (yyval.target)->location = (yylsp[-1]); + (yyval.target)->location = (yylsp[(1) - (2)]); } -#line 36255 "gram.c" /* yacc.c:1646 */ break; - case 1459: -#line 9997 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].target)); } -#line 36261 "gram.c" /* yacc.c:1646 */ + case 1581: +/* Line 1792 of yacc.c */ +#line 10786 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); } break; - case 1460: -#line 9998 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list),(yyvsp[0].target)); } -#line 36267 "gram.c" /* yacc.c:1646 */ + case 1582: +/* Line 1792 of yacc.c */ +#line 10787 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].target)); } break; - case 1461: -#line 10009 "gram.y" /* yacc.c:1646 */ + case 1583: +/* Line 1792 of yacc.c */ +#line 10798 "gram.y" { DeclareCursorStmt *n = makeNode(DeclareCursorStmt); - n->portalname = (yyvsp[-5].str); + n->portalname = (yyvsp[(2) - (7)].str); /* currently we always set FAST_PLAN option */ - n->options = (yyvsp[-4].ival) | (yyvsp[-2].ival) | CURSOR_OPT_FAST_PLAN; - n->query = (yyvsp[0].node); + n->options = (yyvsp[(3) - (7)].ival) | (yyvsp[(5) - (7)].ival) | CURSOR_OPT_FAST_PLAN; + n->query = (yyvsp[(7) - (7)].node); (yyval.node) = (Node *)n; } -#line 36280 "gram.c" /* yacc.c:1646 */ break; - case 1462: -#line 10019 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 36286 "gram.c" /* yacc.c:1646 */ + case 1584: +/* Line 1792 of yacc.c */ +#line 10808 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 1463: -#line 10022 "gram.y" /* yacc.c:1646 */ + case 1585: +/* Line 1792 of yacc.c */ +#line 10811 "gram.y" { (yyval.ival) = 0; } -#line 36292 "gram.c" /* yacc.c:1646 */ break; - case 1464: -#line 10023 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-2].ival) | CURSOR_OPT_NO_SCROLL; } -#line 36298 "gram.c" /* yacc.c:1646 */ + case 1586: +/* Line 1792 of yacc.c */ +#line 10812 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (3)].ival) | CURSOR_OPT_NO_SCROLL; } break; - case 1465: -#line 10024 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-1].ival) | CURSOR_OPT_SCROLL; } -#line 36304 "gram.c" /* yacc.c:1646 */ + case 1587: +/* Line 1792 of yacc.c */ +#line 10813 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_SCROLL; } break; - case 1466: -#line 10025 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-1].ival) | CURSOR_OPT_BINARY; } -#line 36310 "gram.c" /* yacc.c:1646 */ + case 1588: +/* Line 1792 of yacc.c */ +#line 10814 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_BINARY; } break; - case 1467: -#line 10026 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-1].ival) | CURSOR_OPT_INSENSITIVE; } -#line 36316 "gram.c" /* yacc.c:1646 */ + case 1589: +/* Line 1792 of yacc.c */ +#line 10815 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_INSENSITIVE; } break; - case 1468: -#line 10029 "gram.y" /* yacc.c:1646 */ + case 1590: +/* Line 1792 of yacc.c */ +#line 10818 "gram.y" { (yyval.ival) = 0; } -#line 36322 "gram.c" /* yacc.c:1646 */ break; - case 1469: -#line 10030 "gram.y" /* yacc.c:1646 */ + case 1591: +/* Line 1792 of yacc.c */ +#line 10819 "gram.y" { (yyval.ival) = CURSOR_OPT_HOLD; } -#line 36328 "gram.c" /* yacc.c:1646 */ break; - case 1470: -#line 10031 "gram.y" /* yacc.c:1646 */ + case 1592: +/* Line 1792 of yacc.c */ +#line 10820 "gram.y" { (yyval.ival) = 0; } -#line 36334 "gram.c" /* yacc.c:1646 */ break; - case 1473: -#line 10084 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 36340 "gram.c" /* yacc.c:1646 */ + case 1595: +/* Line 1792 of yacc.c */ +#line 10873 "gram.y" + { (yyval.node) = (yyvsp[(2) - (3)].node); } break; - case 1474: -#line 10085 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 36346 "gram.c" /* yacc.c:1646 */ + case 1596: +/* Line 1792 of yacc.c */ +#line 10874 "gram.y" + { (yyval.node) = (yyvsp[(2) - (3)].node); } break; - case 1475: -#line 10100 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36352 "gram.c" /* yacc.c:1646 */ + case 1597: +/* Line 1792 of yacc.c */ +#line 10889 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1476: -#line 10102 "gram.y" /* yacc.c:1646 */ + case 1598: +/* Line 1792 of yacc.c */ +#line 10891 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-1].node), (yyvsp[0].list), NIL, + insertSelectOptions((SelectStmt *) (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list), NIL, NULL, NULL, NULL, yyscanner); - (yyval.node) = (yyvsp[-1].node); + (yyval.node) = (yyvsp[(1) - (2)].node); } -#line 36363 "gram.c" /* yacc.c:1646 */ break; - case 1477: -#line 10109 "gram.y" /* yacc.c:1646 */ + case 1599: +/* Line 1792 of yacc.c */ +#line 10898 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[-1].list), - list_nth((yyvsp[0].list), 0), list_nth((yyvsp[0].list), 1), + insertSelectOptions((SelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(3) - (4)].list), + list_nth((yyvsp[(4) - (4)].list), 0), list_nth((yyvsp[(4) - (4)].list), 1), NULL, yyscanner); - (yyval.node) = (yyvsp[-3].node); + (yyval.node) = (yyvsp[(1) - (4)].node); } -#line 36375 "gram.c" /* yacc.c:1646 */ break; - case 1478: -#line 10117 "gram.y" /* yacc.c:1646 */ + case 1600: +/* Line 1792 of yacc.c */ +#line 10906 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[0].list), - list_nth((yyvsp[-1].list), 0), list_nth((yyvsp[-1].list), 1), + insertSelectOptions((SelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(4) - (4)].list), + list_nth((yyvsp[(3) - (4)].list), 0), list_nth((yyvsp[(3) - (4)].list), 1), NULL, yyscanner); - (yyval.node) = (yyvsp[-3].node); + (yyval.node) = (yyvsp[(1) - (4)].node); } -#line 36387 "gram.c" /* yacc.c:1646 */ break; - case 1479: -#line 10125 "gram.y" /* yacc.c:1646 */ + case 1601: +/* Line 1792 of yacc.c */ +#line 10914 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[0].node), NULL, NIL, + insertSelectOptions((SelectStmt *) (yyvsp[(2) - (2)].node), NULL, NIL, NULL, NULL, - (yyvsp[-1].with), + (yyvsp[(1) - (2)].with), yyscanner); - (yyval.node) = (yyvsp[0].node); + (yyval.node) = (yyvsp[(2) - (2)].node); } -#line 36399 "gram.c" /* yacc.c:1646 */ break; - case 1480: -#line 10133 "gram.y" /* yacc.c:1646 */ + case 1602: +/* Line 1792 of yacc.c */ +#line 10922 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-1].node), (yyvsp[0].list), NIL, + insertSelectOptions((SelectStmt *) (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].list), NIL, NULL, NULL, - (yyvsp[-2].with), + (yyvsp[(1) - (3)].with), yyscanner); - (yyval.node) = (yyvsp[-1].node); + (yyval.node) = (yyvsp[(2) - (3)].node); } -#line 36411 "gram.c" /* yacc.c:1646 */ break; - case 1481: -#line 10141 "gram.y" /* yacc.c:1646 */ + case 1603: +/* Line 1792 of yacc.c */ +#line 10930 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[-1].list), - list_nth((yyvsp[0].list), 0), list_nth((yyvsp[0].list), 1), - (yyvsp[-4].with), + insertSelectOptions((SelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(4) - (5)].list), + list_nth((yyvsp[(5) - (5)].list), 0), list_nth((yyvsp[(5) - (5)].list), 1), + (yyvsp[(1) - (5)].with), yyscanner); - (yyval.node) = (yyvsp[-3].node); + (yyval.node) = (yyvsp[(2) - (5)].node); } -#line 36423 "gram.c" /* yacc.c:1646 */ break; - case 1482: -#line 10149 "gram.y" /* yacc.c:1646 */ + case 1604: +/* Line 1792 of yacc.c */ +#line 10938 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[0].list), - list_nth((yyvsp[-1].list), 0), list_nth((yyvsp[-1].list), 1), - (yyvsp[-4].with), + insertSelectOptions((SelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list), + list_nth((yyvsp[(4) - (5)].list), 0), list_nth((yyvsp[(4) - (5)].list), 1), + (yyvsp[(1) - (5)].with), yyscanner); - (yyval.node) = (yyvsp[-3].node); + (yyval.node) = (yyvsp[(2) - (5)].node); } -#line 36435 "gram.c" /* yacc.c:1646 */ break; - case 1483: -#line 10159 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36441 "gram.c" /* yacc.c:1646 */ + case 1605: +/* Line 1792 of yacc.c */ +#line 10948 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1484: -#line 10160 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36447 "gram.c" /* yacc.c:1646 */ + case 1606: +/* Line 1792 of yacc.c */ +#line 10949 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1485: -#line 10190 "gram.y" /* yacc.c:1646 */ + case 1607: +/* Line 1792 of yacc.c */ +#line 10979 "gram.y" { SelectStmt *n = makeNode(SelectStmt); - n->targetList = (yyvsp[-6].list); - n->intoClause = (yyvsp[-5].into); - n->fromClause = (yyvsp[-4].list); - n->whereClause = (yyvsp[-3].node); - n->groupClause = (yyvsp[-2].list); - n->havingClause = (yyvsp[-1].node); - n->windowClause = (yyvsp[0].list); + n->targetList = (yyvsp[(3) - (9)].list); + n->intoClause = (yyvsp[(4) - (9)].into); + n->fromClause = (yyvsp[(5) - (9)].list); + n->whereClause = (yyvsp[(6) - (9)].node); + n->groupClause = (yyvsp[(7) - (9)].list); + n->havingClause = (yyvsp[(8) - (9)].node); + n->windowClause = (yyvsp[(9) - (9)].list); (yyval.node) = (Node *)n; } -#line 36463 "gram.c" /* yacc.c:1646 */ break; - case 1486: -#line 10204 "gram.y" /* yacc.c:1646 */ + case 1608: +/* Line 1792 of yacc.c */ +#line 10993 "gram.y" { SelectStmt *n = makeNode(SelectStmt); - n->distinctClause = (yyvsp[-7].list); - n->targetList = (yyvsp[-6].list); - n->intoClause = (yyvsp[-5].into); - n->fromClause = (yyvsp[-4].list); - n->whereClause = (yyvsp[-3].node); - n->groupClause = (yyvsp[-2].list); - n->havingClause = (yyvsp[-1].node); - n->windowClause = (yyvsp[0].list); + n->distinctClause = (yyvsp[(2) - (9)].list); + n->targetList = (yyvsp[(3) - (9)].list); + n->intoClause = (yyvsp[(4) - (9)].into); + n->fromClause = (yyvsp[(5) - (9)].list); + n->whereClause = (yyvsp[(6) - (9)].node); + n->groupClause = (yyvsp[(7) - (9)].list); + n->havingClause = (yyvsp[(8) - (9)].node); + n->windowClause = (yyvsp[(9) - (9)].list); (yyval.node) = (Node *)n; } -#line 36480 "gram.c" /* yacc.c:1646 */ break; - case 1487: -#line 10216 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36486 "gram.c" /* yacc.c:1646 */ + case 1609: +/* Line 1792 of yacc.c */ +#line 11005 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1488: -#line 10218 "gram.y" /* yacc.c:1646 */ + case 1610: +/* Line 1792 of yacc.c */ +#line 11007 "gram.y" { /* same as SELECT * FROM relation_expr */ ColumnRef *cr = makeNode(ColumnRef); @@ -36502,111 +40098,111 @@ yyreduce: rt->location = -1; n->targetList = list_make1(rt); - n->fromClause = list_make1((yyvsp[0].range)); + n->fromClause = list_make1((yyvsp[(2) - (2)].range)); (yyval.node) = (Node *)n; } -#line 36509 "gram.c" /* yacc.c:1646 */ break; - case 1489: -#line 10237 "gram.y" /* yacc.c:1646 */ + case 1611: +/* Line 1792 of yacc.c */ +#line 11026 "gram.y" { - (yyval.node) = makeSetOp(SETOP_UNION, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + (yyval.node) = makeSetOp(SETOP_UNION, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); } -#line 36517 "gram.c" /* yacc.c:1646 */ break; - case 1490: -#line 10241 "gram.y" /* yacc.c:1646 */ + case 1612: +/* Line 1792 of yacc.c */ +#line 11030 "gram.y" { - (yyval.node) = makeSetOp(SETOP_INTERSECT, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + (yyval.node) = makeSetOp(SETOP_INTERSECT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); } -#line 36525 "gram.c" /* yacc.c:1646 */ break; - case 1491: -#line 10245 "gram.y" /* yacc.c:1646 */ + case 1613: +/* Line 1792 of yacc.c */ +#line 11034 "gram.y" { - (yyval.node) = makeSetOp(SETOP_EXCEPT, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + (yyval.node) = makeSetOp(SETOP_EXCEPT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); } -#line 36533 "gram.c" /* yacc.c:1646 */ break; - case 1492: -#line 10262 "gram.y" /* yacc.c:1646 */ + case 1614: +/* Line 1792 of yacc.c */ +#line 11051 "gram.y" { (yyval.with) = makeNode(WithClause); - (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->ctes = (yyvsp[(2) - (2)].list); (yyval.with)->recursive = false; - (yyval.with)->location = (yylsp[-1]); + (yyval.with)->location = (yylsp[(1) - (2)]); } -#line 36544 "gram.c" /* yacc.c:1646 */ break; - case 1493: -#line 10269 "gram.y" /* yacc.c:1646 */ + case 1615: +/* Line 1792 of yacc.c */ +#line 11058 "gram.y" { (yyval.with) = makeNode(WithClause); - (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->ctes = (yyvsp[(2) - (2)].list); (yyval.with)->recursive = false; - (yyval.with)->location = (yylsp[-1]); + (yyval.with)->location = (yylsp[(1) - (2)]); } -#line 36555 "gram.c" /* yacc.c:1646 */ break; - case 1494: -#line 10276 "gram.y" /* yacc.c:1646 */ + case 1616: +/* Line 1792 of yacc.c */ +#line 11065 "gram.y" { (yyval.with) = makeNode(WithClause); - (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->ctes = (yyvsp[(3) - (3)].list); (yyval.with)->recursive = true; - (yyval.with)->location = (yylsp[-2]); + (yyval.with)->location = (yylsp[(1) - (3)]); } -#line 36566 "gram.c" /* yacc.c:1646 */ break; - case 1495: -#line 10285 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 36572 "gram.c" /* yacc.c:1646 */ + case 1617: +/* Line 1792 of yacc.c */ +#line 11074 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 1496: -#line 10286 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 36578 "gram.c" /* yacc.c:1646 */ + case 1618: +/* Line 1792 of yacc.c */ +#line 11075 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 1497: -#line 10290 "gram.y" /* yacc.c:1646 */ + case 1619: +/* Line 1792 of yacc.c */ +#line 11079 "gram.y" { CommonTableExpr *n = makeNode(CommonTableExpr); - n->ctename = (yyvsp[-5].str); - n->aliascolnames = (yyvsp[-4].list); - n->ctequery = (yyvsp[-1].node); - n->location = (yylsp[-5]); + n->ctename = (yyvsp[(1) - (6)].str); + n->aliascolnames = (yyvsp[(2) - (6)].list); + n->ctequery = (yyvsp[(5) - (6)].node); + n->location = (yylsp[(1) - (6)]); (yyval.node) = (Node *) n; } -#line 36591 "gram.c" /* yacc.c:1646 */ break; - case 1498: -#line 10301 "gram.y" /* yacc.c:1646 */ - { (yyval.with) = (yyvsp[0].with); } -#line 36597 "gram.c" /* yacc.c:1646 */ + case 1620: +/* Line 1792 of yacc.c */ +#line 11090 "gram.y" + { (yyval.with) = (yyvsp[(1) - (1)].with); } break; - case 1499: -#line 10302 "gram.y" /* yacc.c:1646 */ + case 1621: +/* Line 1792 of yacc.c */ +#line 11091 "gram.y" { (yyval.with) = NULL; } -#line 36603 "gram.c" /* yacc.c:1646 */ break; - case 1500: -#line 10307 "gram.y" /* yacc.c:1646 */ + case 1622: +/* Line 1792 of yacc.c */ +#line 11096 "gram.y" { (yyval.into) = makeNode(IntoClause); - (yyval.into)->rel = (yyvsp[0].range); + (yyval.into)->rel = (yyvsp[(2) - (2)].range); (yyval.into)->colNames = NIL; (yyval.into)->options = NIL; (yyval.into)->onCommit = ONCOMMIT_NOOP; @@ -36614,631 +40210,652 @@ yyreduce: (yyval.into)->viewQuery = NULL; (yyval.into)->skipData = false; } -#line 36618 "gram.c" /* yacc.c:1646 */ break; - case 1501: -#line 10318 "gram.y" /* yacc.c:1646 */ + case 1623: +/* Line 1792 of yacc.c */ +#line 11107 "gram.y" { (yyval.into) = NULL; } -#line 36624 "gram.c" /* yacc.c:1646 */ break; - case 1502: -#line 10327 "gram.y" /* yacc.c:1646 */ + case 1624: +/* Line 1792 of yacc.c */ +#line 11116 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 36633 "gram.c" /* yacc.c:1646 */ break; - case 1503: -#line 10332 "gram.y" /* yacc.c:1646 */ + case 1625: +/* Line 1792 of yacc.c */ +#line 11121 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 36642 "gram.c" /* yacc.c:1646 */ break; - case 1504: -#line 10337 "gram.y" /* yacc.c:1646 */ + case 1626: +/* Line 1792 of yacc.c */ +#line 11126 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 36651 "gram.c" /* yacc.c:1646 */ break; - case 1505: -#line 10342 "gram.y" /* yacc.c:1646 */ + case 1627: +/* Line 1792 of yacc.c */ +#line 11131 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 36660 "gram.c" /* yacc.c:1646 */ break; - case 1506: -#line 10347 "gram.y" /* yacc.c:1646 */ + case 1628: +/* Line 1792 of yacc.c */ +#line 11136 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[-3])))); - (yyval.range) = (yyvsp[0].range); + parser_errposition((yylsp[(1) - (4)])))); + (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 36672 "gram.c" /* yacc.c:1646 */ break; - case 1507: -#line 10355 "gram.y" /* yacc.c:1646 */ + case 1629: +/* Line 1792 of yacc.c */ +#line 11144 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[-3])))); - (yyval.range) = (yyvsp[0].range); + parser_errposition((yylsp[(1) - (4)])))); + (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 36684 "gram.c" /* yacc.c:1646 */ break; - case 1508: -#line 10363 "gram.y" /* yacc.c:1646 */ + case 1630: +/* Line 1792 of yacc.c */ +#line 11152 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_UNLOGGED; } -#line 36693 "gram.c" /* yacc.c:1646 */ break; - case 1509: -#line 10368 "gram.y" /* yacc.c:1646 */ + case 1631: +/* Line 1792 of yacc.c */ +#line 11157 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(2) - (2)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; } -#line 36702 "gram.c" /* yacc.c:1646 */ break; - case 1510: -#line 10373 "gram.y" /* yacc.c:1646 */ + case 1632: +/* Line 1792 of yacc.c */ +#line 11162 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(1) - (1)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; } -#line 36711 "gram.c" /* yacc.c:1646 */ break; - case 1511: -#line 10379 "gram.y" /* yacc.c:1646 */ + case 1633: +/* Line 1792 of yacc.c */ +#line 11168 "gram.y" {} -#line 36717 "gram.c" /* yacc.c:1646 */ break; - case 1512: -#line 10380 "gram.y" /* yacc.c:1646 */ + case 1634: +/* Line 1792 of yacc.c */ +#line 11169 "gram.y" {} -#line 36723 "gram.c" /* yacc.c:1646 */ break; - case 1513: -#line 10384 "gram.y" /* yacc.c:1646 */ + case 1635: +/* Line 1792 of yacc.c */ +#line 11173 "gram.y" { (yyval.boolean) = TRUE; } -#line 36729 "gram.c" /* yacc.c:1646 */ break; - case 1514: -#line 10385 "gram.y" /* yacc.c:1646 */ + case 1636: +/* Line 1792 of yacc.c */ +#line 11174 "gram.y" { (yyval.boolean) = FALSE; } -#line 36735 "gram.c" /* yacc.c:1646 */ break; - case 1515: -#line 10386 "gram.y" /* yacc.c:1646 */ + case 1637: +/* Line 1792 of yacc.c */ +#line 11175 "gram.y" { (yyval.boolean) = FALSE; } -#line 36741 "gram.c" /* yacc.c:1646 */ break; - case 1516: -#line 10393 "gram.y" /* yacc.c:1646 */ + case 1638: +/* Line 1792 of yacc.c */ +#line 11182 "gram.y" { (yyval.list) = list_make1(NIL); } -#line 36747 "gram.c" /* yacc.c:1646 */ break; - case 1517: -#line 10394 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 36753 "gram.c" /* yacc.c:1646 */ + case 1639: +/* Line 1792 of yacc.c */ +#line 11183 "gram.y" + { (yyval.list) = (yyvsp[(4) - (5)].list); } break; - case 1518: -#line 10398 "gram.y" /* yacc.c:1646 */ + case 1640: +/* Line 1792 of yacc.c */ +#line 11187 "gram.y" { (yyval.list) = NIL;} -#line 36759 "gram.c" /* yacc.c:1646 */ break; - case 1519: -#line 10399 "gram.y" /* yacc.c:1646 */ + case 1641: +/* Line 1792 of yacc.c */ +#line 11188 "gram.y" { (yyval.list) = NIL; } -#line 36765 "gram.c" /* yacc.c:1646 */ break; - case 1520: -#line 10403 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list);} -#line 36771 "gram.c" /* yacc.c:1646 */ + case 1642: +/* Line 1792 of yacc.c */ +#line 11192 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list);} break; - case 1521: -#line 10404 "gram.y" /* yacc.c:1646 */ + case 1643: +/* Line 1792 of yacc.c */ +#line 11193 "gram.y" { (yyval.list) = NIL; } -#line 36777 "gram.c" /* yacc.c:1646 */ break; - case 1522: -#line 10408 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 36783 "gram.c" /* yacc.c:1646 */ + case 1644: +/* Line 1792 of yacc.c */ +#line 11197 "gram.y" + { (yyval.list) = (yyvsp[(3) - (3)].list); } break; - case 1523: -#line 10412 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].sortby)); } -#line 36789 "gram.c" /* yacc.c:1646 */ + case 1645: +/* Line 1792 of yacc.c */ +#line 11201 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].sortby)); } break; - case 1524: -#line 10413 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].sortby)); } -#line 36795 "gram.c" /* yacc.c:1646 */ + case 1646: +/* Line 1792 of yacc.c */ +#line 11202 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].sortby)); } break; - case 1525: -#line 10417 "gram.y" /* yacc.c:1646 */ + case 1647: +/* Line 1792 of yacc.c */ +#line 11206 "gram.y" { (yyval.sortby) = makeNode(SortBy); - (yyval.sortby)->node = (yyvsp[-3].node); + (yyval.sortby)->node = (yyvsp[(1) - (4)].node); (yyval.sortby)->sortby_dir = SORTBY_USING; - (yyval.sortby)->sortby_nulls = (yyvsp[0].ival); - (yyval.sortby)->useOp = (yyvsp[-1].list); - (yyval.sortby)->location = (yylsp[-1]); + (yyval.sortby)->sortby_nulls = (yyvsp[(4) - (4)].ival); + (yyval.sortby)->useOp = (yyvsp[(3) - (4)].list); + (yyval.sortby)->location = (yylsp[(3) - (4)]); } -#line 36808 "gram.c" /* yacc.c:1646 */ break; - case 1526: -#line 10426 "gram.y" /* yacc.c:1646 */ + case 1648: +/* Line 1792 of yacc.c */ +#line 11215 "gram.y" { (yyval.sortby) = makeNode(SortBy); - (yyval.sortby)->node = (yyvsp[-2].node); - (yyval.sortby)->sortby_dir = (yyvsp[-1].ival); - (yyval.sortby)->sortby_nulls = (yyvsp[0].ival); + (yyval.sortby)->node = (yyvsp[(1) - (3)].node); + (yyval.sortby)->sortby_dir = (yyvsp[(2) - (3)].ival); + (yyval.sortby)->sortby_nulls = (yyvsp[(3) - (3)].ival); (yyval.sortby)->useOp = NIL; (yyval.sortby)->location = -1; /* no operator */ } -#line 36821 "gram.c" /* yacc.c:1646 */ break; - case 1527: -#line 10438 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[0].node), (yyvsp[-1].node)); } -#line 36827 "gram.c" /* yacc.c:1646 */ + case 1649: +/* Line 1792 of yacc.c */ +#line 11227 "gram.y" + { (yyval.list) = list_make2((yyvsp[(2) - (2)].node), (yyvsp[(1) - (2)].node)); } break; - case 1528: -#line 10439 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].node)); } -#line 36833 "gram.c" /* yacc.c:1646 */ + case 1650: +/* Line 1792 of yacc.c */ +#line 11228 "gram.y" + { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); } break; - case 1529: -#line 10440 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2(NULL, (yyvsp[0].node)); } -#line 36839 "gram.c" /* yacc.c:1646 */ + case 1651: +/* Line 1792 of yacc.c */ +#line 11229 "gram.y" + { (yyval.list) = list_make2(NULL, (yyvsp[(1) - (1)].node)); } break; - case 1530: -#line 10441 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[0].node), NULL); } -#line 36845 "gram.c" /* yacc.c:1646 */ + case 1652: +/* Line 1792 of yacc.c */ +#line 11230 "gram.y" + { (yyval.list) = list_make2((yyvsp[(1) - (1)].node), NULL); } break; - case 1531: -#line 10445 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 36851 "gram.c" /* yacc.c:1646 */ + case 1653: +/* Line 1792 of yacc.c */ +#line 11234 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 1532: -#line 10446 "gram.y" /* yacc.c:1646 */ + case 1654: +/* Line 1792 of yacc.c */ +#line 11235 "gram.y" { (yyval.list) = list_make2(NULL,NULL); } -#line 36857 "gram.c" /* yacc.c:1646 */ break; - case 1533: -#line 10451 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36863 "gram.c" /* yacc.c:1646 */ + case 1655: +/* Line 1792 of yacc.c */ +#line 11240 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; - case 1534: -#line 10453 "gram.y" /* yacc.c:1646 */ + case 1656: +/* Line 1792 of yacc.c */ +#line 11242 "gram.y" { /* Disabled because it was too confusing, bjm 2002-02-18 */ ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("LIMIT #,# syntax is not supported"), errhint("Use separate LIMIT and OFFSET clauses."), - parser_errposition((yylsp[-3])))); + parser_errposition((yylsp[(1) - (4)])))); } -#line 36876 "gram.c" /* yacc.c:1646 */ break; - case 1535: -#line 10463 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-2].node); } -#line 36882 "gram.c" /* yacc.c:1646 */ + case 1657: +/* Line 1792 of yacc.c */ +#line 11252 "gram.y" + { (yyval.node) = (yyvsp[(3) - (5)].node); } break; - case 1536: -#line 10468 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36888 "gram.c" /* yacc.c:1646 */ + case 1658: +/* Line 1792 of yacc.c */ +#line 11257 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; - case 1537: -#line 10471 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 36894 "gram.c" /* yacc.c:1646 */ + case 1659: +/* Line 1792 of yacc.c */ +#line 11260 "gram.y" + { (yyval.node) = (yyvsp[(2) - (3)].node); } break; - case 1538: -#line 10475 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36900 "gram.c" /* yacc.c:1646 */ + case 1660: +/* Line 1792 of yacc.c */ +#line 11264 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1539: -#line 10477 "gram.y" /* yacc.c:1646 */ + case 1661: +/* Line 1792 of yacc.c */ +#line 11266 "gram.y" { /* LIMIT ALL is represented as a NULL constant */ - (yyval.node) = makeNullAConst((yylsp[0])); + (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); } -#line 36909 "gram.c" /* yacc.c:1646 */ break; - case 1540: -#line 10484 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36915 "gram.c" /* yacc.c:1646 */ + case 1662: +/* Line 1792 of yacc.c */ +#line 11273 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1541: -#line 10494 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeIntConst((yyvsp[0].ival), (yylsp[0])); } -#line 36921 "gram.c" /* yacc.c:1646 */ + case 1663: +/* Line 1792 of yacc.c */ +#line 11283 "gram.y" + { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); } break; - case 1542: -#line 10495 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 36927 "gram.c" /* yacc.c:1646 */ + case 1664: +/* Line 1792 of yacc.c */ +#line 11284 "gram.y" + { (yyval.node) = (yyvsp[(2) - (3)].node); } break; - case 1543: -#line 10496 "gram.y" /* yacc.c:1646 */ + case 1665: +/* Line 1792 of yacc.c */ +#line 11285 "gram.y" { (yyval.node) = makeIntConst(1, -1); } -#line 36933 "gram.c" /* yacc.c:1646 */ break; - case 1544: -#line 10504 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36939 "gram.c" /* yacc.c:1646 */ + case 1666: +/* Line 1792 of yacc.c */ +#line 11293 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1545: -#line 10508 "gram.y" /* yacc.c:1646 */ + case 1667: +/* Line 1792 of yacc.c */ +#line 11297 "gram.y" { (yyval.ival) = 0; } -#line 36945 "gram.c" /* yacc.c:1646 */ break; - case 1546: -#line 10509 "gram.y" /* yacc.c:1646 */ + case 1668: +/* Line 1792 of yacc.c */ +#line 11298 "gram.y" { (yyval.ival) = 0; } -#line 36951 "gram.c" /* yacc.c:1646 */ break; - case 1547: -#line 10512 "gram.y" /* yacc.c:1646 */ + case 1669: +/* Line 1792 of yacc.c */ +#line 11301 "gram.y" { (yyval.ival) = 0; } -#line 36957 "gram.c" /* yacc.c:1646 */ break; - case 1548: -#line 10513 "gram.y" /* yacc.c:1646 */ + case 1670: +/* Line 1792 of yacc.c */ +#line 11302 "gram.y" { (yyval.ival) = 0; } -#line 36963 "gram.c" /* yacc.c:1646 */ break; - case 1549: -#line 10538 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 36969 "gram.c" /* yacc.c:1646 */ + case 1671: +/* Line 1792 of yacc.c */ +#line 11327 "gram.y" + { (yyval.list) = (yyvsp[(3) - (3)].list); } break; - case 1550: -#line 10539 "gram.y" /* yacc.c:1646 */ + case 1672: +/* Line 1792 of yacc.c */ +#line 11328 "gram.y" { (yyval.list) = NIL; } -#line 36975 "gram.c" /* yacc.c:1646 */ break; - case 1551: -#line 10543 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 36981 "gram.c" /* yacc.c:1646 */ + case 1673: +/* Line 1792 of yacc.c */ +#line 11332 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 1552: -#line 10544 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list),(yyvsp[0].node)); } -#line 36987 "gram.c" /* yacc.c:1646 */ + case 1674: +/* Line 1792 of yacc.c */ +#line 11333 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].node)); } break; - case 1553: -#line 10548 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36993 "gram.c" /* yacc.c:1646 */ + case 1675: +/* Line 1792 of yacc.c */ +#line 11337 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1554: -#line 10549 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36999 "gram.c" /* yacc.c:1646 */ + case 1676: +/* Line 1792 of yacc.c */ +#line 11338 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1555: -#line 10550 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 37005 "gram.c" /* yacc.c:1646 */ + case 1677: +/* Line 1792 of yacc.c */ +#line 11339 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1556: -#line 10551 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 37011 "gram.c" /* yacc.c:1646 */ + case 1678: +/* Line 1792 of yacc.c */ +#line 11340 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1557: -#line 10552 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 37017 "gram.c" /* yacc.c:1646 */ + case 1679: +/* Line 1792 of yacc.c */ +#line 11341 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1558: -#line 10557 "gram.y" /* yacc.c:1646 */ + case 1680: +/* Line 1792 of yacc.c */ +#line 11346 "gram.y" { - (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[-1])); + (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[(1) - (2)])); } -#line 37025 "gram.c" /* yacc.c:1646 */ break; - case 1559: -#line 10570 "gram.y" /* yacc.c:1646 */ + case 1681: +/* Line 1792 of yacc.c */ +#line 11359 "gram.y" { - (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_ROLLUP, (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_ROLLUP, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 37033 "gram.c" /* yacc.c:1646 */ break; - case 1560: -#line 10577 "gram.y" /* yacc.c:1646 */ + case 1682: +/* Line 1792 of yacc.c */ +#line 11366 "gram.y" { - (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_CUBE, (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_CUBE, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 37041 "gram.c" /* yacc.c:1646 */ break; - case 1561: -#line 10584 "gram.y" /* yacc.c:1646 */ + case 1683: +/* Line 1792 of yacc.c */ +#line 11373 "gram.y" { - (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_SETS, (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_SETS, (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); } -#line 37049 "gram.c" /* yacc.c:1646 */ break; - case 1562: -#line 10590 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 37055 "gram.c" /* yacc.c:1646 */ + case 1684: +/* Line 1792 of yacc.c */ +#line 11379 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; - case 1563: -#line 10591 "gram.y" /* yacc.c:1646 */ + case 1685: +/* Line 1792 of yacc.c */ +#line 11380 "gram.y" { (yyval.node) = NULL; } -#line 37061 "gram.c" /* yacc.c:1646 */ break; - case 1564: -#line 10595 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 37067 "gram.c" /* yacc.c:1646 */ + case 1686: +/* Line 1792 of yacc.c */ +#line 11384 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 1565: -#line 10596 "gram.y" /* yacc.c:1646 */ + case 1687: +/* Line 1792 of yacc.c */ +#line 11385 "gram.y" { (yyval.list) = NIL; } -#line 37073 "gram.c" /* yacc.c:1646 */ break; - case 1566: -#line 10600 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 37079 "gram.c" /* yacc.c:1646 */ + case 1688: +/* Line 1792 of yacc.c */ +#line 11389 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 1567: -#line 10601 "gram.y" /* yacc.c:1646 */ + case 1689: +/* Line 1792 of yacc.c */ +#line 11390 "gram.y" { (yyval.list) = NIL; } -#line 37085 "gram.c" /* yacc.c:1646 */ break; - case 1568: -#line 10605 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 37091 "gram.c" /* yacc.c:1646 */ + case 1690: +/* Line 1792 of yacc.c */ +#line 11394 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 1569: -#line 10606 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } -#line 37097 "gram.c" /* yacc.c:1646 */ + case 1691: +/* Line 1792 of yacc.c */ +#line 11395 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; - case 1570: -#line 10611 "gram.y" /* yacc.c:1646 */ + case 1692: +/* Line 1792 of yacc.c */ +#line 11400 "gram.y" { LockingClause *n = makeNode(LockingClause); - n->lockedRels = (yyvsp[-1].list); - n->strength = (yyvsp[-2].ival); - n->waitPolicy = (yyvsp[0].ival); + n->lockedRels = (yyvsp[(2) - (3)].list); + n->strength = (yyvsp[(1) - (3)].ival); + n->waitPolicy = (yyvsp[(3) - (3)].ival); (yyval.node) = (Node *) n; } -#line 37109 "gram.c" /* yacc.c:1646 */ break; - case 1571: -#line 10621 "gram.y" /* yacc.c:1646 */ + case 1693: +/* Line 1792 of yacc.c */ +#line 11410 "gram.y" { (yyval.ival) = LCS_FORUPDATE; } -#line 37115 "gram.c" /* yacc.c:1646 */ break; - case 1572: -#line 10622 "gram.y" /* yacc.c:1646 */ + case 1694: +/* Line 1792 of yacc.c */ +#line 11411 "gram.y" { (yyval.ival) = LCS_FORNOKEYUPDATE; } -#line 37121 "gram.c" /* yacc.c:1646 */ break; - case 1573: -#line 10623 "gram.y" /* yacc.c:1646 */ + case 1695: +/* Line 1792 of yacc.c */ +#line 11412 "gram.y" { (yyval.ival) = LCS_FORSHARE; } -#line 37127 "gram.c" /* yacc.c:1646 */ break; - case 1574: -#line 10624 "gram.y" /* yacc.c:1646 */ + case 1696: +/* Line 1792 of yacc.c */ +#line 11413 "gram.y" { (yyval.ival) = LCS_FORKEYSHARE; } -#line 37133 "gram.c" /* yacc.c:1646 */ break; - case 1575: -#line 10628 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 37139 "gram.c" /* yacc.c:1646 */ + case 1697: +/* Line 1792 of yacc.c */ +#line 11417 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 1576: -#line 10629 "gram.y" /* yacc.c:1646 */ + case 1698: +/* Line 1792 of yacc.c */ +#line 11418 "gram.y" { (yyval.list) = NIL; } -#line 37145 "gram.c" /* yacc.c:1646 */ break; - case 1577: -#line 10635 "gram.y" /* yacc.c:1646 */ + case 1699: +/* Line 1792 of yacc.c */ +#line 11429 "gram.y" { SelectStmt *n = makeNode(SelectStmt); - n->valuesLists = list_make1((yyvsp[0].list)); + n->valuesLists = list_make1((yyvsp[(3) - (4)].list)); (yyval.node) = (Node *) n; } -#line 37155 "gram.c" /* yacc.c:1646 */ break; - case 1578: -#line 10641 "gram.y" /* yacc.c:1646 */ + case 1700: +/* Line 1792 of yacc.c */ +#line 11435 "gram.y" { - SelectStmt *n = (SelectStmt *) (yyvsp[-2].node); - n->valuesLists = lappend(n->valuesLists, (yyvsp[0].list)); + SelectStmt *n = (SelectStmt *) (yyvsp[(1) - (5)].node); + n->valuesLists = lappend(n->valuesLists, (yyvsp[(4) - (5)].list)); (yyval.node) = (Node *) n; } -#line 37165 "gram.c" /* yacc.c:1646 */ break; - case 1579: -#line 10658 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 37171 "gram.c" /* yacc.c:1646 */ + case 1701: +/* Line 1792 of yacc.c */ +#line 11452 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 1580: -#line 10659 "gram.y" /* yacc.c:1646 */ + case 1702: +/* Line 1792 of yacc.c */ +#line 11453 "gram.y" { (yyval.list) = NIL; } -#line 37177 "gram.c" /* yacc.c:1646 */ break; - case 1581: -#line 10663 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 37183 "gram.c" /* yacc.c:1646 */ + case 1703: +/* Line 1792 of yacc.c */ +#line 11457 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 1582: -#line 10664 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 37189 "gram.c" /* yacc.c:1646 */ + case 1704: +/* Line 1792 of yacc.c */ +#line 11458 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 1583: -#line 10671 "gram.y" /* yacc.c:1646 */ + case 1705: +/* Line 1792 of yacc.c */ +#line 11465 "gram.y" { - (yyvsp[-1].range)->alias = (yyvsp[0].alias); - (yyval.node) = (Node *) (yyvsp[-1].range); + (yyvsp[(1) - (2)].range)->alias = (yyvsp[(2) - (2)].alias); + (yyval.node) = (Node *) (yyvsp[(1) - (2)].range); } -#line 37198 "gram.c" /* yacc.c:1646 */ break; - case 1584: -#line 10676 "gram.y" /* yacc.c:1646 */ + case 1706: +/* Line 1792 of yacc.c */ +#line 11470 "gram.y" { - RangeTableSample *n = (RangeTableSample *) (yyvsp[0].node); - (yyvsp[-2].range)->alias = (yyvsp[-1].alias); + RangeTableSample *n = (RangeTableSample *) (yyvsp[(3) - (3)].node); + (yyvsp[(1) - (3)].range)->alias = (yyvsp[(2) - (3)].alias); /* relation_expr goes inside the RangeTableSample node */ - n->relation = (Node *) (yyvsp[-2].range); + n->relation = (Node *) (yyvsp[(1) - (3)].range); (yyval.node) = (Node *) n; } -#line 37210 "gram.c" /* yacc.c:1646 */ break; - case 1585: -#line 10684 "gram.y" /* yacc.c:1646 */ + case 1707: +/* Line 1792 of yacc.c */ +#line 11478 "gram.y" { - RangeFunction *n = (RangeFunction *) (yyvsp[-1].node); - n->alias = linitial((yyvsp[0].list)); - n->coldeflist = lsecond((yyvsp[0].list)); + RangeFunction *n = (RangeFunction *) (yyvsp[(1) - (2)].node); + n->alias = linitial((yyvsp[(2) - (2)].list)); + n->coldeflist = lsecond((yyvsp[(2) - (2)].list)); (yyval.node) = (Node *) n; } -#line 37221 "gram.c" /* yacc.c:1646 */ break; - case 1586: -#line 10691 "gram.y" /* yacc.c:1646 */ + case 1708: +/* Line 1792 of yacc.c */ +#line 11485 "gram.y" { - RangeFunction *n = (RangeFunction *) (yyvsp[-1].node); + RangeFunction *n = (RangeFunction *) (yyvsp[(2) - (3)].node); n->lateral = true; - n->alias = linitial((yyvsp[0].list)); - n->coldeflist = lsecond((yyvsp[0].list)); + n->alias = linitial((yyvsp[(3) - (3)].list)); + n->coldeflist = lsecond((yyvsp[(3) - (3)].list)); (yyval.node) = (Node *) n; } -#line 37233 "gram.c" /* yacc.c:1646 */ break; - case 1587: -#line 10699 "gram.y" /* yacc.c:1646 */ + case 1709: +/* Line 1792 of yacc.c */ +#line 11493 "gram.y" + { + RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(1) - (2)].node); + n->alias = (yyvsp[(2) - (2)].alias); + (yyval.node) = (Node *) n; + } + break; + + case 1710: +/* Line 1792 of yacc.c */ +#line 11499 "gram.y" + { + RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(2) - (3)].node); + n->lateral = true; + n->alias = (yyvsp[(3) - (3)].alias); + (yyval.node) = (Node *) n; + } + break; + + case 1711: +/* Line 1792 of yacc.c */ +#line 11506 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = false; - n->subquery = (yyvsp[-1].node); - n->alias = (yyvsp[0].alias); + n->subquery = (yyvsp[(1) - (2)].node); + n->alias = (yyvsp[(2) - (2)].alias); /* * The SQL spec does not permit a subselect * () without an alias clause, @@ -37250,939 +40867,1146 @@ yyreduce: * However, it does seem like a good idea to emit * an error message that's better than "syntax error". */ - if ((yyvsp[0].alias) == NULL) + if ((yyvsp[(2) - (2)].alias) == NULL) { - if (IsA((yyvsp[-1].node), SelectStmt) && - ((SelectStmt *) (yyvsp[-1].node))->valuesLists) + if (IsA((yyvsp[(1) - (2)].node), SelectStmt) && + ((SelectStmt *) (yyvsp[(1) - (2)].node))->valuesLists) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("VALUES in FROM must have an alias"), errhint("For example, FROM (VALUES ...) [AS] foo."), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in FROM must have an alias"), errhint("For example, FROM (SELECT ...) [AS] foo."), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); } (yyval.node) = (Node *) n; } -#line 37272 "gram.c" /* yacc.c:1646 */ break; - case 1588: -#line 10734 "gram.y" /* yacc.c:1646 */ + case 1712: +/* Line 1792 of yacc.c */ +#line 11541 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = true; - n->subquery = (yyvsp[-1].node); - n->alias = (yyvsp[0].alias); - /* same coment as above */ - if ((yyvsp[0].alias) == NULL) + n->subquery = (yyvsp[(2) - (3)].node); + n->alias = (yyvsp[(3) - (3)].alias); + /* same comment as above */ + if ((yyvsp[(3) - (3)].alias) == NULL) { - if (IsA((yyvsp[-1].node), SelectStmt) && - ((SelectStmt *) (yyvsp[-1].node))->valuesLists) + if (IsA((yyvsp[(2) - (3)].node), SelectStmt) && + ((SelectStmt *) (yyvsp[(2) - (3)].node))->valuesLists) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("VALUES in FROM must have an alias"), errhint("For example, FROM (VALUES ...) [AS] foo."), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(2) - (3)])))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in FROM must have an alias"), errhint("For example, FROM (SELECT ...) [AS] foo."), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(2) - (3)])))); } (yyval.node) = (Node *) n; } -#line 37301 "gram.c" /* yacc.c:1646 */ break; - case 1589: -#line 10759 "gram.y" /* yacc.c:1646 */ + case 1713: +/* Line 1792 of yacc.c */ +#line 11566 "gram.y" { - (yyval.node) = (Node *) (yyvsp[0].jexpr); + (yyval.node) = (Node *) (yyvsp[(1) - (1)].jexpr); } -#line 37309 "gram.c" /* yacc.c:1646 */ break; - case 1590: -#line 10763 "gram.y" /* yacc.c:1646 */ + case 1714: +/* Line 1792 of yacc.c */ +#line 11570 "gram.y" { - (yyvsp[-2].jexpr)->alias = (yyvsp[0].alias); - (yyval.node) = (Node *) (yyvsp[-2].jexpr); + (yyvsp[(2) - (4)].jexpr)->alias = (yyvsp[(4) - (4)].alias); + (yyval.node) = (Node *) (yyvsp[(2) - (4)].jexpr); } -#line 37318 "gram.c" /* yacc.c:1646 */ break; - case 1591: -#line 10789 "gram.y" /* yacc.c:1646 */ + case 1715: +/* Line 1792 of yacc.c */ +#line 11596 "gram.y" { - (yyval.jexpr) = (yyvsp[-1].jexpr); + (yyval.jexpr) = (yyvsp[(2) - (3)].jexpr); } -#line 37326 "gram.c" /* yacc.c:1646 */ break; - case 1592: -#line 10793 "gram.y" /* yacc.c:1646 */ + case 1716: +/* Line 1792 of yacc.c */ +#line 11600 "gram.y" { /* CROSS JOIN is same as unqualified inner join */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; n->isNatural = FALSE; - n->larg = (yyvsp[-3].node); - n->rarg = (yyvsp[0].node); + n->larg = (yyvsp[(1) - (4)].node); + n->rarg = (yyvsp[(4) - (4)].node); n->usingClause = NIL; n->quals = NULL; (yyval.jexpr) = n; } -#line 37342 "gram.c" /* yacc.c:1646 */ break; - case 1593: -#line 10805 "gram.y" /* yacc.c:1646 */ + case 1717: +/* Line 1792 of yacc.c */ +#line 11612 "gram.y" { JoinExpr *n = makeNode(JoinExpr); - n->jointype = (yyvsp[-3].jtype); + n->jointype = (yyvsp[(2) - (5)].jtype); n->isNatural = FALSE; - n->larg = (yyvsp[-4].node); - n->rarg = (yyvsp[-1].node); - if ((yyvsp[0].node) != NULL && IsA((yyvsp[0].node), List)) - n->usingClause = (List *) (yyvsp[0].node); /* USING clause */ + n->larg = (yyvsp[(1) - (5)].node); + n->rarg = (yyvsp[(4) - (5)].node); + if ((yyvsp[(5) - (5)].node) != NULL && IsA((yyvsp[(5) - (5)].node), List)) + n->usingClause = (List *) (yyvsp[(5) - (5)].node); /* USING clause */ else - n->quals = (yyvsp[0].node); /* ON clause */ + n->quals = (yyvsp[(5) - (5)].node); /* ON clause */ (yyval.jexpr) = n; } -#line 37359 "gram.c" /* yacc.c:1646 */ break; - case 1594: -#line 10818 "gram.y" /* yacc.c:1646 */ + case 1718: +/* Line 1792 of yacc.c */ +#line 11625 "gram.y" { /* letting join_type reduce to empty doesn't work */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; n->isNatural = FALSE; - n->larg = (yyvsp[-3].node); - n->rarg = (yyvsp[-1].node); - if ((yyvsp[0].node) != NULL && IsA((yyvsp[0].node), List)) - n->usingClause = (List *) (yyvsp[0].node); /* USING clause */ + n->larg = (yyvsp[(1) - (4)].node); + n->rarg = (yyvsp[(3) - (4)].node); + if ((yyvsp[(4) - (4)].node) != NULL && IsA((yyvsp[(4) - (4)].node), List)) + n->usingClause = (List *) (yyvsp[(4) - (4)].node); /* USING clause */ else - n->quals = (yyvsp[0].node); /* ON clause */ + n->quals = (yyvsp[(4) - (4)].node); /* ON clause */ (yyval.jexpr) = n; } -#line 37377 "gram.c" /* yacc.c:1646 */ break; - case 1595: -#line 10832 "gram.y" /* yacc.c:1646 */ + case 1719: +/* Line 1792 of yacc.c */ +#line 11639 "gram.y" { JoinExpr *n = makeNode(JoinExpr); - n->jointype = (yyvsp[-2].jtype); + n->jointype = (yyvsp[(3) - (5)].jtype); n->isNatural = TRUE; - n->larg = (yyvsp[-4].node); - n->rarg = (yyvsp[0].node); + n->larg = (yyvsp[(1) - (5)].node); + n->rarg = (yyvsp[(5) - (5)].node); n->usingClause = NIL; /* figure out which columns later... */ n->quals = NULL; /* fill later */ (yyval.jexpr) = n; } -#line 37392 "gram.c" /* yacc.c:1646 */ break; - case 1596: -#line 10843 "gram.y" /* yacc.c:1646 */ + case 1720: +/* Line 1792 of yacc.c */ +#line 11650 "gram.y" { /* letting join_type reduce to empty doesn't work */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; n->isNatural = TRUE; - n->larg = (yyvsp[-3].node); - n->rarg = (yyvsp[0].node); + n->larg = (yyvsp[(1) - (4)].node); + n->rarg = (yyvsp[(4) - (4)].node); n->usingClause = NIL; /* figure out which columns later... */ n->quals = NULL; /* fill later */ (yyval.jexpr) = n; } -#line 37408 "gram.c" /* yacc.c:1646 */ break; - case 1597: -#line 10858 "gram.y" /* yacc.c:1646 */ + case 1721: +/* Line 1792 of yacc.c */ +#line 11665 "gram.y" { (yyval.alias) = makeNode(Alias); - (yyval.alias)->aliasname = (yyvsp[-3].str); - (yyval.alias)->colnames = (yyvsp[-1].list); + (yyval.alias)->aliasname = (yyvsp[(2) - (5)].str); + (yyval.alias)->colnames = (yyvsp[(4) - (5)].list); } -#line 37418 "gram.c" /* yacc.c:1646 */ break; - case 1598: -#line 10864 "gram.y" /* yacc.c:1646 */ + case 1722: +/* Line 1792 of yacc.c */ +#line 11671 "gram.y" { (yyval.alias) = makeNode(Alias); - (yyval.alias)->aliasname = (yyvsp[0].str); + (yyval.alias)->aliasname = (yyvsp[(2) - (2)].str); } -#line 37427 "gram.c" /* yacc.c:1646 */ break; - case 1599: -#line 10869 "gram.y" /* yacc.c:1646 */ + case 1723: +/* Line 1792 of yacc.c */ +#line 11676 "gram.y" { (yyval.alias) = makeNode(Alias); - (yyval.alias)->aliasname = (yyvsp[-3].str); - (yyval.alias)->colnames = (yyvsp[-1].list); + (yyval.alias)->aliasname = (yyvsp[(1) - (4)].str); + (yyval.alias)->colnames = (yyvsp[(3) - (4)].list); } -#line 37437 "gram.c" /* yacc.c:1646 */ break; - case 1600: -#line 10875 "gram.y" /* yacc.c:1646 */ + case 1724: +/* Line 1792 of yacc.c */ +#line 11682 "gram.y" { (yyval.alias) = makeNode(Alias); - (yyval.alias)->aliasname = (yyvsp[0].str); + (yyval.alias)->aliasname = (yyvsp[(1) - (1)].str); } -#line 37446 "gram.c" /* yacc.c:1646 */ break; - case 1601: -#line 10881 "gram.y" /* yacc.c:1646 */ - { (yyval.alias) = (yyvsp[0].alias); } -#line 37452 "gram.c" /* yacc.c:1646 */ + case 1725: +/* Line 1792 of yacc.c */ +#line 11688 "gram.y" + { (yyval.alias) = (yyvsp[(1) - (1)].alias); } break; - case 1602: -#line 10882 "gram.y" /* yacc.c:1646 */ + case 1726: +/* Line 1792 of yacc.c */ +#line 11689 "gram.y" { (yyval.alias) = NULL; } -#line 37458 "gram.c" /* yacc.c:1646 */ break; - case 1603: -#line 10891 "gram.y" /* yacc.c:1646 */ + case 1727: +/* Line 1792 of yacc.c */ +#line 11698 "gram.y" { - (yyval.list) = list_make2((yyvsp[0].alias), NIL); + (yyval.list) = list_make2((yyvsp[(1) - (1)].alias), NIL); } -#line 37466 "gram.c" /* yacc.c:1646 */ break; - case 1604: -#line 10895 "gram.y" /* yacc.c:1646 */ + case 1728: +/* Line 1792 of yacc.c */ +#line 11702 "gram.y" { - (yyval.list) = list_make2(NULL, (yyvsp[-1].list)); + (yyval.list) = list_make2(NULL, (yyvsp[(3) - (4)].list)); } -#line 37474 "gram.c" /* yacc.c:1646 */ break; - case 1605: -#line 10899 "gram.y" /* yacc.c:1646 */ + case 1729: +/* Line 1792 of yacc.c */ +#line 11706 "gram.y" { Alias *a = makeNode(Alias); - a->aliasname = (yyvsp[-3].str); - (yyval.list) = list_make2(a, (yyvsp[-1].list)); + a->aliasname = (yyvsp[(2) - (5)].str); + (yyval.list) = list_make2(a, (yyvsp[(4) - (5)].list)); } -#line 37484 "gram.c" /* yacc.c:1646 */ break; - case 1606: -#line 10905 "gram.y" /* yacc.c:1646 */ + case 1730: +/* Line 1792 of yacc.c */ +#line 11712 "gram.y" { Alias *a = makeNode(Alias); - a->aliasname = (yyvsp[-3].str); - (yyval.list) = list_make2(a, (yyvsp[-1].list)); + a->aliasname = (yyvsp[(1) - (4)].str); + (yyval.list) = list_make2(a, (yyvsp[(3) - (4)].list)); } -#line 37494 "gram.c" /* yacc.c:1646 */ break; - case 1607: -#line 10911 "gram.y" /* yacc.c:1646 */ + case 1731: +/* Line 1792 of yacc.c */ +#line 11718 "gram.y" { (yyval.list) = list_make2(NULL, NIL); } -#line 37502 "gram.c" /* yacc.c:1646 */ break; - case 1608: -#line 10916 "gram.y" /* yacc.c:1646 */ + case 1732: +/* Line 1792 of yacc.c */ +#line 11723 "gram.y" { (yyval.jtype) = JOIN_FULL; } -#line 37508 "gram.c" /* yacc.c:1646 */ break; - case 1609: -#line 10917 "gram.y" /* yacc.c:1646 */ + case 1733: +/* Line 1792 of yacc.c */ +#line 11724 "gram.y" { (yyval.jtype) = JOIN_LEFT; } -#line 37514 "gram.c" /* yacc.c:1646 */ break; - case 1610: -#line 10918 "gram.y" /* yacc.c:1646 */ + case 1734: +/* Line 1792 of yacc.c */ +#line 11725 "gram.y" { (yyval.jtype) = JOIN_RIGHT; } -#line 37520 "gram.c" /* yacc.c:1646 */ break; - case 1611: -#line 10919 "gram.y" /* yacc.c:1646 */ + case 1735: +/* Line 1792 of yacc.c */ +#line 11726 "gram.y" { (yyval.jtype) = JOIN_INNER; } -#line 37526 "gram.c" /* yacc.c:1646 */ break; - case 1612: -#line 10923 "gram.y" /* yacc.c:1646 */ + case 1736: +/* Line 1792 of yacc.c */ +#line 11730 "gram.y" { (yyval.node) = NULL; } -#line 37532 "gram.c" /* yacc.c:1646 */ break; - case 1613: -#line 10924 "gram.y" /* yacc.c:1646 */ + case 1737: +/* Line 1792 of yacc.c */ +#line 11731 "gram.y" { (yyval.node) = NULL; } -#line 37538 "gram.c" /* yacc.c:1646 */ break; - case 1614: -#line 10936 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[-1].list); } -#line 37544 "gram.c" /* yacc.c:1646 */ + case 1738: +/* Line 1792 of yacc.c */ +#line 11743 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(3) - (4)].list); } break; - case 1615: -#line 10937 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 37550 "gram.c" /* yacc.c:1646 */ + case 1739: +/* Line 1792 of yacc.c */ +#line 11744 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; - case 1616: -#line 10943 "gram.y" /* yacc.c:1646 */ + case 1740: +/* Line 1792 of yacc.c */ +#line 11750 "gram.y" { - /* default inheritance */ - (yyval.range) = (yyvsp[0].range); - (yyval.range)->inhOpt = INH_DEFAULT; + /* inheritance query, implicitly */ + (yyval.range) = (yyvsp[(1) - (1)].range); + (yyval.range)->inh = true; (yyval.range)->alias = NULL; } -#line 37561 "gram.c" /* yacc.c:1646 */ break; - case 1617: -#line 10950 "gram.y" /* yacc.c:1646 */ + case 1741: +/* Line 1792 of yacc.c */ +#line 11757 "gram.y" { - /* inheritance query */ - (yyval.range) = (yyvsp[-1].range); - (yyval.range)->inhOpt = INH_YES; + /* inheritance query, explicitly */ + (yyval.range) = (yyvsp[(1) - (2)].range); + (yyval.range)->inh = true; (yyval.range)->alias = NULL; } -#line 37572 "gram.c" /* yacc.c:1646 */ break; - case 1618: -#line 10957 "gram.y" /* yacc.c:1646 */ + case 1742: +/* Line 1792 of yacc.c */ +#line 11764 "gram.y" { /* no inheritance */ - (yyval.range) = (yyvsp[0].range); - (yyval.range)->inhOpt = INH_NO; + (yyval.range) = (yyvsp[(2) - (2)].range); + (yyval.range)->inh = false; (yyval.range)->alias = NULL; } -#line 37583 "gram.c" /* yacc.c:1646 */ break; - case 1619: -#line 10964 "gram.y" /* yacc.c:1646 */ + case 1743: +/* Line 1792 of yacc.c */ +#line 11771 "gram.y" { /* no inheritance, SQL99-style syntax */ - (yyval.range) = (yyvsp[-1].range); - (yyval.range)->inhOpt = INH_NO; + (yyval.range) = (yyvsp[(3) - (4)].range); + (yyval.range)->inh = false; (yyval.range)->alias = NULL; } -#line 37594 "gram.c" /* yacc.c:1646 */ break; - case 1620: -#line 10974 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].range)); } -#line 37600 "gram.c" /* yacc.c:1646 */ + case 1744: +/* Line 1792 of yacc.c */ +#line 11781 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); } break; - case 1621: -#line 10975 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].range)); } -#line 37606 "gram.c" /* yacc.c:1646 */ + case 1745: +/* Line 1792 of yacc.c */ +#line 11782 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); } break; - case 1622: -#line 10989 "gram.y" /* yacc.c:1646 */ + case 1746: +/* Line 1792 of yacc.c */ +#line 11796 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(1) - (1)].range); } -#line 37614 "gram.c" /* yacc.c:1646 */ break; - case 1623: -#line 10993 "gram.y" /* yacc.c:1646 */ + case 1747: +/* Line 1792 of yacc.c */ +#line 11800 "gram.y" { Alias *alias = makeNode(Alias); - alias->aliasname = (yyvsp[0].str); - (yyvsp[-1].range)->alias = alias; - (yyval.range) = (yyvsp[-1].range); + alias->aliasname = (yyvsp[(2) - (2)].str); + (yyvsp[(1) - (2)].range)->alias = alias; + (yyval.range) = (yyvsp[(1) - (2)].range); } -#line 37625 "gram.c" /* yacc.c:1646 */ break; - case 1624: -#line 11000 "gram.y" /* yacc.c:1646 */ + case 1748: +/* Line 1792 of yacc.c */ +#line 11807 "gram.y" { Alias *alias = makeNode(Alias); - alias->aliasname = (yyvsp[0].str); - (yyvsp[-2].range)->alias = alias; - (yyval.range) = (yyvsp[-2].range); + alias->aliasname = (yyvsp[(3) - (3)].str); + (yyvsp[(1) - (3)].range)->alias = alias; + (yyval.range) = (yyvsp[(1) - (3)].range); } -#line 37636 "gram.c" /* yacc.c:1646 */ break; - case 1625: -#line 11013 "gram.y" /* yacc.c:1646 */ + case 1749: +/* Line 1792 of yacc.c */ +#line 11820 "gram.y" { RangeTableSample *n = makeNode(RangeTableSample); /* n->relation will be filled in later */ - n->method = (yyvsp[-4].list); - n->args = (yyvsp[-2].list); - n->repeatable = (yyvsp[0].node); - n->location = (yylsp[-4]); + n->method = (yyvsp[(2) - (6)].list); + n->args = (yyvsp[(4) - (6)].list); + n->repeatable = (yyvsp[(6) - (6)].node); + n->location = (yylsp[(2) - (6)]); (yyval.node) = (Node *) n; } -#line 37650 "gram.c" /* yacc.c:1646 */ break; - case 1626: -#line 11025 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[-1].node); } -#line 37656 "gram.c" /* yacc.c:1646 */ + case 1750: +/* Line 1792 of yacc.c */ +#line 11832 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(3) - (4)].node); } break; - case 1627: -#line 11026 "gram.y" /* yacc.c:1646 */ + case 1751: +/* Line 1792 of yacc.c */ +#line 11833 "gram.y" { (yyval.node) = NULL; } -#line 37662 "gram.c" /* yacc.c:1646 */ break; - case 1628: -#line 11042 "gram.y" /* yacc.c:1646 */ + case 1752: +/* Line 1792 of yacc.c */ +#line 11849 "gram.y" { RangeFunction *n = makeNode(RangeFunction); n->lateral = false; - n->ordinality = (yyvsp[0].boolean); + n->ordinality = (yyvsp[(2) - (2)].boolean); n->is_rowsfrom = false; - n->functions = list_make1(list_make2((yyvsp[-1].node), NIL)); + n->functions = list_make1(list_make2((yyvsp[(1) - (2)].node), NIL)); /* alias and coldeflist are set by table_ref production */ (yyval.node) = (Node *) n; } -#line 37676 "gram.c" /* yacc.c:1646 */ break; - case 1629: -#line 11052 "gram.y" /* yacc.c:1646 */ + case 1753: +/* Line 1792 of yacc.c */ +#line 11859 "gram.y" { RangeFunction *n = makeNode(RangeFunction); n->lateral = false; - n->ordinality = (yyvsp[0].boolean); + n->ordinality = (yyvsp[(6) - (6)].boolean); n->is_rowsfrom = true; - n->functions = (yyvsp[-2].list); + n->functions = (yyvsp[(4) - (6)].list); /* alias and coldeflist are set by table_ref production */ (yyval.node) = (Node *) n; } -#line 37690 "gram.c" /* yacc.c:1646 */ break; - case 1630: -#line 11064 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].list)); } -#line 37696 "gram.c" /* yacc.c:1646 */ + case 1754: +/* Line 1792 of yacc.c */ +#line 11871 "gram.y" + { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list)); } break; - case 1631: -#line 11068 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].list)); } -#line 37702 "gram.c" /* yacc.c:1646 */ + case 1755: +/* Line 1792 of yacc.c */ +#line 11875 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); } break; - case 1632: -#line 11069 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } -#line 37708 "gram.c" /* yacc.c:1646 */ + case 1756: +/* Line 1792 of yacc.c */ +#line 11876 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; - case 1633: -#line 11072 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 37714 "gram.c" /* yacc.c:1646 */ + case 1757: +/* Line 1792 of yacc.c */ +#line 11879 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; - case 1634: -#line 11073 "gram.y" /* yacc.c:1646 */ + case 1758: +/* Line 1792 of yacc.c */ +#line 11880 "gram.y" { (yyval.list) = NIL; } -#line 37720 "gram.c" /* yacc.c:1646 */ break; - case 1635: -#line 11076 "gram.y" /* yacc.c:1646 */ + case 1759: +/* Line 1792 of yacc.c */ +#line 11883 "gram.y" { (yyval.boolean) = true; } -#line 37726 "gram.c" /* yacc.c:1646 */ break; - case 1636: -#line 11077 "gram.y" /* yacc.c:1646 */ + case 1760: +/* Line 1792 of yacc.c */ +#line 11884 "gram.y" { (yyval.boolean) = false; } -#line 37732 "gram.c" /* yacc.c:1646 */ break; - case 1637: -#line 11082 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 37738 "gram.c" /* yacc.c:1646 */ + case 1761: +/* Line 1792 of yacc.c */ +#line 11889 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; - case 1638: -#line 11083 "gram.y" /* yacc.c:1646 */ + case 1762: +/* Line 1792 of yacc.c */ +#line 11890 "gram.y" { (yyval.node) = NULL; } -#line 37744 "gram.c" /* yacc.c:1646 */ break; - case 1639: -#line 11088 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 37750 "gram.c" /* yacc.c:1646 */ + case 1763: +/* Line 1792 of yacc.c */ +#line 11895 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; - case 1640: -#line 11090 "gram.y" /* yacc.c:1646 */ + case 1764: +/* Line 1792 of yacc.c */ +#line 11897 "gram.y" { CurrentOfExpr *n = makeNode(CurrentOfExpr); /* cvarno is filled in by parse analysis */ - n->cursor_name = (yyvsp[0].str); + n->cursor_name = (yyvsp[(4) - (4)].str); n->cursor_param = 0; (yyval.node) = (Node *) n; } -#line 37762 "gram.c" /* yacc.c:1646 */ break; - case 1641: -#line 11097 "gram.y" /* yacc.c:1646 */ + case 1765: +/* Line 1792 of yacc.c */ +#line 11904 "gram.y" { (yyval.node) = NULL; } -#line 37768 "gram.c" /* yacc.c:1646 */ break; - case 1642: -#line 11102 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 37774 "gram.c" /* yacc.c:1646 */ + case 1766: +/* Line 1792 of yacc.c */ +#line 11909 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 1643: -#line 11103 "gram.y" /* yacc.c:1646 */ + case 1767: +/* Line 1792 of yacc.c */ +#line 11910 "gram.y" { (yyval.list) = NIL; } -#line 37780 "gram.c" /* yacc.c:1646 */ break; - case 1644: -#line 11108 "gram.y" /* yacc.c:1646 */ + case 1768: +/* Line 1792 of yacc.c */ +#line 11915 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 37788 "gram.c" /* yacc.c:1646 */ break; - case 1645: -#line 11112 "gram.y" /* yacc.c:1646 */ + case 1769: +/* Line 1792 of yacc.c */ +#line 11919 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 37796 "gram.c" /* yacc.c:1646 */ break; - case 1646: -#line 11118 "gram.y" /* yacc.c:1646 */ + case 1770: +/* Line 1792 of yacc.c */ +#line 11925 "gram.y" { ColumnDef *n = makeNode(ColumnDef); - n->colname = (yyvsp[-2].str); - n->typeName = (yyvsp[-1].typnam); + n->colname = (yyvsp[(1) - (3)].str); + n->typeName = (yyvsp[(2) - (3)].typnam); n->inhcount = 0; n->is_local = true; n->is_not_null = false; n->is_from_type = false; + n->is_from_parent = false; n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; - n->collClause = (CollateClause *) (yyvsp[0].node); + n->collClause = (CollateClause *) (yyvsp[(3) - (3)].node); n->collOid = InvalidOid; n->constraints = NIL; - n->location = (yylsp[-2]); + n->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *)n; } -#line 37818 "gram.c" /* yacc.c:1646 */ break; - case 1647: -#line 11148 "gram.y" /* yacc.c:1646 */ + case 1771: +/* Line 1792 of yacc.c */ +#line 11950 "gram.y" { - (yyval.typnam) = (yyvsp[-1].typnam); - (yyval.typnam)->arrayBounds = (yyvsp[0].list); + RangeTableFunc *n = makeNode(RangeTableFunc); + n->rowexpr = (yyvsp[(3) - (7)].node); + n->docexpr = (yyvsp[(4) - (7)].node); + n->columns = (yyvsp[(6) - (7)].list); + n->namespaces = NIL; + n->location = (yylsp[(1) - (7)]); + (yyval.node) = (Node *)n; } -#line 37827 "gram.c" /* yacc.c:1646 */ break; - case 1648: -#line 11153 "gram.y" /* yacc.c:1646 */ + case 1772: +/* Line 1792 of yacc.c */ +#line 11961 "gram.y" + { + RangeTableFunc *n = makeNode(RangeTableFunc); + n->rowexpr = (yyvsp[(8) - (12)].node); + n->docexpr = (yyvsp[(9) - (12)].node); + n->columns = (yyvsp[(11) - (12)].list); + n->namespaces = (yyvsp[(5) - (12)].list); + n->location = (yylsp[(1) - (12)]); + (yyval.node) = (Node *)n; + } + break; + + case 1773: +/* Line 1792 of yacc.c */ +#line 11972 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } + break; + + case 1774: +/* Line 1792 of yacc.c */ +#line 11973 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } + break; + + case 1775: +/* Line 1792 of yacc.c */ +#line 11978 "gram.y" + { + RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); + + fc->colname = (yyvsp[(1) - (2)].str); + fc->for_ordinality = false; + fc->typeName = (yyvsp[(2) - (2)].typnam); + fc->is_not_null = false; + fc->colexpr = NULL; + fc->coldefexpr = NULL; + fc->location = (yylsp[(1) - (2)]); + + (yyval.node) = (Node *) fc; + } + break; + + case 1776: +/* Line 1792 of yacc.c */ +#line 11992 "gram.y" + { + RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); + ListCell *option; + bool nullability_seen = false; + + fc->colname = (yyvsp[(1) - (3)].str); + fc->typeName = (yyvsp[(2) - (3)].typnam); + fc->for_ordinality = false; + fc->is_not_null = false; + fc->colexpr = NULL; + fc->coldefexpr = NULL; + fc->location = (yylsp[(1) - (3)]); + + foreach(option, (yyvsp[(3) - (3)].list)) + { + DefElem *defel = (DefElem *) lfirst(option); + + if (strcmp(defel->defname, "default") == 0) + { + if (fc->coldefexpr != NULL) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("only one DEFAULT value is allowed"), + parser_errposition(defel->location))); + fc->coldefexpr = defel->arg; + } + else if (strcmp(defel->defname, "path") == 0) + { + if (fc->colexpr != NULL) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("only one PATH value per column is allowed"), + parser_errposition(defel->location))); + fc->colexpr = defel->arg; + } + else if (strcmp(defel->defname, "is_not_null") == 0) + { + if (nullability_seen) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("conflicting or redundant NULL / NOT NULL declarations for column \"%s\"", fc->colname), + parser_errposition(defel->location))); + fc->is_not_null = intVal(defel->arg); + nullability_seen = true; + } + else + { + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("unrecognized column option \"%s\"", + defel->defname), + parser_errposition(defel->location))); + } + } + (yyval.node) = (Node *) fc; + } + break; + + case 1777: +/* Line 1792 of yacc.c */ +#line 12049 "gram.y" + { + RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); + + fc->colname = (yyvsp[(1) - (3)].str); + fc->for_ordinality = true; + /* other fields are ignored, initialized by makeNode */ + fc->location = (yylsp[(1) - (3)]); + + (yyval.node) = (Node *) fc; + } + break; + + case 1778: +/* Line 1792 of yacc.c */ +#line 12063 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } + break; + + case 1779: +/* Line 1792 of yacc.c */ +#line 12065 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } + break; + + case 1780: +/* Line 1792 of yacc.c */ +#line 12070 "gram.y" + { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } + break; + + case 1781: +/* Line 1792 of yacc.c */ +#line 12072 "gram.y" + { (yyval.defelt) = makeDefElem("default", (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } + break; + + case 1782: +/* Line 1792 of yacc.c */ +#line 12074 "gram.y" + { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeInteger(true), (yylsp[(1) - (2)])); } + break; + + case 1783: +/* Line 1792 of yacc.c */ +#line 12076 "gram.y" + { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeInteger(false), (yylsp[(1) - (1)])); } + break; + + case 1784: +/* Line 1792 of yacc.c */ +#line 12081 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); } + break; + + case 1785: +/* Line 1792 of yacc.c */ +#line 12083 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); } + break; + + case 1786: +/* Line 1792 of yacc.c */ +#line 12088 "gram.y" + { + (yyval.target) = makeNode(ResTarget); + (yyval.target)->name = (yyvsp[(3) - (3)].str); + (yyval.target)->indirection = NIL; + (yyval.target)->val = (yyvsp[(1) - (3)].node); + (yyval.target)->location = (yylsp[(1) - (3)]); + } + break; + + case 1787: +/* Line 1792 of yacc.c */ +#line 12096 "gram.y" + { + (yyval.target) = makeNode(ResTarget); + (yyval.target)->name = NULL; + (yyval.target)->indirection = NIL; + (yyval.target)->val = (yyvsp[(2) - (2)].node); + (yyval.target)->location = (yylsp[(1) - (2)]); + } + break; + + case 1788: +/* Line 1792 of yacc.c */ +#line 12116 "gram.y" + { + (yyval.typnam) = (yyvsp[(1) - (2)].typnam); + (yyval.typnam)->arrayBounds = (yyvsp[(2) - (2)].list); + } + break; + + case 1789: +/* Line 1792 of yacc.c */ +#line 12121 "gram.y" { - (yyval.typnam) = (yyvsp[-1].typnam); - (yyval.typnam)->arrayBounds = (yyvsp[0].list); + (yyval.typnam) = (yyvsp[(2) - (3)].typnam); + (yyval.typnam)->arrayBounds = (yyvsp[(3) - (3)].list); (yyval.typnam)->setof = TRUE; } -#line 37837 "gram.c" /* yacc.c:1646 */ break; - case 1649: -#line 11160 "gram.y" /* yacc.c:1646 */ + case 1790: +/* Line 1792 of yacc.c */ +#line 12128 "gram.y" { - (yyval.typnam) = (yyvsp[-4].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[-1].ival))); + (yyval.typnam) = (yyvsp[(1) - (5)].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(4) - (5)].ival))); } -#line 37846 "gram.c" /* yacc.c:1646 */ break; - case 1650: -#line 11165 "gram.y" /* yacc.c:1646 */ + case 1791: +/* Line 1792 of yacc.c */ +#line 12133 "gram.y" { - (yyval.typnam) = (yyvsp[-4].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[-1].ival))); + (yyval.typnam) = (yyvsp[(2) - (6)].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(5) - (6)].ival))); (yyval.typnam)->setof = TRUE; } -#line 37856 "gram.c" /* yacc.c:1646 */ break; - case 1651: -#line 11171 "gram.y" /* yacc.c:1646 */ + case 1792: +/* Line 1792 of yacc.c */ +#line 12139 "gram.y" { - (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); } -#line 37865 "gram.c" /* yacc.c:1646 */ break; - case 1652: -#line 11176 "gram.y" /* yacc.c:1646 */ + case 1793: +/* Line 1792 of yacc.c */ +#line 12144 "gram.y" { - (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam) = (yyvsp[(2) - (3)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); (yyval.typnam)->setof = TRUE; } -#line 37875 "gram.c" /* yacc.c:1646 */ break; - case 1653: -#line 11185 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), makeInteger(-1)); } -#line 37881 "gram.c" /* yacc.c:1646 */ + case 1794: +/* Line 1792 of yacc.c */ +#line 12153 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeInteger(-1)); } break; - case 1654: -#line 11187 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-3].list), makeInteger((yyvsp[-1].ival))); } -#line 37887 "gram.c" /* yacc.c:1646 */ + case 1795: +/* Line 1792 of yacc.c */ +#line 12155 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (4)].list), makeInteger((yyvsp[(3) - (4)].ival))); } break; - case 1655: -#line 11189 "gram.y" /* yacc.c:1646 */ + case 1796: +/* Line 1792 of yacc.c */ +#line 12157 "gram.y" { (yyval.list) = NIL; } -#line 37893 "gram.c" /* yacc.c:1646 */ break; - case 1656: -#line 11193 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 37899 "gram.c" /* yacc.c:1646 */ + case 1797: +/* Line 1792 of yacc.c */ +#line 12161 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; - case 1657: -#line 11194 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 37905 "gram.c" /* yacc.c:1646 */ + case 1798: +/* Line 1792 of yacc.c */ +#line 12162 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; - case 1658: -#line 11195 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 37911 "gram.c" /* yacc.c:1646 */ + case 1799: +/* Line 1792 of yacc.c */ +#line 12163 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; - case 1659: -#line 11196 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 37917 "gram.c" /* yacc.c:1646 */ + case 1800: +/* Line 1792 of yacc.c */ +#line 12164 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; - case 1660: -#line 11197 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 37923 "gram.c" /* yacc.c:1646 */ + case 1801: +/* Line 1792 of yacc.c */ +#line 12165 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; - case 1661: -#line 11199 "gram.y" /* yacc.c:1646 */ + case 1802: +/* Line 1792 of yacc.c */ +#line 12167 "gram.y" { - (yyval.typnam) = (yyvsp[-1].typnam); - (yyval.typnam)->typmods = (yyvsp[0].list); + (yyval.typnam) = (yyvsp[(1) - (2)].typnam); + (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); } -#line 37932 "gram.c" /* yacc.c:1646 */ break; - case 1662: -#line 11204 "gram.y" /* yacc.c:1646 */ + case 1803: +/* Line 1792 of yacc.c */ +#line 12172 "gram.y" { - (yyval.typnam) = (yyvsp[-3].typnam); + (yyval.typnam) = (yyvsp[(1) - (4)].typnam); (yyval.typnam)->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), - makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); } -#line 37942 "gram.c" /* yacc.c:1646 */ break; - case 1663: -#line 11223 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 37948 "gram.c" /* yacc.c:1646 */ + case 1804: +/* Line 1792 of yacc.c */ +#line 12191 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; - case 1664: -#line 11224 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 37954 "gram.c" /* yacc.c:1646 */ + case 1805: +/* Line 1792 of yacc.c */ +#line 12192 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; - case 1665: -#line 11225 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 37960 "gram.c" /* yacc.c:1646 */ + case 1806: +/* Line 1792 of yacc.c */ +#line 12193 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; - case 1666: -#line 11226 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 37966 "gram.c" /* yacc.c:1646 */ + case 1807: +/* Line 1792 of yacc.c */ +#line 12194 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; - case 1667: -#line 11238 "gram.y" /* yacc.c:1646 */ + case 1808: +/* Line 1792 of yacc.c */ +#line 12206 "gram.y" { - (yyval.typnam) = makeTypeName((yyvsp[-1].str)); - (yyval.typnam)->typmods = (yyvsp[0].list); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam) = makeTypeName((yyvsp[(1) - (2)].str)); + (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 37976 "gram.c" /* yacc.c:1646 */ break; - case 1668: -#line 11244 "gram.y" /* yacc.c:1646 */ + case 1809: +/* Line 1792 of yacc.c */ +#line 12212 "gram.y" { - (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-2].str)), (yyvsp[-1].list))); - (yyval.typnam)->typmods = (yyvsp[0].list); - (yyval.typnam)->location = (yylsp[-2]); + (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(2) - (3)].list))); + (yyval.typnam)->typmods = (yyvsp[(3) - (3)].list); + (yyval.typnam)->location = (yylsp[(1) - (3)]); } -#line 37986 "gram.c" /* yacc.c:1646 */ break; - case 1669: -#line 11251 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 37992 "gram.c" /* yacc.c:1646 */ + case 1810: +/* Line 1792 of yacc.c */ +#line 12219 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 1670: -#line 11252 "gram.y" /* yacc.c:1646 */ + case 1811: +/* Line 1792 of yacc.c */ +#line 12220 "gram.y" { (yyval.list) = NIL; } -#line 37998 "gram.c" /* yacc.c:1646 */ break; - case 1671: -#line 11259 "gram.y" /* yacc.c:1646 */ + case 1812: +/* Line 1792 of yacc.c */ +#line 12227 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 38007 "gram.c" /* yacc.c:1646 */ break; - case 1672: -#line 11264 "gram.y" /* yacc.c:1646 */ + case 1813: +/* Line 1792 of yacc.c */ +#line 12232 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 38016 "gram.c" /* yacc.c:1646 */ break; - case 1673: -#line 11269 "gram.y" /* yacc.c:1646 */ + case 1814: +/* Line 1792 of yacc.c */ +#line 12237 "gram.y" { (yyval.typnam) = SystemTypeName("int2"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 38025 "gram.c" /* yacc.c:1646 */ break; - case 1674: -#line 11274 "gram.y" /* yacc.c:1646 */ + case 1815: +/* Line 1792 of yacc.c */ +#line 12242 "gram.y" { (yyval.typnam) = SystemTypeName("int8"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 38034 "gram.c" /* yacc.c:1646 */ break; - case 1675: -#line 11279 "gram.y" /* yacc.c:1646 */ + case 1816: +/* Line 1792 of yacc.c */ +#line 12247 "gram.y" { (yyval.typnam) = SystemTypeName("float4"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 38043 "gram.c" /* yacc.c:1646 */ break; - case 1676: -#line 11284 "gram.y" /* yacc.c:1646 */ + case 1817: +/* Line 1792 of yacc.c */ +#line 12252 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam) = (yyvsp[(2) - (2)].typnam); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 38052 "gram.c" /* yacc.c:1646 */ break; - case 1677: -#line 11289 "gram.y" /* yacc.c:1646 */ + case 1818: +/* Line 1792 of yacc.c */ +#line 12257 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 38061 "gram.c" /* yacc.c:1646 */ break; - case 1678: -#line 11294 "gram.y" /* yacc.c:1646 */ + case 1819: +/* Line 1792 of yacc.c */ +#line 12262 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[0].list); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 38071 "gram.c" /* yacc.c:1646 */ break; - case 1679: -#line 11300 "gram.y" /* yacc.c:1646 */ + case 1820: +/* Line 1792 of yacc.c */ +#line 12268 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[0].list); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 38081 "gram.c" /* yacc.c:1646 */ break; - case 1680: -#line 11306 "gram.y" /* yacc.c:1646 */ + case 1821: +/* Line 1792 of yacc.c */ +#line 12274 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[0].list); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 38091 "gram.c" /* yacc.c:1646 */ break; - case 1681: -#line 11312 "gram.y" /* yacc.c:1646 */ + case 1822: +/* Line 1792 of yacc.c */ +#line 12280 "gram.y" { (yyval.typnam) = SystemTypeName("bool"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 38100 "gram.c" /* yacc.c:1646 */ break; - case 1682: -#line 11319 "gram.y" /* yacc.c:1646 */ + case 1823: +/* Line 1792 of yacc.c */ +#line 12287 "gram.y" { /* * Check FLOAT() precision limits assuming IEEE floating * types - thomas 1997-09-18 */ - if ((yyvsp[-1].ival) < 1) + if ((yyvsp[(2) - (3)].ival) < 1) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("precision for type float must be at least 1 bit"), - parser_errposition((yylsp[-1])))); - else if ((yyvsp[-1].ival) <= 24) + parser_errposition((yylsp[(2) - (3)])))); + else if ((yyvsp[(2) - (3)].ival) <= 24) (yyval.typnam) = SystemTypeName("float4"); - else if ((yyvsp[-1].ival) <= 53) + else if ((yyvsp[(2) - (3)].ival) <= 53) (yyval.typnam) = SystemTypeName("float8"); else ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("precision for type float must be less than 54 bits"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(2) - (3)])))); } -#line 38125 "gram.c" /* yacc.c:1646 */ break; - case 1683: -#line 11340 "gram.y" /* yacc.c:1646 */ + case 1824: +/* Line 1792 of yacc.c */ +#line 12308 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); } -#line 38133 "gram.c" /* yacc.c:1646 */ break; - case 1684: -#line 11350 "gram.y" /* yacc.c:1646 */ + case 1825: +/* Line 1792 of yacc.c */ +#line 12318 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 38141 "gram.c" /* yacc.c:1646 */ break; - case 1685: -#line 11354 "gram.y" /* yacc.c:1646 */ + case 1826: +/* Line 1792 of yacc.c */ +#line 12322 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 38149 "gram.c" /* yacc.c:1646 */ break; - case 1686: -#line 11362 "gram.y" /* yacc.c:1646 */ + case 1827: +/* Line 1792 of yacc.c */ +#line 12330 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 38157 "gram.c" /* yacc.c:1646 */ break; - case 1687: -#line 11366 "gram.y" /* yacc.c:1646 */ + case 1828: +/* Line 1792 of yacc.c */ +#line 12334 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); (yyval.typnam)->typmods = NIL; } -#line 38166 "gram.c" /* yacc.c:1646 */ break; - case 1688: -#line 11374 "gram.y" /* yacc.c:1646 */ + case 1829: +/* Line 1792 of yacc.c */ +#line 12342 "gram.y" { char *typname; - typname = (yyvsp[-3].boolean) ? "varbit" : "bit"; + typname = (yyvsp[(2) - (5)].boolean) ? "varbit" : "bit"; (yyval.typnam) = SystemTypeName(typname); - (yyval.typnam)->typmods = (yyvsp[-1].list); - (yyval.typnam)->location = (yylsp[-4]); + (yyval.typnam)->typmods = (yyvsp[(4) - (5)].list); + (yyval.typnam)->location = (yylsp[(1) - (5)]); } -#line 38179 "gram.c" /* yacc.c:1646 */ break; - case 1689: -#line 11386 "gram.y" /* yacc.c:1646 */ + case 1830: +/* Line 1792 of yacc.c */ +#line 12354 "gram.y" { /* bit defaults to bit(1), varbit to no limit */ - if ((yyvsp[0].boolean)) + if ((yyvsp[(2) - (2)].boolean)) { (yyval.typnam) = SystemTypeName("varbit"); } @@ -38191,37 +42015,37 @@ yyreduce: (yyval.typnam) = SystemTypeName("bit"); (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); } - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 38197 "gram.c" /* yacc.c:1646 */ break; - case 1690: -#line 11407 "gram.y" /* yacc.c:1646 */ + case 1831: +/* Line 1792 of yacc.c */ +#line 12375 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 38205 "gram.c" /* yacc.c:1646 */ break; - case 1691: -#line 11411 "gram.y" /* yacc.c:1646 */ + case 1832: +/* Line 1792 of yacc.c */ +#line 12379 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 38213 "gram.c" /* yacc.c:1646 */ break; - case 1692: -#line 11417 "gram.y" /* yacc.c:1646 */ + case 1833: +/* Line 1792 of yacc.c */ +#line 12385 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 38221 "gram.c" /* yacc.c:1646 */ break; - case 1693: -#line 11421 "gram.y" /* yacc.c:1646 */ + case 1834: +/* Line 1792 of yacc.c */ +#line 12389 "gram.y" { /* Length was not specified so allow to be unrestricted. * This handles problems with fixed-length (bpchar) strings @@ -38229,898 +42053,878 @@ yyreduce: * of one, but should not be constrained if the length * was not specified. */ - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); (yyval.typnam)->typmods = NIL; } -#line 38236 "gram.c" /* yacc.c:1646 */ break; - case 1694: -#line 11434 "gram.y" /* yacc.c:1646 */ + case 1835: +/* Line 1792 of yacc.c */ +#line 12402 "gram.y" { - if (((yyvsp[0].str) != NULL) && (strcmp((yyvsp[0].str), "sql_text") != 0)) - (yyvsp[-4].str) = psprintf("%s_%s", (yyvsp[-4].str), (yyvsp[0].str)); - - (yyval.typnam) = SystemTypeName((yyvsp[-4].str)); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); - (yyval.typnam)->location = (yylsp[-4]); + (yyval.typnam) = SystemTypeName((yyvsp[(1) - (4)].str)); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); + (yyval.typnam)->location = (yylsp[(1) - (4)]); } -#line 38249 "gram.c" /* yacc.c:1646 */ break; - case 1695: -#line 11445 "gram.y" /* yacc.c:1646 */ + case 1836: +/* Line 1792 of yacc.c */ +#line 12410 "gram.y" { - if (((yyvsp[0].str) != NULL) && (strcmp((yyvsp[0].str), "sql_text") != 0)) - (yyvsp[-1].str) = psprintf("%s_%s", (yyvsp[-1].str), (yyvsp[0].str)); - - (yyval.typnam) = SystemTypeName((yyvsp[-1].str)); - + (yyval.typnam) = SystemTypeName((yyvsp[(1) - (1)].str)); /* char defaults to char(1), varchar to no limit */ - if (strcmp((yyvsp[-1].str), "bpchar") == 0) + if (strcmp((yyvsp[(1) - (1)].str), "bpchar") == 0) (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); - - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 38266 "gram.c" /* yacc.c:1646 */ break; - case 1696: -#line 11460 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } -#line 38272 "gram.c" /* yacc.c:1646 */ + case 1837: +/* Line 1792 of yacc.c */ +#line 12420 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; } break; - case 1697: -#line 11462 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } -#line 38278 "gram.c" /* yacc.c:1646 */ + case 1838: +/* Line 1792 of yacc.c */ +#line 12422 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; } break; - case 1698: -#line 11464 "gram.y" /* yacc.c:1646 */ + case 1839: +/* Line 1792 of yacc.c */ +#line 12424 "gram.y" { (yyval.str) = "varchar"; } -#line 38284 "gram.c" /* yacc.c:1646 */ break; - case 1699: -#line 11466 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } -#line 38290 "gram.c" /* yacc.c:1646 */ + case 1840: +/* Line 1792 of yacc.c */ +#line 12426 "gram.y" + { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; } break; - case 1700: -#line 11468 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } -#line 38296 "gram.c" /* yacc.c:1646 */ + case 1841: +/* Line 1792 of yacc.c */ +#line 12428 "gram.y" + { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; } break; - case 1701: -#line 11470 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } -#line 38302 "gram.c" /* yacc.c:1646 */ + case 1842: +/* Line 1792 of yacc.c */ +#line 12430 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; } break; - case 1702: -#line 11474 "gram.y" /* yacc.c:1646 */ + case 1843: +/* Line 1792 of yacc.c */ +#line 12434 "gram.y" { (yyval.boolean) = TRUE; } -#line 38308 "gram.c" /* yacc.c:1646 */ break; - case 1703: -#line 11475 "gram.y" /* yacc.c:1646 */ + case 1844: +/* Line 1792 of yacc.c */ +#line 12435 "gram.y" { (yyval.boolean) = FALSE; } -#line 38314 "gram.c" /* yacc.c:1646 */ - break; - - case 1704: -#line 11479 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 38320 "gram.c" /* yacc.c:1646 */ - break; - - case 1705: -#line 11480 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = NULL; } -#line 38326 "gram.c" /* yacc.c:1646 */ break; - case 1706: -#line 11488 "gram.y" /* yacc.c:1646 */ + case 1845: +/* Line 1792 of yacc.c */ +#line 12443 "gram.y" { - if ((yyvsp[0].boolean)) + if ((yyvsp[(5) - (5)].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); else (yyval.typnam) = SystemTypeName("timestamp"); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); - (yyval.typnam)->location = (yylsp[-4]); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); + (yyval.typnam)->location = (yylsp[(1) - (5)]); } -#line 38339 "gram.c" /* yacc.c:1646 */ break; - case 1707: -#line 11497 "gram.y" /* yacc.c:1646 */ + case 1846: +/* Line 1792 of yacc.c */ +#line 12452 "gram.y" { - if ((yyvsp[0].boolean)) + if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); else (yyval.typnam) = SystemTypeName("timestamp"); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 38351 "gram.c" /* yacc.c:1646 */ break; - case 1708: -#line 11505 "gram.y" /* yacc.c:1646 */ + case 1847: +/* Line 1792 of yacc.c */ +#line 12460 "gram.y" { - if ((yyvsp[0].boolean)) + if ((yyvsp[(5) - (5)].boolean)) (yyval.typnam) = SystemTypeName("timetz"); else (yyval.typnam) = SystemTypeName("time"); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); - (yyval.typnam)->location = (yylsp[-4]); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); + (yyval.typnam)->location = (yylsp[(1) - (5)]); } -#line 38364 "gram.c" /* yacc.c:1646 */ break; - case 1709: -#line 11514 "gram.y" /* yacc.c:1646 */ + case 1848: +/* Line 1792 of yacc.c */ +#line 12469 "gram.y" { - if ((yyvsp[0].boolean)) + if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timetz"); else (yyval.typnam) = SystemTypeName("time"); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 38376 "gram.c" /* yacc.c:1646 */ break; - case 1710: -#line 11525 "gram.y" /* yacc.c:1646 */ + case 1849: +/* Line 1792 of yacc.c */ +#line 12480 "gram.y" { (yyval.typnam) = SystemTypeName("interval"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 38385 "gram.c" /* yacc.c:1646 */ break; - case 1711: -#line 11532 "gram.y" /* yacc.c:1646 */ + case 1850: +/* Line 1792 of yacc.c */ +#line 12487 "gram.y" { (yyval.boolean) = TRUE; } -#line 38391 "gram.c" /* yacc.c:1646 */ break; - case 1712: -#line 11533 "gram.y" /* yacc.c:1646 */ + case 1851: +/* Line 1792 of yacc.c */ +#line 12488 "gram.y" { (yyval.boolean) = FALSE; } -#line 38397 "gram.c" /* yacc.c:1646 */ break; - case 1713: -#line 11534 "gram.y" /* yacc.c:1646 */ + case 1852: +/* Line 1792 of yacc.c */ +#line 12489 "gram.y" { (yyval.boolean) = FALSE; } -#line 38403 "gram.c" /* yacc.c:1646 */ break; - case 1714: -#line 11539 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[0]))); } -#line 38409 "gram.c" /* yacc.c:1646 */ + case 1853: +/* Line 1792 of yacc.c */ +#line 12494 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[(1) - (1)]))); } break; - case 1715: -#line 11541 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[0]))); } -#line 38415 "gram.c" /* yacc.c:1646 */ + case 1854: +/* Line 1792 of yacc.c */ +#line 12496 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[(1) - (1)]))); } break; - case 1716: -#line 11543 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[0]))); } -#line 38421 "gram.c" /* yacc.c:1646 */ + case 1855: +/* Line 1792 of yacc.c */ +#line 12498 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[(1) - (1)]))); } break; - case 1717: -#line 11545 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[0]))); } -#line 38427 "gram.c" /* yacc.c:1646 */ + case 1856: +/* Line 1792 of yacc.c */ +#line 12500 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[(1) - (1)]))); } break; - case 1718: -#line 11547 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[0]))); } -#line 38433 "gram.c" /* yacc.c:1646 */ + case 1857: +/* Line 1792 of yacc.c */ +#line 12502 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[(1) - (1)]))); } break; - case 1719: -#line 11549 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 38439 "gram.c" /* yacc.c:1646 */ + case 1858: +/* Line 1792 of yacc.c */ +#line 12504 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 1720: -#line 11551 "gram.y" /* yacc.c:1646 */ + case 1859: +/* Line 1792 of yacc.c */ +#line 12506 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | - INTERVAL_MASK(MONTH), (yylsp[-2]))); + INTERVAL_MASK(MONTH), (yylsp[(1) - (3)]))); } -#line 38448 "gram.c" /* yacc.c:1646 */ break; - case 1721: -#line 11556 "gram.y" /* yacc.c:1646 */ + case 1860: +/* Line 1792 of yacc.c */ +#line 12511 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | - INTERVAL_MASK(HOUR), (yylsp[-2]))); + INTERVAL_MASK(HOUR), (yylsp[(1) - (3)]))); } -#line 38457 "gram.c" /* yacc.c:1646 */ break; - case 1722: -#line 11561 "gram.y" /* yacc.c:1646 */ + case 1861: +/* Line 1792 of yacc.c */ +#line 12516 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE), (yylsp[-2]))); + INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); } -#line 38467 "gram.c" /* yacc.c:1646 */ break; - case 1723: -#line 11567 "gram.y" /* yacc.c:1646 */ + case 1862: +/* Line 1792 of yacc.c */ +#line 12522 "gram.y" { - (yyval.list) = (yyvsp[0].list); + (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[-2])); + INTERVAL_MASK(SECOND), (yylsp[(1) - (3)])); } -#line 38479 "gram.c" /* yacc.c:1646 */ break; - case 1724: -#line 11575 "gram.y" /* yacc.c:1646 */ + case 1863: +/* Line 1792 of yacc.c */ +#line 12530 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE), (yylsp[-2]))); + INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); } -#line 38488 "gram.c" /* yacc.c:1646 */ break; - case 1725: -#line 11580 "gram.y" /* yacc.c:1646 */ + case 1864: +/* Line 1792 of yacc.c */ +#line 12535 "gram.y" { - (yyval.list) = (yyvsp[0].list); + (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[-2])); + INTERVAL_MASK(SECOND), (yylsp[(1) - (3)])); } -#line 38499 "gram.c" /* yacc.c:1646 */ break; - case 1726: -#line 11587 "gram.y" /* yacc.c:1646 */ + case 1865: +/* Line 1792 of yacc.c */ +#line 12542 "gram.y" { - (yyval.list) = (yyvsp[0].list); + (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[-2])); + INTERVAL_MASK(SECOND), (yylsp[(1) - (3)])); } -#line 38509 "gram.c" /* yacc.c:1646 */ break; - case 1727: -#line 11593 "gram.y" /* yacc.c:1646 */ + case 1866: +/* Line 1792 of yacc.c */ +#line 12548 "gram.y" { (yyval.list) = NIL; } -#line 38515 "gram.c" /* yacc.c:1646 */ break; - case 1728: -#line 11598 "gram.y" /* yacc.c:1646 */ + case 1867: +/* Line 1792 of yacc.c */ +#line 12553 "gram.y" { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[0]))); + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (1)]))); } -#line 38523 "gram.c" /* yacc.c:1646 */ break; - case 1729: -#line 11602 "gram.y" /* yacc.c:1646 */ + case 1868: +/* Line 1792 of yacc.c */ +#line 12557 "gram.y" { - (yyval.list) = list_make2(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[-3])), - makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + (yyval.list) = list_make2(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (4)])), + makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); } -#line 38532 "gram.c" /* yacc.c:1646 */ break; - case 1730: -#line 11637 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 38538 "gram.c" /* yacc.c:1646 */ + case 1869: +/* Line 1792 of yacc.c */ +#line 12592 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1731: -#line 11639 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam), (yylsp[-1])); } -#line 38544 "gram.c" /* yacc.c:1646 */ + case 1870: +/* Line 1792 of yacc.c */ +#line 12594 "gram.y" + { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); } break; - case 1732: -#line 11641 "gram.y" /* yacc.c:1646 */ + case 1871: +/* Line 1792 of yacc.c */ +#line 12596 "gram.y" { CollateClause *n = makeNode(CollateClause); - n->arg = (yyvsp[-2].node); - n->collname = (yyvsp[0].list); - n->location = (yylsp[-1]); + n->arg = (yyvsp[(1) - (3)].node); + n->collname = (yyvsp[(3) - (3)].list); + n->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *) n; } -#line 38556 "gram.c" /* yacc.c:1646 */ break; - case 1733: -#line 11649 "gram.y" /* yacc.c:1646 */ + case 1872: +/* Line 1792 of yacc.c */ +#line 12604 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("timezone"), - list_make2((yyvsp[0].node), (yyvsp[-4].node)), - (yylsp[-3])); + list_make2((yyvsp[(5) - (5)].node), (yyvsp[(1) - (5)].node)), + (yylsp[(2) - (5)])); } -#line 38566 "gram.c" /* yacc.c:1646 */ break; - case 1734: -#line 11664 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } -#line 38572 "gram.c" /* yacc.c:1646 */ + case 1873: +/* Line 1792 of yacc.c */ +#line 12619 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; - case 1735: -#line 11666 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } -#line 38578 "gram.c" /* yacc.c:1646 */ + case 1874: +/* Line 1792 of yacc.c */ +#line 12621 "gram.y" + { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; - case 1736: -#line 11668 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38584 "gram.c" /* yacc.c:1646 */ + case 1875: +/* Line 1792 of yacc.c */ +#line 12623 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1737: -#line 11670 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38590 "gram.c" /* yacc.c:1646 */ + case 1876: +/* Line 1792 of yacc.c */ +#line 12625 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1738: -#line 11672 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38596 "gram.c" /* yacc.c:1646 */ + case 1877: +/* Line 1792 of yacc.c */ +#line 12627 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1739: -#line 11674 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38602 "gram.c" /* yacc.c:1646 */ + case 1878: +/* Line 1792 of yacc.c */ +#line 12629 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1740: -#line 11676 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38608 "gram.c" /* yacc.c:1646 */ + case 1879: +/* Line 1792 of yacc.c */ +#line 12631 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1741: -#line 11678 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38614 "gram.c" /* yacc.c:1646 */ + case 1880: +/* Line 1792 of yacc.c */ +#line 12633 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1742: -#line 11680 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38620 "gram.c" /* yacc.c:1646 */ + case 1881: +/* Line 1792 of yacc.c */ +#line 12635 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1743: -#line 11682 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38626 "gram.c" /* yacc.c:1646 */ + case 1882: +/* Line 1792 of yacc.c */ +#line 12637 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1744: -#line 11684 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38632 "gram.c" /* yacc.c:1646 */ + case 1883: +/* Line 1792 of yacc.c */ +#line 12639 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1745: -#line 11686 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38638 "gram.c" /* yacc.c:1646 */ + case 1884: +/* Line 1792 of yacc.c */ +#line 12641 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1746: -#line 11688 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38644 "gram.c" /* yacc.c:1646 */ + case 1885: +/* Line 1792 of yacc.c */ +#line 12643 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1747: -#line 11690 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38650 "gram.c" /* yacc.c:1646 */ + case 1886: +/* Line 1792 of yacc.c */ +#line 12645 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1748: -#line 11693 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38656 "gram.c" /* yacc.c:1646 */ + case 1887: +/* Line 1792 of yacc.c */ +#line 12648 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1749: -#line 11695 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), NULL, (yyvsp[0].node), (yylsp[-1])); } -#line 38662 "gram.c" /* yacc.c:1646 */ + case 1888: +/* Line 1792 of yacc.c */ +#line 12650 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; - case 1750: -#line 11697 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[0].list), (yyvsp[-1].node), NULL, (yylsp[0])); } -#line 38668 "gram.c" /* yacc.c:1646 */ + case 1889: +/* Line 1792 of yacc.c */ +#line 12652 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); } break; - case 1751: -#line 11700 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeAndExpr((yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38674 "gram.c" /* yacc.c:1646 */ + case 1890: +/* Line 1792 of yacc.c */ +#line 12655 "gram.y" + { (yyval.node) = makeAndExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1752: -#line 11702 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeOrExpr((yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 38680 "gram.c" /* yacc.c:1646 */ + case 1891: +/* Line 1792 of yacc.c */ +#line 12657 "gram.y" + { (yyval.node) = makeOrExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1753: -#line 11704 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeNotExpr((yyvsp[0].node), (yylsp[-1])); } -#line 38686 "gram.c" /* yacc.c:1646 */ + case 1892: +/* Line 1792 of yacc.c */ +#line 12659 "gram.y" + { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; - case 1754: -#line 11706 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeNotExpr((yyvsp[0].node), (yylsp[-1])); } -#line 38692 "gram.c" /* yacc.c:1646 */ + case 1893: +/* Line 1792 of yacc.c */ +#line 12661 "gram.y" + { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; - case 1755: -#line 11709 "gram.y" /* yacc.c:1646 */ + case 1894: +/* Line 1792 of yacc.c */ +#line 12664 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "~~", - (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } -#line 38701 "gram.c" /* yacc.c:1646 */ break; - case 1756: -#line 11714 "gram.y" /* yacc.c:1646 */ + case 1895: +/* Line 1792 of yacc.c */ +#line 12669 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-3])); + list_make2((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), + (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "~~", - (yyvsp[-4].node), (Node *) n, (yylsp[-3])); + (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); } -#line 38713 "gram.c" /* yacc.c:1646 */ break; - case 1757: -#line 11722 "gram.y" /* yacc.c:1646 */ + case 1896: +/* Line 1792 of yacc.c */ +#line 12677 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "!~~", - (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); } -#line 38722 "gram.c" /* yacc.c:1646 */ break; - case 1758: -#line 11727 "gram.y" /* yacc.c:1646 */ + case 1897: +/* Line 1792 of yacc.c */ +#line 12682 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-4])); + list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), + (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "!~~", - (yyvsp[-5].node), (Node *) n, (yylsp[-4])); + (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); } -#line 38734 "gram.c" /* yacc.c:1646 */ break; - case 1759: -#line 11735 "gram.y" /* yacc.c:1646 */ + case 1898: +/* Line 1792 of yacc.c */ +#line 12690 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "~~*", - (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } -#line 38743 "gram.c" /* yacc.c:1646 */ break; - case 1760: -#line 11740 "gram.y" /* yacc.c:1646 */ + case 1899: +/* Line 1792 of yacc.c */ +#line 12695 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-3])); + list_make2((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), + (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "~~*", - (yyvsp[-4].node), (Node *) n, (yylsp[-3])); + (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); } -#line 38755 "gram.c" /* yacc.c:1646 */ break; - case 1761: -#line 11748 "gram.y" /* yacc.c:1646 */ + case 1900: +/* Line 1792 of yacc.c */ +#line 12703 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "!~~*", - (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); } -#line 38764 "gram.c" /* yacc.c:1646 */ break; - case 1762: -#line 11753 "gram.y" /* yacc.c:1646 */ + case 1901: +/* Line 1792 of yacc.c */ +#line 12708 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-4])); + list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), + (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "!~~*", - (yyvsp[-5].node), (Node *) n, (yylsp[-4])); + (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); } -#line 38776 "gram.c" /* yacc.c:1646 */ break; - case 1763: -#line 11762 "gram.y" /* yacc.c:1646 */ + case 1902: +/* Line 1792 of yacc.c */ +#line 12717 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[0].node), makeNullAConst(-1)), - (yylsp[-2])); + list_make2((yyvsp[(4) - (4)].node), makeNullAConst(-1)), + (yylsp[(2) - (4)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "~", - (yyvsp[-3].node), (Node *) n, (yylsp[-2])); + (yyvsp[(1) - (4)].node), (Node *) n, (yylsp[(2) - (4)])); } -#line 38788 "gram.c" /* yacc.c:1646 */ break; - case 1764: -#line 11770 "gram.y" /* yacc.c:1646 */ + case 1903: +/* Line 1792 of yacc.c */ +#line 12725 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-4])); + list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), + (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "~", - (yyvsp[-5].node), (Node *) n, (yylsp[-4])); + (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); } -#line 38800 "gram.c" /* yacc.c:1646 */ break; - case 1765: -#line 11778 "gram.y" /* yacc.c:1646 */ + case 1904: +/* Line 1792 of yacc.c */ +#line 12733 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[0].node), makeNullAConst(-1)), - (yylsp[-3])); + list_make2((yyvsp[(5) - (5)].node), makeNullAConst(-1)), + (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "!~", - (yyvsp[-4].node), (Node *) n, (yylsp[-3])); + (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); } -#line 38812 "gram.c" /* yacc.c:1646 */ break; - case 1766: -#line 11786 "gram.y" /* yacc.c:1646 */ + case 1905: +/* Line 1792 of yacc.c */ +#line 12741 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-5])); + list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), + (yylsp[(2) - (7)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "!~", - (yyvsp[-6].node), (Node *) n, (yylsp[-5])); + (yyvsp[(1) - (7)].node), (Node *) n, (yylsp[(2) - (7)])); } -#line 38824 "gram.c" /* yacc.c:1646 */ break; - case 1767: -#line 11804 "gram.y" /* yacc.c:1646 */ + case 1906: +/* Line 1792 of yacc.c */ +#line 12759 "gram.y" { NullTest *n = makeNode(NullTest); - n->arg = (Expr *) (yyvsp[-2].node); + n->arg = (Expr *) (yyvsp[(1) - (3)].node); n->nulltesttype = IS_NULL; - n->location = (yylsp[-1]); + n->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)n; } -#line 38836 "gram.c" /* yacc.c:1646 */ break; - case 1768: -#line 11812 "gram.y" /* yacc.c:1646 */ + case 1907: +/* Line 1792 of yacc.c */ +#line 12767 "gram.y" { NullTest *n = makeNode(NullTest); - n->arg = (Expr *) (yyvsp[-1].node); + n->arg = (Expr *) (yyvsp[(1) - (2)].node); n->nulltesttype = IS_NULL; - n->location = (yylsp[0]); + n->location = (yylsp[(2) - (2)]); (yyval.node) = (Node *)n; } -#line 38848 "gram.c" /* yacc.c:1646 */ break; - case 1769: -#line 11820 "gram.y" /* yacc.c:1646 */ + case 1908: +/* Line 1792 of yacc.c */ +#line 12775 "gram.y" { NullTest *n = makeNode(NullTest); - n->arg = (Expr *) (yyvsp[-3].node); + n->arg = (Expr *) (yyvsp[(1) - (4)].node); n->nulltesttype = IS_NOT_NULL; - n->location = (yylsp[-2]); + n->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)n; } -#line 38860 "gram.c" /* yacc.c:1646 */ break; - case 1770: -#line 11828 "gram.y" /* yacc.c:1646 */ + case 1909: +/* Line 1792 of yacc.c */ +#line 12783 "gram.y" { NullTest *n = makeNode(NullTest); - n->arg = (Expr *) (yyvsp[-1].node); + n->arg = (Expr *) (yyvsp[(1) - (2)].node); n->nulltesttype = IS_NOT_NULL; - n->location = (yylsp[0]); + n->location = (yylsp[(2) - (2)]); (yyval.node) = (Node *)n; } -#line 38872 "gram.c" /* yacc.c:1646 */ break; - case 1771: -#line 11836 "gram.y" /* yacc.c:1646 */ + case 1910: +/* Line 1792 of yacc.c */ +#line 12791 "gram.y" { - if (list_length((yyvsp[-2].list)) != 2) + if (list_length((yyvsp[(1) - (3)].list)) != 2) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("wrong number of parameters on left side of OVERLAPS expression"), - parser_errposition((yylsp[-2])))); - if (list_length((yyvsp[0].list)) != 2) + parser_errposition((yylsp[(1) - (3)])))); + if (list_length((yyvsp[(3) - (3)].list)) != 2) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("wrong number of parameters on right side of OVERLAPS expression"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(3) - (3)])))); (yyval.node) = (Node *) makeFuncCall(SystemFuncName("overlaps"), - list_concat((yyvsp[-2].list), (yyvsp[0].list)), - (yylsp[-1])); + list_concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)), + (yylsp[(2) - (3)])); } -#line 38892 "gram.c" /* yacc.c:1646 */ break; - case 1772: -#line 11852 "gram.y" /* yacc.c:1646 */ + case 1911: +/* Line 1792 of yacc.c */ +#line 12807 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-2].node); + b->arg = (Expr *) (yyvsp[(1) - (3)].node); b->booltesttype = IS_TRUE; - b->location = (yylsp[-1]); + b->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)b; } -#line 38904 "gram.c" /* yacc.c:1646 */ break; - case 1773: -#line 11860 "gram.y" /* yacc.c:1646 */ + case 1912: +/* Line 1792 of yacc.c */ +#line 12815 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-3].node); + b->arg = (Expr *) (yyvsp[(1) - (4)].node); b->booltesttype = IS_NOT_TRUE; - b->location = (yylsp[-2]); + b->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)b; } -#line 38916 "gram.c" /* yacc.c:1646 */ break; - case 1774: -#line 11868 "gram.y" /* yacc.c:1646 */ + case 1913: +/* Line 1792 of yacc.c */ +#line 12823 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-2].node); + b->arg = (Expr *) (yyvsp[(1) - (3)].node); b->booltesttype = IS_FALSE; - b->location = (yylsp[-1]); + b->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)b; } -#line 38928 "gram.c" /* yacc.c:1646 */ break; - case 1775: -#line 11876 "gram.y" /* yacc.c:1646 */ + case 1914: +/* Line 1792 of yacc.c */ +#line 12831 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-3].node); + b->arg = (Expr *) (yyvsp[(1) - (4)].node); b->booltesttype = IS_NOT_FALSE; - b->location = (yylsp[-2]); + b->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)b; } -#line 38940 "gram.c" /* yacc.c:1646 */ break; - case 1776: -#line 11884 "gram.y" /* yacc.c:1646 */ + case 1915: +/* Line 1792 of yacc.c */ +#line 12839 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-2].node); + b->arg = (Expr *) (yyvsp[(1) - (3)].node); b->booltesttype = IS_UNKNOWN; - b->location = (yylsp[-1]); + b->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)b; } -#line 38952 "gram.c" /* yacc.c:1646 */ break; - case 1777: -#line 11892 "gram.y" /* yacc.c:1646 */ + case 1916: +/* Line 1792 of yacc.c */ +#line 12847 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-3].node); + b->arg = (Expr *) (yyvsp[(1) - (4)].node); b->booltesttype = IS_NOT_UNKNOWN; - b->location = (yylsp[-2]); + b->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)b; } -#line 38964 "gram.c" /* yacc.c:1646 */ break; - case 1778: -#line 11900 "gram.y" /* yacc.c:1646 */ + case 1917: +/* Line 1792 of yacc.c */ +#line 12855 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[-4].node), (yyvsp[0].node), (yylsp[-3])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); } -#line 38972 "gram.c" /* yacc.c:1646 */ break; - case 1779: -#line 11904 "gram.y" /* yacc.c:1646 */ + case 1918: +/* Line 1792 of yacc.c */ +#line 12859 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[-5].node), (yyvsp[0].node), (yylsp[-4])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); } -#line 38980 "gram.c" /* yacc.c:1646 */ break; - case 1780: -#line 11908 "gram.y" /* yacc.c:1646 */ + case 1919: +/* Line 1792 of yacc.c */ +#line 12863 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[-5].node), (Node *) (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (Node *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); } -#line 38988 "gram.c" /* yacc.c:1646 */ break; - case 1781: -#line 11912 "gram.y" /* yacc.c:1646 */ + case 1920: +/* Line 1792 of yacc.c */ +#line 12867 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[-6].node), (Node *) (yyvsp[-1].list), (yylsp[-5])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (Node *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); } -#line 38996 "gram.c" /* yacc.c:1646 */ break; - case 1782: -#line 11916 "gram.y" /* yacc.c:1646 */ + case 1921: +/* Line 1792 of yacc.c */ +#line 12871 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_BETWEEN, "BETWEEN", - (yyvsp[-5].node), - (Node *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-4])); + (yyvsp[(1) - (6)].node), + (Node *) list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), + (yylsp[(2) - (6)])); } -#line 39008 "gram.c" /* yacc.c:1646 */ break; - case 1783: -#line 11924 "gram.y" /* yacc.c:1646 */ + case 1922: +/* Line 1792 of yacc.c */ +#line 12879 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_BETWEEN, "NOT BETWEEN", - (yyvsp[-6].node), - (Node *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-5])); + (yyvsp[(1) - (7)].node), + (Node *) list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), + (yylsp[(2) - (7)])); } -#line 39020 "gram.c" /* yacc.c:1646 */ break; - case 1784: -#line 11932 "gram.y" /* yacc.c:1646 */ + case 1923: +/* Line 1792 of yacc.c */ +#line 12887 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_BETWEEN_SYM, "BETWEEN SYMMETRIC", - (yyvsp[-5].node), - (Node *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-4])); + (yyvsp[(1) - (6)].node), + (Node *) list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), + (yylsp[(2) - (6)])); } -#line 39032 "gram.c" /* yacc.c:1646 */ break; - case 1785: -#line 11940 "gram.y" /* yacc.c:1646 */ + case 1924: +/* Line 1792 of yacc.c */ +#line 12895 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_BETWEEN_SYM, "NOT BETWEEN SYMMETRIC", - (yyvsp[-6].node), - (Node *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-5])); + (yyvsp[(1) - (7)].node), + (Node *) list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), + (yylsp[(2) - (7)])); } -#line 39044 "gram.c" /* yacc.c:1646 */ break; - case 1786: -#line 11948 "gram.y" /* yacc.c:1646 */ + case 1925: +/* Line 1792 of yacc.c */ +#line 12903 "gram.y" { /* in_expr returns a SubLink or a list of a_exprs */ - if (IsA((yyvsp[0].node), SubLink)) + if (IsA((yyvsp[(3) - (3)].node), SubLink)) { /* generate foo = ANY (subquery) */ - SubLink *n = (SubLink *) (yyvsp[0].node); + SubLink *n = (SubLink *) (yyvsp[(3) - (3)].node); n->subLinkType = ANY_SUBLINK; n->subLinkId = 0; - n->testexpr = (yyvsp[-2].node); + n->testexpr = (yyvsp[(1) - (3)].node); n->operName = NIL; /* show it's IN not = ANY */ - n->location = (yylsp[-1]); + n->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)n; } else { /* generate scalar IN expression */ - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_IN, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_IN, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } } -#line 39068 "gram.c" /* yacc.c:1646 */ break; - case 1787: -#line 11968 "gram.y" /* yacc.c:1646 */ + case 1926: +/* Line 1792 of yacc.c */ +#line 12923 "gram.y" { /* in_expr returns a SubLink or a list of a_exprs */ - if (IsA((yyvsp[0].node), SubLink)) + if (IsA((yyvsp[(4) - (4)].node), SubLink)) { /* generate NOT (foo = ANY (subquery)) */ /* Make an = ANY node */ - SubLink *n = (SubLink *) (yyvsp[0].node); + SubLink *n = (SubLink *) (yyvsp[(4) - (4)].node); n->subLinkType = ANY_SUBLINK; n->subLinkId = 0; - n->testexpr = (yyvsp[-3].node); + n->testexpr = (yyvsp[(1) - (4)].node); n->operName = NIL; /* show it's IN not = ANY */ - n->location = (yylsp[-2]); + n->location = (yylsp[(2) - (4)]); /* Stick a NOT on top; must have same parse location */ - (yyval.node) = makeNotExpr((Node *) n, (yylsp[-2])); + (yyval.node) = makeNotExpr((Node *) n, (yylsp[(2) - (4)])); } else { /* generate scalar NOT IN expression */ - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_IN, "<>", (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_IN, "<>", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); } } -#line 39094 "gram.c" /* yacc.c:1646 */ break; - case 1788: -#line 11990 "gram.y" /* yacc.c:1646 */ + case 1927: +/* Line 1792 of yacc.c */ +#line 12945 "gram.y" { SubLink *n = makeNode(SubLink); - n->subLinkType = (yyvsp[-1].ival); + n->subLinkType = (yyvsp[(3) - (4)].ival); n->subLinkId = 0; - n->testexpr = (yyvsp[-3].node); - n->operName = (yyvsp[-2].list); - n->subselect = (yyvsp[0].node); - n->location = (yylsp[-2]); + n->testexpr = (yyvsp[(1) - (4)].node); + n->operName = (yyvsp[(2) - (4)].list); + n->subselect = (yyvsp[(4) - (4)].node); + n->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)n; } -#line 39109 "gram.c" /* yacc.c:1646 */ break; - case 1789: -#line 12001 "gram.y" /* yacc.c:1646 */ + case 1928: +/* Line 1792 of yacc.c */ +#line 12956 "gram.y" { - if ((yyvsp[-3].ival) == ANY_SUBLINK) - (yyval.node) = (Node *) makeA_Expr(AEXPR_OP_ANY, (yyvsp[-4].list), (yyvsp[-5].node), (yyvsp[-1].node), (yylsp[-4])); + if ((yyvsp[(3) - (6)].ival) == ANY_SUBLINK) + (yyval.node) = (Node *) makeA_Expr(AEXPR_OP_ANY, (yyvsp[(2) - (6)].list), (yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(2) - (6)])); else - (yyval.node) = (Node *) makeA_Expr(AEXPR_OP_ALL, (yyvsp[-4].list), (yyvsp[-5].node), (yyvsp[-1].node), (yylsp[-4])); + (yyval.node) = (Node *) makeA_Expr(AEXPR_OP_ALL, (yyvsp[(2) - (6)].list), (yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(2) - (6)])); } -#line 39120 "gram.c" /* yacc.c:1646 */ break; - case 1790: -#line 12008 "gram.y" /* yacc.c:1646 */ + case 1929: +/* Line 1792 of yacc.c */ +#line 12963 "gram.y" { /* Not sure how to get rid of the parentheses * but there are lots of shift/reduce errors without them. @@ -39134,234 +42938,252 @@ yyreduce: ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("UNIQUE predicate is not yet implemented"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); } -#line 39140 "gram.c" /* yacc.c:1646 */ break; - case 1791: -#line 12024 "gram.y" /* yacc.c:1646 */ + case 1930: +/* Line 1792 of yacc.c */ +#line 12979 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, - list_make1((yyvsp[-2].node)), (yylsp[-1])); + list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); } -#line 39149 "gram.c" /* yacc.c:1646 */ break; - case 1792: -#line 12029 "gram.y" /* yacc.c:1646 */ + case 1931: +/* Line 1792 of yacc.c */ +#line 12984 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, - list_make1((yyvsp[-3].node)), (yylsp[-2])), - (yylsp[-2])); + list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), + (yylsp[(2) - (4)])); } -#line 39159 "gram.c" /* yacc.c:1646 */ break; - case 1793: -#line 12046 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39165 "gram.c" /* yacc.c:1646 */ + case 1932: +/* Line 1792 of yacc.c */ +#line 12990 "gram.y" + { + /* + * The SQL spec only allows DEFAULT in "contextually typed + * expressions", but for us, it's easier to allow it in + * any a_expr and then throw error during parse analysis + * if it's in an inappropriate context. This way also + * lets us say something smarter than "syntax error". + */ + SetToDefault *n = makeNode(SetToDefault); + /* parse analysis will fill in the rest */ + n->location = (yylsp[(1) - (1)]); + (yyval.node) = (Node *)n; + } break; - case 1794: -#line 12048 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam), (yylsp[-1])); } -#line 39171 "gram.c" /* yacc.c:1646 */ + case 1933: +/* Line 1792 of yacc.c */ +#line 13015 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1795: -#line 12050 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } -#line 39177 "gram.c" /* yacc.c:1646 */ + case 1934: +/* Line 1792 of yacc.c */ +#line 13017 "gram.y" + { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); } break; - case 1796: -#line 12052 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } -#line 39183 "gram.c" /* yacc.c:1646 */ + case 1935: +/* Line 1792 of yacc.c */ +#line 13019 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; - case 1797: -#line 12054 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39189 "gram.c" /* yacc.c:1646 */ + case 1936: +/* Line 1792 of yacc.c */ +#line 13021 "gram.y" + { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; - case 1798: -#line 12056 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39195 "gram.c" /* yacc.c:1646 */ + case 1937: +/* Line 1792 of yacc.c */ +#line 13023 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1799: -#line 12058 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39201 "gram.c" /* yacc.c:1646 */ + case 1938: +/* Line 1792 of yacc.c */ +#line 13025 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1800: -#line 12060 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39207 "gram.c" /* yacc.c:1646 */ + case 1939: +/* Line 1792 of yacc.c */ +#line 13027 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1801: -#line 12062 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39213 "gram.c" /* yacc.c:1646 */ + case 1940: +/* Line 1792 of yacc.c */ +#line 13029 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1802: -#line 12064 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39219 "gram.c" /* yacc.c:1646 */ + case 1941: +/* Line 1792 of yacc.c */ +#line 13031 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1803: -#line 12066 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39225 "gram.c" /* yacc.c:1646 */ + case 1942: +/* Line 1792 of yacc.c */ +#line 13033 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1804: -#line 12068 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39231 "gram.c" /* yacc.c:1646 */ + case 1943: +/* Line 1792 of yacc.c */ +#line 13035 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } + break; + + case 1944: +/* Line 1792 of yacc.c */ +#line 13037 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1805: -#line 12070 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39237 "gram.c" /* yacc.c:1646 */ + case 1945: +/* Line 1792 of yacc.c */ +#line 13039 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1806: -#line 12072 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39243 "gram.c" /* yacc.c:1646 */ + case 1946: +/* Line 1792 of yacc.c */ +#line 13041 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1807: -#line 12074 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39249 "gram.c" /* yacc.c:1646 */ + case 1947: +/* Line 1792 of yacc.c */ +#line 13043 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1808: -#line 12076 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39255 "gram.c" /* yacc.c:1646 */ + case 1948: +/* Line 1792 of yacc.c */ +#line 13045 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1809: -#line 12078 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 39261 "gram.c" /* yacc.c:1646 */ + case 1949: +/* Line 1792 of yacc.c */ +#line 13047 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; - case 1810: -#line 12080 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), NULL, (yyvsp[0].node), (yylsp[-1])); } -#line 39267 "gram.c" /* yacc.c:1646 */ + case 1950: +/* Line 1792 of yacc.c */ +#line 13049 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; - case 1811: -#line 12082 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[0].list), (yyvsp[-1].node), NULL, (yylsp[0])); } -#line 39273 "gram.c" /* yacc.c:1646 */ + case 1951: +/* Line 1792 of yacc.c */ +#line 13051 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); } break; - case 1812: -#line 12084 "gram.y" /* yacc.c:1646 */ + case 1952: +/* Line 1792 of yacc.c */ +#line 13053 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[-4].node), (yyvsp[0].node), (yylsp[-3])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); } -#line 39281 "gram.c" /* yacc.c:1646 */ break; - case 1813: -#line 12088 "gram.y" /* yacc.c:1646 */ + case 1953: +/* Line 1792 of yacc.c */ +#line 13057 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[-5].node), (yyvsp[0].node), (yylsp[-4])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); } -#line 39289 "gram.c" /* yacc.c:1646 */ break; - case 1814: -#line 12092 "gram.y" /* yacc.c:1646 */ + case 1954: +/* Line 1792 of yacc.c */ +#line 13061 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[-5].node), (Node *) (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (Node *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); } -#line 39297 "gram.c" /* yacc.c:1646 */ break; - case 1815: -#line 12096 "gram.y" /* yacc.c:1646 */ + case 1955: +/* Line 1792 of yacc.c */ +#line 13065 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[-6].node), (Node *) (yyvsp[-1].list), (yylsp[-5])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (Node *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); } -#line 39305 "gram.c" /* yacc.c:1646 */ break; - case 1816: -#line 12100 "gram.y" /* yacc.c:1646 */ + case 1956: +/* Line 1792 of yacc.c */ +#line 13069 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, - list_make1((yyvsp[-2].node)), (yylsp[-1])); + list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); } -#line 39314 "gram.c" /* yacc.c:1646 */ break; - case 1817: -#line 12105 "gram.y" /* yacc.c:1646 */ + case 1957: +/* Line 1792 of yacc.c */ +#line 13074 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, - list_make1((yyvsp[-3].node)), (yylsp[-2])), - (yylsp[-2])); + list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), + (yylsp[(2) - (4)])); } -#line 39324 "gram.c" /* yacc.c:1646 */ break; - case 1818: -#line 12120 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39330 "gram.c" /* yacc.c:1646 */ + case 1958: +/* Line 1792 of yacc.c */ +#line 13089 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1819: -#line 12121 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39336 "gram.c" /* yacc.c:1646 */ + case 1959: +/* Line 1792 of yacc.c */ +#line 13090 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1820: -#line 12123 "gram.y" /* yacc.c:1646 */ + case 1960: +/* Line 1792 of yacc.c */ +#line 13092 "gram.y" { ParamRef *p = makeNode(ParamRef); - p->number = (yyvsp[-1].ival); - p->location = (yylsp[-1]); - if ((yyvsp[0].list)) + p->number = (yyvsp[(1) - (2)].ival); + p->location = (yylsp[(1) - (2)]); + if ((yyvsp[(2) - (2)].list)) { A_Indirection *n = makeNode(A_Indirection); n->arg = (Node *) p; - n->indirection = check_indirection((yyvsp[0].list), yyscanner); + n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.node) = (Node *) n; } else (yyval.node) = (Node *) p; } -#line 39355 "gram.c" /* yacc.c:1646 */ break; - case 1821: -#line 12138 "gram.y" /* yacc.c:1646 */ + case 1961: +/* Line 1792 of yacc.c */ +#line 13107 "gram.y" { - if ((yyvsp[0].list)) + if ((yyvsp[(4) - (4)].list)) { A_Indirection *n = makeNode(A_Indirection); - n->arg = (yyvsp[-2].node); - n->indirection = check_indirection((yyvsp[0].list), yyscanner); + n->arg = (yyvsp[(2) - (4)].node); + n->indirection = check_indirection((yyvsp[(4) - (4)].list), yyscanner); (yyval.node) = (Node *)n; } else if (operator_precedence_warning) @@ -39371,7 +43193,10 @@ yyreduce: * AEXPR_PAREN nodes wrapping all explicitly * parenthesized subexpressions; this prevents bogus * warnings from being issued when the ordering has - * been forced by parentheses. + * been forced by parentheses. Take care that an + * AEXPR_PAREN node has the same exprLocation as its + * child, so as not to cause surprising changes in + * error cursor positioning. * * In principle we should not be relying on a GUC to * decide whether to insert AEXPR_PAREN nodes. @@ -39380,43 +43205,44 @@ yyreduce: * we'd just as soon not waste cycles on dummy parse * nodes if we don't have to. */ - (yyval.node) = (Node *) makeA_Expr(AEXPR_PAREN, NIL, (yyvsp[-2].node), NULL, (yylsp[-3])); + (yyval.node) = (Node *) makeA_Expr(AEXPR_PAREN, NIL, (yyvsp[(2) - (4)].node), NULL, + exprLocation((yyvsp[(2) - (4)].node))); } else - (yyval.node) = (yyvsp[-2].node); + (yyval.node) = (yyvsp[(2) - (4)].node); } -#line 39389 "gram.c" /* yacc.c:1646 */ break; - case 1822: -#line 12168 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39395 "gram.c" /* yacc.c:1646 */ + case 1962: +/* Line 1792 of yacc.c */ +#line 13141 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1823: -#line 12170 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39401 "gram.c" /* yacc.c:1646 */ + case 1963: +/* Line 1792 of yacc.c */ +#line 13143 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1824: -#line 12172 "gram.y" /* yacc.c:1646 */ + case 1964: +/* Line 1792 of yacc.c */ +#line 13145 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = EXPR_SUBLINK; n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; - n->subselect = (yyvsp[0].node); - n->location = (yylsp[0]); + n->subselect = (yyvsp[(1) - (1)].node); + n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)n; } -#line 39416 "gram.c" /* yacc.c:1646 */ break; - case 1825: -#line 12183 "gram.y" /* yacc.c:1646 */ + case 1965: +/* Line 1792 of yacc.c */ +#line 13156 "gram.y" { /* * Because the select_with_parens nonterminal is designed @@ -39434,163 +43260,162 @@ yyreduce: n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; - n->subselect = (yyvsp[-1].node); - n->location = (yylsp[-1]); + n->subselect = (yyvsp[(1) - (2)].node); + n->location = (yylsp[(1) - (2)]); a->arg = (Node *)n; - a->indirection = check_indirection((yyvsp[0].list), yyscanner); + a->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.node) = (Node *)a; } -#line 39444 "gram.c" /* yacc.c:1646 */ break; - case 1826: -#line 12207 "gram.y" /* yacc.c:1646 */ + case 1966: +/* Line 1792 of yacc.c */ +#line 13180 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = EXISTS_SUBLINK; n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; - n->subselect = (yyvsp[0].node); - n->location = (yylsp[-1]); + n->subselect = (yyvsp[(2) - (2)].node); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 39459 "gram.c" /* yacc.c:1646 */ break; - case 1827: -#line 12218 "gram.y" /* yacc.c:1646 */ + case 1967: +/* Line 1792 of yacc.c */ +#line 13191 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = ARRAY_SUBLINK; n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; - n->subselect = (yyvsp[0].node); - n->location = (yylsp[-1]); + n->subselect = (yyvsp[(2) - (2)].node); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 39474 "gram.c" /* yacc.c:1646 */ break; - case 1828: -#line 12229 "gram.y" /* yacc.c:1646 */ + case 1968: +/* Line 1792 of yacc.c */ +#line 13202 "gram.y" { - A_ArrayExpr *n = (A_ArrayExpr *) (yyvsp[0].node); - Assert(IsA(n, A_ArrayExpr)); + A_ArrayExpr *n = castNode(A_ArrayExpr, (yyvsp[(2) - (2)].node)); /* point outermost A_ArrayExpr to the ARRAY keyword */ - n->location = (yylsp[-1]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 39486 "gram.c" /* yacc.c:1646 */ break; - case 1829: -#line 12237 "gram.y" /* yacc.c:1646 */ + case 1969: +/* Line 1792 of yacc.c */ +#line 13209 "gram.y" { RowExpr *r = makeNode(RowExpr); - r->args = (yyvsp[0].list); + r->args = (yyvsp[(1) - (1)].list); r->row_typeid = InvalidOid; /* not analyzed yet */ r->colnames = NIL; /* to be filled in during analysis */ r->row_format = COERCE_EXPLICIT_CALL; /* abuse */ - r->location = (yylsp[0]); + r->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)r; } -#line 39500 "gram.c" /* yacc.c:1646 */ break; - case 1830: -#line 12247 "gram.y" /* yacc.c:1646 */ + case 1970: +/* Line 1792 of yacc.c */ +#line 13219 "gram.y" { RowExpr *r = makeNode(RowExpr); - r->args = (yyvsp[0].list); + r->args = (yyvsp[(1) - (1)].list); r->row_typeid = InvalidOid; /* not analyzed yet */ r->colnames = NIL; /* to be filled in during analysis */ r->row_format = COERCE_IMPLICIT_CAST; /* abuse */ - r->location = (yylsp[0]); + r->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)r; } -#line 39514 "gram.c" /* yacc.c:1646 */ break; - case 1831: -#line 12257 "gram.y" /* yacc.c:1646 */ + case 1971: +/* Line 1792 of yacc.c */ +#line 13229 "gram.y" { GroupingFunc *g = makeNode(GroupingFunc); - g->args = (yyvsp[-1].list); - g->location = (yylsp[-3]); + g->args = (yyvsp[(3) - (4)].list); + g->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)g; } -#line 39525 "gram.c" /* yacc.c:1646 */ break; - case 1832: -#line 12266 "gram.y" /* yacc.c:1646 */ + case 1972: +/* Line 1792 of yacc.c */ +#line 13238 "gram.y" { - (yyval.node) = (Node *) makeFuncCall((yyvsp[-2].list), NIL, (yylsp[-2])); + (yyval.node) = (Node *) makeFuncCall((yyvsp[(1) - (3)].list), NIL, (yylsp[(1) - (3)])); } -#line 39533 "gram.c" /* yacc.c:1646 */ break; - case 1833: -#line 12270 "gram.y" /* yacc.c:1646 */ + case 1973: +/* Line 1792 of yacc.c */ +#line 13242 "gram.y" { - FuncCall *n = makeFuncCall((yyvsp[-4].list), (yyvsp[-2].list), (yylsp[-4])); - n->agg_order = (yyvsp[-1].list); + FuncCall *n = makeFuncCall((yyvsp[(1) - (5)].list), (yyvsp[(3) - (5)].list), (yylsp[(1) - (5)])); + n->agg_order = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *)n; } -#line 39543 "gram.c" /* yacc.c:1646 */ break; - case 1834: -#line 12276 "gram.y" /* yacc.c:1646 */ + case 1974: +/* Line 1792 of yacc.c */ +#line 13248 "gram.y" { - FuncCall *n = makeFuncCall((yyvsp[-5].list), list_make1((yyvsp[-2].node)), (yylsp[-5])); + FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), list_make1((yyvsp[(4) - (6)].node)), (yylsp[(1) - (6)])); n->func_variadic = TRUE; - n->agg_order = (yyvsp[-1].list); + n->agg_order = (yyvsp[(5) - (6)].list); (yyval.node) = (Node *)n; } -#line 39554 "gram.c" /* yacc.c:1646 */ break; - case 1835: -#line 12283 "gram.y" /* yacc.c:1646 */ + case 1975: +/* Line 1792 of yacc.c */ +#line 13255 "gram.y" { - FuncCall *n = makeFuncCall((yyvsp[-7].list), lappend((yyvsp[-5].list), (yyvsp[-2].node)), (yylsp[-7])); + FuncCall *n = makeFuncCall((yyvsp[(1) - (8)].list), lappend((yyvsp[(3) - (8)].list), (yyvsp[(6) - (8)].node)), (yylsp[(1) - (8)])); n->func_variadic = TRUE; - n->agg_order = (yyvsp[-1].list); + n->agg_order = (yyvsp[(7) - (8)].list); (yyval.node) = (Node *)n; } -#line 39565 "gram.c" /* yacc.c:1646 */ break; - case 1836: -#line 12290 "gram.y" /* yacc.c:1646 */ + case 1976: +/* Line 1792 of yacc.c */ +#line 13262 "gram.y" { - FuncCall *n = makeFuncCall((yyvsp[-5].list), (yyvsp[-2].list), (yylsp[-5])); - n->agg_order = (yyvsp[-1].list); + FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), (yylsp[(1) - (6)])); + n->agg_order = (yyvsp[(5) - (6)].list); /* Ideally we'd mark the FuncCall node to indicate * "must be an aggregate", but there's no provision * for that in FuncCall at the moment. */ (yyval.node) = (Node *)n; } -#line 39579 "gram.c" /* yacc.c:1646 */ break; - case 1837: -#line 12300 "gram.y" /* yacc.c:1646 */ + case 1977: +/* Line 1792 of yacc.c */ +#line 13272 "gram.y" { - FuncCall *n = makeFuncCall((yyvsp[-5].list), (yyvsp[-2].list), (yylsp[-5])); - n->agg_order = (yyvsp[-1].list); + FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), (yylsp[(1) - (6)])); + n->agg_order = (yyvsp[(5) - (6)].list); n->agg_distinct = TRUE; (yyval.node) = (Node *)n; } -#line 39590 "gram.c" /* yacc.c:1646 */ break; - case 1838: -#line 12307 "gram.y" /* yacc.c:1646 */ + case 1978: +/* Line 1792 of yacc.c */ +#line 13279 "gram.y" { /* * We consider AGGREGATE(*) to invoke a parameterless @@ -39602,17 +43427,17 @@ yyreduce: * so that later processing can detect what the argument * really was. */ - FuncCall *n = makeFuncCall((yyvsp[-3].list), NIL, (yylsp[-3])); + FuncCall *n = makeFuncCall((yyvsp[(1) - (4)].list), NIL, (yylsp[(1) - (4)])); n->agg_star = TRUE; (yyval.node) = (Node *)n; } -#line 39610 "gram.c" /* yacc.c:1646 */ break; - case 1839: -#line 12335 "gram.y" /* yacc.c:1646 */ + case 1979: +/* Line 1792 of yacc.c */ +#line 13307 "gram.y" { - FuncCall *n = (FuncCall *) (yyvsp[-3].node); + FuncCall *n = (FuncCall *) (yyvsp[(1) - (4)].node); /* * The order clause for WITHIN GROUP and the one for * plain-aggregate ORDER BY share a field, so we have to @@ -39621,310 +43446,230 @@ yyreduce: * location. Other consistency checks are deferred to * parse analysis. */ - if ((yyvsp[-2].list) != NIL) + if ((yyvsp[(2) - (4)].list) != NIL) { if (n->agg_order != NIL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot use multiple ORDER BY clauses with WITHIN GROUP"), - parser_errposition((yylsp[-2])))); + parser_errposition((yylsp[(2) - (4)])))); if (n->agg_distinct) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot use DISTINCT with WITHIN GROUP"), - parser_errposition((yylsp[-2])))); + parser_errposition((yylsp[(2) - (4)])))); if (n->func_variadic) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot use VARIADIC with WITHIN GROUP"), - parser_errposition((yylsp[-2])))); - n->agg_order = (yyvsp[-2].list); + parser_errposition((yylsp[(2) - (4)])))); + n->agg_order = (yyvsp[(2) - (4)].list); n->agg_within_group = TRUE; } - n->agg_filter = (yyvsp[-1].node); - n->over = (yyvsp[0].windef); + n->agg_filter = (yyvsp[(3) - (4)].node); + n->over = (yyvsp[(4) - (4)].windef); (yyval.node) = (Node *) n; } -#line 39649 "gram.c" /* yacc.c:1646 */ break; - case 1840: -#line 12370 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39655 "gram.c" /* yacc.c:1646 */ + case 1980: +/* Line 1792 of yacc.c */ +#line 13342 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1841: -#line 12380 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39661 "gram.c" /* yacc.c:1646 */ + case 1981: +/* Line 1792 of yacc.c */ +#line 13352 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1842: -#line 12381 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39667 "gram.c" /* yacc.c:1646 */ + case 1982: +/* Line 1792 of yacc.c */ +#line 13353 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 1843: -#line 12389 "gram.y" /* yacc.c:1646 */ + case 1983: +/* Line 1792 of yacc.c */ +#line 13361 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("pg_collation_for"), - list_make1((yyvsp[-1].node)), - (yylsp[-4])); + list_make1((yyvsp[(4) - (5)].node)), + (yylsp[(1) - (5)])); } -#line 39677 "gram.c" /* yacc.c:1646 */ break; - case 1844: -#line 12395 "gram.y" /* yacc.c:1646 */ + case 1984: +/* Line 1792 of yacc.c */ +#line 13367 "gram.y" { - /* - * Translate as "'now'::text::date". - * - * We cannot use "'now'::date" because coerce_type() will - * immediately reduce that to a constant representing - * today's date. We need to delay the conversion until - * runtime, else the wrong things will happen when - * CURRENT_DATE is used in a column default value or rule. - * - * This could be simplified if we had a way to generate - * an expression tree representing runtime application - * of type-input conversion functions. (As of PG 7.3 - * that is actually possible, but not clear that we want - * to rely on it.) - * - * The token location is attached to the run-time - * typecast, not to the Const, for the convenience of - * pg_stat_statements (which doesn't want these constructs - * to appear to be replaceable constants). - */ - Node *n; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - (yyval.node) = makeTypeCast(n, SystemTypeName("date"), (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_DATE, -1, (yylsp[(1) - (1)])); } -#line 39707 "gram.c" /* yacc.c:1646 */ break; - case 1845: -#line 12421 "gram.y" /* yacc.c:1646 */ + case 1985: +/* Line 1792 of yacc.c */ +#line 13371 "gram.y" { - /* - * Translate as "'now'::text::timetz". - * See comments for CURRENT_DATE. - */ - Node *n; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - (yyval.node) = makeTypeCast(n, SystemTypeName("timetz"), (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME, -1, (yylsp[(1) - (1)])); } -#line 39721 "gram.c" /* yacc.c:1646 */ break; - case 1846: -#line 12431 "gram.y" /* yacc.c:1646 */ + case 1986: +/* Line 1792 of yacc.c */ +#line 13375 "gram.y" { - /* - * Translate as "'now'::text::timetz(n)". - * See comments for CURRENT_DATE. - */ - Node *n; - TypeName *d; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - d = SystemTypeName("timetz"); - d->typmods = list_make1(makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); - (yyval.node) = makeTypeCast(n, d, (yylsp[-3])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); } -#line 39738 "gram.c" /* yacc.c:1646 */ break; - case 1847: -#line 12444 "gram.y" /* yacc.c:1646 */ + case 1987: +/* Line 1792 of yacc.c */ +#line 13379 "gram.y" { - /* - * Translate as "now()", since we have a function that - * does exactly what is needed. - */ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("now"), NIL, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP, -1, (yylsp[(1) - (1)])); } -#line 39750 "gram.c" /* yacc.c:1646 */ break; - case 1848: -#line 12452 "gram.y" /* yacc.c:1646 */ + case 1988: +/* Line 1792 of yacc.c */ +#line 13383 "gram.y" { - /* - * Translate as "'now'::text::timestamptz(n)". - * See comments for CURRENT_DATE. - */ - Node *n; - TypeName *d; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - d = SystemTypeName("timestamptz"); - d->typmods = list_make1(makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); - (yyval.node) = makeTypeCast(n, d, (yylsp[-3])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); } -#line 39767 "gram.c" /* yacc.c:1646 */ break; - case 1849: -#line 12465 "gram.y" /* yacc.c:1646 */ + case 1989: +/* Line 1792 of yacc.c */ +#line 13387 "gram.y" { - /* - * Translate as "'now'::text::time". - * See comments for CURRENT_DATE. - */ - Node *n; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - (yyval.node) = makeTypeCast((Node *)n, SystemTypeName("time"), (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME, -1, (yylsp[(1) - (1)])); } -#line 39781 "gram.c" /* yacc.c:1646 */ break; - case 1850: -#line 12475 "gram.y" /* yacc.c:1646 */ + case 1990: +/* Line 1792 of yacc.c */ +#line 13391 "gram.y" { - /* - * Translate as "'now'::text::time(n)". - * See comments for CURRENT_DATE. - */ - Node *n; - TypeName *d; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - d = SystemTypeName("time"); - d->typmods = list_make1(makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); - (yyval.node) = makeTypeCast((Node *)n, d, (yylsp[-3])); + (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); } -#line 39798 "gram.c" /* yacc.c:1646 */ break; - case 1851: -#line 12488 "gram.y" /* yacc.c:1646 */ + case 1991: +/* Line 1792 of yacc.c */ +#line 13395 "gram.y" { - /* - * Translate as "'now'::text::timestamp". - * See comments for CURRENT_DATE. - */ - Node *n; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - (yyval.node) = makeTypeCast(n, SystemTypeName("timestamp"), (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP, -1, (yylsp[(1) - (1)])); } -#line 39812 "gram.c" /* yacc.c:1646 */ break; - case 1852: -#line 12498 "gram.y" /* yacc.c:1646 */ + case 1992: +/* Line 1792 of yacc.c */ +#line 13399 "gram.y" { - /* - * Translate as "'now'::text::timestamp(n)". - * See comments for CURRENT_DATE. - */ - Node *n; - TypeName *d; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - d = SystemTypeName("timestamp"); - d->typmods = list_make1(makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); - (yyval.node) = makeTypeCast(n, d, (yylsp[-3])); + (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); } -#line 39829 "gram.c" /* yacc.c:1646 */ break; - case 1853: -#line 12511 "gram.y" /* yacc.c:1646 */ + case 1993: +/* Line 1792 of yacc.c */ +#line 13403 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_ROLE, -1, (yylsp[(1) - (1)])); } -#line 39837 "gram.c" /* yacc.c:1646 */ break; - case 1854: -#line 12515 "gram.y" /* yacc.c:1646 */ + case 1994: +/* Line 1792 of yacc.c */ +#line 13407 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_USER, -1, (yylsp[(1) - (1)])); } -#line 39845 "gram.c" /* yacc.c:1646 */ break; - case 1855: -#line 12519 "gram.y" /* yacc.c:1646 */ + case 1995: +/* Line 1792 of yacc.c */ +#line 13411 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("session_user"), NIL, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_SESSION_USER, -1, (yylsp[(1) - (1)])); } -#line 39853 "gram.c" /* yacc.c:1646 */ break; - case 1856: -#line 12523 "gram.y" /* yacc.c:1646 */ + case 1996: +/* Line 1792 of yacc.c */ +#line 13415 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_USER, -1, (yylsp[(1) - (1)])); } -#line 39861 "gram.c" /* yacc.c:1646 */ break; - case 1857: -#line 12527 "gram.y" /* yacc.c:1646 */ + case 1997: +/* Line 1792 of yacc.c */ +#line 13419 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("current_database"), NIL, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_CATALOG, -1, (yylsp[(1) - (1)])); } -#line 39869 "gram.c" /* yacc.c:1646 */ break; - case 1858: -#line 12531 "gram.y" /* yacc.c:1646 */ + case 1998: +/* Line 1792 of yacc.c */ +#line 13423 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_SCHEMA, -1, (yylsp[(1) - (1)])); } -#line 39877 "gram.c" /* yacc.c:1646 */ break; - case 1859: -#line 12535 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeTypeCast((yyvsp[-3].node), (yyvsp[-1].typnam), (yylsp[-5])); } -#line 39883 "gram.c" /* yacc.c:1646 */ + case 1999: +/* Line 1792 of yacc.c */ +#line 13427 "gram.y" + { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), (yylsp[(1) - (6)])); } break; - case 1860: -#line 12537 "gram.y" /* yacc.c:1646 */ + case 2000: +/* Line 1792 of yacc.c */ +#line 13429 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("date_part"), (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("date_part"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 39891 "gram.c" /* yacc.c:1646 */ break; - case 1861: -#line 12541 "gram.y" /* yacc.c:1646 */ + case 2001: +/* Line 1792 of yacc.c */ +#line 13433 "gram.y" { /* overlay(A PLACING B FROM C FOR D) is converted to * overlay(A, B, C, D) * overlay(A PLACING B FROM C) is converted to * overlay(A, B, C) */ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("overlay"), (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("overlay"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 39904 "gram.c" /* yacc.c:1646 */ break; - case 1862: -#line 12550 "gram.y" /* yacc.c:1646 */ + case 2002: +/* Line 1792 of yacc.c */ +#line 13442 "gram.y" { /* position(A in B) is converted to position(B, A) */ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("position"), (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("position"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 39913 "gram.c" /* yacc.c:1646 */ break; - case 1863: -#line 12555 "gram.y" /* yacc.c:1646 */ + case 2003: +/* Line 1792 of yacc.c */ +#line 13447 "gram.y" { /* substring(A from B for C) is converted to * substring(A, B, C) - thomas 2000-11-28 */ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("substring"), (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("substring"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 39924 "gram.c" /* yacc.c:1646 */ break; - case 1864: -#line 12562 "gram.y" /* yacc.c:1646 */ + case 2004: +/* Line 1792 of yacc.c */ +#line 13454 "gram.y" { /* TREAT(expr AS target) converts expr of a particular type to target, * which is defined to be a subtype of the original expression. @@ -39935,503 +43680,503 @@ yyreduce: * Convert SystemTypeName() to SystemFuncName() even though * at the moment they result in the same thing. */ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName(((Value *)llast((yyvsp[-1].typnam)->names))->val.str), - list_make1((yyvsp[-3].node)), - (yylsp[-5])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName(((Value *)llast((yyvsp[(5) - (6)].typnam)->names))->val.str), + list_make1((yyvsp[(3) - (6)].node)), + (yylsp[(1) - (6)])); } -#line 39943 "gram.c" /* yacc.c:1646 */ break; - case 1865: -#line 12577 "gram.y" /* yacc.c:1646 */ + case 2005: +/* Line 1792 of yacc.c */ +#line 13469 "gram.y" { /* various trim expressions are defined in SQL * - thomas 1997-07-19 */ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); } -#line 39954 "gram.c" /* yacc.c:1646 */ break; - case 1866: -#line 12584 "gram.y" /* yacc.c:1646 */ + case 2006: +/* Line 1792 of yacc.c */ +#line 13476 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); } -#line 39962 "gram.c" /* yacc.c:1646 */ break; - case 1867: -#line 12588 "gram.y" /* yacc.c:1646 */ + case 2007: +/* Line 1792 of yacc.c */ +#line 13480 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); } -#line 39970 "gram.c" /* yacc.c:1646 */ break; - case 1868: -#line 12592 "gram.y" /* yacc.c:1646 */ + case 2008: +/* Line 1792 of yacc.c */ +#line 13484 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 39978 "gram.c" /* yacc.c:1646 */ break; - case 1869: -#line 12596 "gram.y" /* yacc.c:1646 */ + case 2009: +/* Line 1792 of yacc.c */ +#line 13488 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", (yyvsp[-3].node), (yyvsp[-1].node), (yylsp[-5])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(1) - (6)])); } -#line 39986 "gram.c" /* yacc.c:1646 */ break; - case 1870: -#line 12600 "gram.y" /* yacc.c:1646 */ + case 2010: +/* Line 1792 of yacc.c */ +#line 13492 "gram.y" { CoalesceExpr *c = makeNode(CoalesceExpr); - c->args = (yyvsp[-1].list); - c->location = (yylsp[-3]); + c->args = (yyvsp[(3) - (4)].list); + c->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)c; } -#line 39997 "gram.c" /* yacc.c:1646 */ break; - case 1871: -#line 12607 "gram.y" /* yacc.c:1646 */ + case 2011: +/* Line 1792 of yacc.c */ +#line 13499 "gram.y" { MinMaxExpr *v = makeNode(MinMaxExpr); - v->args = (yyvsp[-1].list); + v->args = (yyvsp[(3) - (4)].list); v->op = IS_GREATEST; - v->location = (yylsp[-3]); + v->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)v; } -#line 40009 "gram.c" /* yacc.c:1646 */ break; - case 1872: -#line 12615 "gram.y" /* yacc.c:1646 */ + case 2012: +/* Line 1792 of yacc.c */ +#line 13507 "gram.y" { MinMaxExpr *v = makeNode(MinMaxExpr); - v->args = (yyvsp[-1].list); + v->args = (yyvsp[(3) - (4)].list); v->op = IS_LEAST; - v->location = (yylsp[-3]); + v->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)v; } -#line 40021 "gram.c" /* yacc.c:1646 */ break; - case 1873: -#line 12623 "gram.y" /* yacc.c:1646 */ + case 2013: +/* Line 1792 of yacc.c */ +#line 13515 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 40029 "gram.c" /* yacc.c:1646 */ break; - case 1874: -#line 12627 "gram.y" /* yacc.c:1646 */ + case 2014: +/* Line 1792 of yacc.c */ +#line 13519 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-1].str), NIL, NIL, (yylsp[-4])); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (5)].str), NIL, NIL, (yylsp[(1) - (5)])); } -#line 40037 "gram.c" /* yacc.c:1646 */ break; - case 1875: -#line 12631 "gram.y" /* yacc.c:1646 */ + case 2015: +/* Line 1792 of yacc.c */ +#line 13523 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-3].str), (yyvsp[-1].list), NIL, (yylsp[-6])); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), (yyvsp[(6) - (7)].list), NIL, (yylsp[(1) - (7)])); } -#line 40045 "gram.c" /* yacc.c:1646 */ break; - case 1876: -#line 12635 "gram.y" /* yacc.c:1646 */ + case 2016: +/* Line 1792 of yacc.c */ +#line 13527 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-3].str), NIL, (yyvsp[-1].list), (yylsp[-6])); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), NIL, (yyvsp[(6) - (7)].list), (yylsp[(1) - (7)])); } -#line 40053 "gram.c" /* yacc.c:1646 */ break; - case 1877: -#line 12639 "gram.y" /* yacc.c:1646 */ + case 2017: +/* Line 1792 of yacc.c */ +#line 13531 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-5].str), (yyvsp[-3].list), (yyvsp[-1].list), (yylsp[-8])); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (9)].str), (yyvsp[(6) - (9)].list), (yyvsp[(8) - (9)].list), (yylsp[(1) - (9)])); } -#line 40061 "gram.c" /* yacc.c:1646 */ break; - case 1878: -#line 12643 "gram.y" /* yacc.c:1646 */ + case 2018: +/* Line 1792 of yacc.c */ +#line 13535 "gram.y" { /* xmlexists(A PASSING [BY REF] B [BY REF]) is * converted to xmlexists(A, B)*/ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2((yyvsp[-2].node), (yyvsp[-1].node)), (yylsp[-4])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2((yyvsp[(3) - (5)].node), (yyvsp[(4) - (5)].node)), (yylsp[(1) - (5)])); } -#line 40071 "gram.c" /* yacc.c:1646 */ break; - case 1879: -#line 12649 "gram.y" /* yacc.c:1646 */ + case 2019: +/* Line 1792 of yacc.c */ +#line 13541 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLFOREST, NULL, (yyvsp[-1].list), NIL, (yylsp[-3])); + (yyval.node) = makeXmlExpr(IS_XMLFOREST, NULL, (yyvsp[(3) - (4)].list), NIL, (yylsp[(1) - (4)])); } -#line 40079 "gram.c" /* yacc.c:1646 */ break; - case 1880: -#line 12653 "gram.y" /* yacc.c:1646 */ + case 2020: +/* Line 1792 of yacc.c */ +#line 13545 "gram.y" { XmlExpr *x = (XmlExpr *) makeXmlExpr(IS_XMLPARSE, NULL, NIL, - list_make2((yyvsp[-2].node), makeBoolAConst((yyvsp[-1].boolean), -1)), - (yylsp[-5])); - x->xmloption = (yyvsp[-3].ival); + list_make2((yyvsp[(4) - (6)].node), makeBoolAConst((yyvsp[(5) - (6)].boolean), -1)), + (yylsp[(1) - (6)])); + x->xmloption = (yyvsp[(3) - (6)].ival); (yyval.node) = (Node *)x; } -#line 40092 "gram.c" /* yacc.c:1646 */ break; - case 1881: -#line 12662 "gram.y" /* yacc.c:1646 */ + case 2021: +/* Line 1792 of yacc.c */ +#line 13554 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[-1].str), NULL, NIL, (yylsp[-4])); + (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (5)].str), NULL, NIL, (yylsp[(1) - (5)])); } -#line 40100 "gram.c" /* yacc.c:1646 */ break; - case 1882: -#line 12666 "gram.y" /* yacc.c:1646 */ + case 2022: +/* Line 1792 of yacc.c */ +#line 13558 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[-3].str), NULL, list_make1((yyvsp[-1].node)), (yylsp[-6])); + (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (7)].str), NULL, list_make1((yyvsp[(6) - (7)].node)), (yylsp[(1) - (7)])); } -#line 40108 "gram.c" /* yacc.c:1646 */ break; - case 1883: -#line 12670 "gram.y" /* yacc.c:1646 */ + case 2023: +/* Line 1792 of yacc.c */ +#line 13562 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLROOT, NULL, NIL, - list_make3((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node)), (yylsp[-6])); + list_make3((yyvsp[(3) - (7)].node), (yyvsp[(5) - (7)].node), (yyvsp[(6) - (7)].node)), (yylsp[(1) - (7)])); } -#line 40117 "gram.c" /* yacc.c:1646 */ break; - case 1884: -#line 12675 "gram.y" /* yacc.c:1646 */ + case 2024: +/* Line 1792 of yacc.c */ +#line 13567 "gram.y" { XmlSerialize *n = makeNode(XmlSerialize); - n->xmloption = (yyvsp[-4].ival); - n->expr = (yyvsp[-3].node); - n->typeName = (yyvsp[-1].typnam); - n->location = (yylsp[-6]); + n->xmloption = (yyvsp[(3) - (7)].ival); + n->expr = (yyvsp[(4) - (7)].node); + n->typeName = (yyvsp[(6) - (7)].typnam); + n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *)n; } -#line 40130 "gram.c" /* yacc.c:1646 */ break; - case 1885: -#line 12689 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 40136 "gram.c" /* yacc.c:1646 */ + case 2025: +/* Line 1792 of yacc.c */ +#line 13581 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; - case 1886: -#line 12691 "gram.y" /* yacc.c:1646 */ + case 2026: +/* Line 1792 of yacc.c */ +#line 13583 "gram.y" { (yyval.node) = makeNullAConst(-1); } -#line 40142 "gram.c" /* yacc.c:1646 */ break; - case 1887: -#line 12695 "gram.y" /* yacc.c:1646 */ + case 2027: +/* Line 1792 of yacc.c */ +#line 13587 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_YES, -1); } -#line 40148 "gram.c" /* yacc.c:1646 */ break; - case 1888: -#line 12697 "gram.y" /* yacc.c:1646 */ + case 2028: +/* Line 1792 of yacc.c */ +#line 13589 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO, -1); } -#line 40154 "gram.c" /* yacc.c:1646 */ break; - case 1889: -#line 12699 "gram.y" /* yacc.c:1646 */ + case 2029: +/* Line 1792 of yacc.c */ +#line 13591 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } -#line 40160 "gram.c" /* yacc.c:1646 */ break; - case 1890: -#line 12701 "gram.y" /* yacc.c:1646 */ + case 2030: +/* Line 1792 of yacc.c */ +#line 13593 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_OMITTED, -1); } -#line 40166 "gram.c" /* yacc.c:1646 */ break; - case 1891: -#line 12704 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 40172 "gram.c" /* yacc.c:1646 */ + case 2031: +/* Line 1792 of yacc.c */ +#line 13596 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; - case 1892: -#line 12707 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].target)); } -#line 40178 "gram.c" /* yacc.c:1646 */ + case 2032: +/* Line 1792 of yacc.c */ +#line 13599 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); } break; - case 1893: -#line 12708 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } -#line 40184 "gram.c" /* yacc.c:1646 */ + case 2033: +/* Line 1792 of yacc.c */ +#line 13600 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); } break; - case 1894: -#line 12712 "gram.y" /* yacc.c:1646 */ + case 2034: +/* Line 1792 of yacc.c */ +#line 13604 "gram.y" { (yyval.target) = makeNode(ResTarget); - (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->name = (yyvsp[(3) - (3)].str); (yyval.target)->indirection = NIL; - (yyval.target)->val = (Node *) (yyvsp[-2].node); - (yyval.target)->location = (yylsp[-2]); + (yyval.target)->val = (Node *) (yyvsp[(1) - (3)].node); + (yyval.target)->location = (yylsp[(1) - (3)]); } -#line 40196 "gram.c" /* yacc.c:1646 */ break; - case 1895: -#line 12720 "gram.y" /* yacc.c:1646 */ + case 2035: +/* Line 1792 of yacc.c */ +#line 13612 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; (yyval.target)->indirection = NIL; - (yyval.target)->val = (Node *) (yyvsp[0].node); - (yyval.target)->location = (yylsp[0]); + (yyval.target)->val = (Node *) (yyvsp[(1) - (1)].node); + (yyval.target)->location = (yylsp[(1) - (1)]); } -#line 40208 "gram.c" /* yacc.c:1646 */ break; - case 1896: -#line 12729 "gram.y" /* yacc.c:1646 */ + case 2036: +/* Line 1792 of yacc.c */ +#line 13621 "gram.y" { (yyval.ival) = XMLOPTION_DOCUMENT; } -#line 40214 "gram.c" /* yacc.c:1646 */ break; - case 1897: -#line 12730 "gram.y" /* yacc.c:1646 */ + case 2037: +/* Line 1792 of yacc.c */ +#line 13622 "gram.y" { (yyval.ival) = XMLOPTION_CONTENT; } -#line 40220 "gram.c" /* yacc.c:1646 */ break; - case 1898: -#line 12733 "gram.y" /* yacc.c:1646 */ + case 2038: +/* Line 1792 of yacc.c */ +#line 13625 "gram.y" { (yyval.boolean) = TRUE; } -#line 40226 "gram.c" /* yacc.c:1646 */ break; - case 1899: -#line 12734 "gram.y" /* yacc.c:1646 */ + case 2039: +/* Line 1792 of yacc.c */ +#line 13626 "gram.y" { (yyval.boolean) = FALSE; } -#line 40232 "gram.c" /* yacc.c:1646 */ break; - case 1900: -#line 12735 "gram.y" /* yacc.c:1646 */ + case 2040: +/* Line 1792 of yacc.c */ +#line 13627 "gram.y" { (yyval.boolean) = FALSE; } -#line 40238 "gram.c" /* yacc.c:1646 */ break; - case 1901: -#line 12741 "gram.y" /* yacc.c:1646 */ + case 2041: +/* Line 1792 of yacc.c */ +#line 13633 "gram.y" { - (yyval.node) = (yyvsp[0].node); + (yyval.node) = (yyvsp[(2) - (2)].node); } -#line 40246 "gram.c" /* yacc.c:1646 */ break; - case 1902: -#line 12745 "gram.y" /* yacc.c:1646 */ + case 2042: +/* Line 1792 of yacc.c */ +#line 13637 "gram.y" { - (yyval.node) = (yyvsp[-2].node); + (yyval.node) = (yyvsp[(2) - (4)].node); } -#line 40254 "gram.c" /* yacc.c:1646 */ break; - case 1903: -#line 12749 "gram.y" /* yacc.c:1646 */ + case 2043: +/* Line 1792 of yacc.c */ +#line 13641 "gram.y" { - (yyval.node) = (yyvsp[0].node); + (yyval.node) = (yyvsp[(4) - (4)].node); } -#line 40262 "gram.c" /* yacc.c:1646 */ break; - case 1904: -#line 12753 "gram.y" /* yacc.c:1646 */ + case 2044: +/* Line 1792 of yacc.c */ +#line 13645 "gram.y" { - (yyval.node) = (yyvsp[-2].node); + (yyval.node) = (yyvsp[(4) - (6)].node); } -#line 40270 "gram.c" /* yacc.c:1646 */ break; - case 1905: -#line 12763 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 40276 "gram.c" /* yacc.c:1646 */ + case 2045: +/* Line 1792 of yacc.c */ +#line 13655 "gram.y" + { (yyval.list) = (yyvsp[(4) - (5)].list); } break; - case 1906: -#line 12764 "gram.y" /* yacc.c:1646 */ + case 2046: +/* Line 1792 of yacc.c */ +#line 13656 "gram.y" { (yyval.list) = NIL; } -#line 40282 "gram.c" /* yacc.c:1646 */ break; - case 1907: -#line 12768 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 40288 "gram.c" /* yacc.c:1646 */ + case 2047: +/* Line 1792 of yacc.c */ +#line 13660 "gram.y" + { (yyval.node) = (yyvsp[(4) - (5)].node); } break; - case 1908: -#line 12769 "gram.y" /* yacc.c:1646 */ + case 2048: +/* Line 1792 of yacc.c */ +#line 13661 "gram.y" { (yyval.node) = NULL; } -#line 40294 "gram.c" /* yacc.c:1646 */ break; - case 1909: -#line 12777 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 40300 "gram.c" /* yacc.c:1646 */ + case 2049: +/* Line 1792 of yacc.c */ +#line 13669 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 1910: -#line 12778 "gram.y" /* yacc.c:1646 */ + case 2050: +/* Line 1792 of yacc.c */ +#line 13670 "gram.y" { (yyval.list) = NIL; } -#line 40306 "gram.c" /* yacc.c:1646 */ break; - case 1911: -#line 12782 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].windef)); } -#line 40312 "gram.c" /* yacc.c:1646 */ + case 2051: +/* Line 1792 of yacc.c */ +#line 13674 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].windef)); } break; - case 1912: -#line 12784 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].windef)); } -#line 40318 "gram.c" /* yacc.c:1646 */ + case 2052: +/* Line 1792 of yacc.c */ +#line 13676 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].windef)); } break; - case 1913: -#line 12789 "gram.y" /* yacc.c:1646 */ + case 2053: +/* Line 1792 of yacc.c */ +#line 13681 "gram.y" { - WindowDef *n = (yyvsp[0].windef); - n->name = (yyvsp[-2].str); + WindowDef *n = (yyvsp[(3) - (3)].windef); + n->name = (yyvsp[(1) - (3)].str); (yyval.windef) = n; } -#line 40328 "gram.c" /* yacc.c:1646 */ break; - case 1914: -#line 12797 "gram.y" /* yacc.c:1646 */ - { (yyval.windef) = (yyvsp[0].windef); } -#line 40334 "gram.c" /* yacc.c:1646 */ + case 2054: +/* Line 1792 of yacc.c */ +#line 13689 "gram.y" + { (yyval.windef) = (yyvsp[(2) - (2)].windef); } break; - case 1915: -#line 12799 "gram.y" /* yacc.c:1646 */ + case 2055: +/* Line 1792 of yacc.c */ +#line 13691 "gram.y" { WindowDef *n = makeNode(WindowDef); - n->name = (yyvsp[0].str); + n->name = (yyvsp[(2) - (2)].str); n->refname = NULL; n->partitionClause = NIL; n->orderClause = NIL; n->frameOptions = FRAMEOPTION_DEFAULTS; n->startOffset = NULL; n->endOffset = NULL; - n->location = (yylsp[0]); + n->location = (yylsp[(2) - (2)]); (yyval.windef) = n; } -#line 40351 "gram.c" /* yacc.c:1646 */ break; - case 1916: -#line 12812 "gram.y" /* yacc.c:1646 */ + case 2056: +/* Line 1792 of yacc.c */ +#line 13704 "gram.y" { (yyval.windef) = NULL; } -#line 40357 "gram.c" /* yacc.c:1646 */ break; - case 1917: -#line 12817 "gram.y" /* yacc.c:1646 */ + case 2057: +/* Line 1792 of yacc.c */ +#line 13709 "gram.y" { WindowDef *n = makeNode(WindowDef); n->name = NULL; - n->refname = (yyvsp[-4].str); - n->partitionClause = (yyvsp[-3].list); - n->orderClause = (yyvsp[-2].list); + n->refname = (yyvsp[(2) - (6)].str); + n->partitionClause = (yyvsp[(3) - (6)].list); + n->orderClause = (yyvsp[(4) - (6)].list); /* copy relevant fields of opt_frame_clause */ - n->frameOptions = (yyvsp[-1].windef)->frameOptions; - n->startOffset = (yyvsp[-1].windef)->startOffset; - n->endOffset = (yyvsp[-1].windef)->endOffset; - n->location = (yylsp[-5]); + n->frameOptions = (yyvsp[(5) - (6)].windef)->frameOptions; + n->startOffset = (yyvsp[(5) - (6)].windef)->startOffset; + n->endOffset = (yyvsp[(5) - (6)].windef)->endOffset; + n->location = (yylsp[(1) - (6)]); (yyval.windef) = n; } -#line 40375 "gram.c" /* yacc.c:1646 */ break; - case 1918: -#line 12842 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 40381 "gram.c" /* yacc.c:1646 */ + case 2058: +/* Line 1792 of yacc.c */ +#line 13734 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 1919: -#line 12843 "gram.y" /* yacc.c:1646 */ + case 2059: +/* Line 1792 of yacc.c */ +#line 13735 "gram.y" { (yyval.str) = NULL; } -#line 40387 "gram.c" /* yacc.c:1646 */ break; - case 1920: -#line 12846 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 40393 "gram.c" /* yacc.c:1646 */ + case 2060: +/* Line 1792 of yacc.c */ +#line 13738 "gram.y" + { (yyval.list) = (yyvsp[(3) - (3)].list); } break; - case 1921: -#line 12847 "gram.y" /* yacc.c:1646 */ + case 2061: +/* Line 1792 of yacc.c */ +#line 13739 "gram.y" { (yyval.list) = NIL; } -#line 40399 "gram.c" /* yacc.c:1646 */ break; - case 1922: -#line 12859 "gram.y" /* yacc.c:1646 */ + case 2062: +/* Line 1792 of yacc.c */ +#line 13751 "gram.y" { - WindowDef *n = (yyvsp[0].windef); + WindowDef *n = (yyvsp[(2) - (2)].windef); n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; if (n->frameOptions & (FRAMEOPTION_START_VALUE_PRECEDING | FRAMEOPTION_END_VALUE_PRECEDING)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("RANGE PRECEDING is only supported with UNBOUNDED"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); if (n->frameOptions & (FRAMEOPTION_START_VALUE_FOLLOWING | FRAMEOPTION_END_VALUE_FOLLOWING)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("RANGE FOLLOWING is only supported with UNBOUNDED"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); (yyval.windef) = n; } -#line 40421 "gram.c" /* yacc.c:1646 */ break; - case 1923: -#line 12877 "gram.y" /* yacc.c:1646 */ + case 2063: +/* Line 1792 of yacc.c */ +#line 13769 "gram.y" { - WindowDef *n = (yyvsp[0].windef); + WindowDef *n = (yyvsp[(2) - (2)].windef); n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; (yyval.windef) = n; } -#line 40431 "gram.c" /* yacc.c:1646 */ break; - case 1924: -#line 12883 "gram.y" /* yacc.c:1646 */ + case 2064: +/* Line 1792 of yacc.c */ +#line 13775 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_DEFAULTS; @@ -40439,35 +44184,35 @@ yyreduce: n->endOffset = NULL; (yyval.windef) = n; } -#line 40443 "gram.c" /* yacc.c:1646 */ break; - case 1925: -#line 12893 "gram.y" /* yacc.c:1646 */ + case 2065: +/* Line 1792 of yacc.c */ +#line 13785 "gram.y" { - WindowDef *n = (yyvsp[0].windef); + WindowDef *n = (yyvsp[(1) - (1)].windef); /* reject invalid cases */ if (n->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame start cannot be UNBOUNDED FOLLOWING"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame starting from following row cannot end with current row"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; (yyval.windef) = n; } -#line 40464 "gram.c" /* yacc.c:1646 */ break; - case 1926: -#line 12910 "gram.y" /* yacc.c:1646 */ + case 2066: +/* Line 1792 of yacc.c */ +#line 13802 "gram.y" { - WindowDef *n1 = (yyvsp[-2].windef); - WindowDef *n2 = (yyvsp[0].windef); + WindowDef *n1 = (yyvsp[(2) - (4)].windef); + WindowDef *n2 = (yyvsp[(4) - (4)].windef); /* form merged options */ int frameOptions = n1->frameOptions; /* shift converts START_ options to END_ options */ @@ -40478,34 +44223,34 @@ yyreduce: ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame start cannot be UNBOUNDED FOLLOWING"), - parser_errposition((yylsp[-2])))); + parser_errposition((yylsp[(2) - (4)])))); if (frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame end cannot be UNBOUNDED PRECEDING"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(4) - (4)])))); if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && (frameOptions & FRAMEOPTION_END_VALUE_PRECEDING)) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame starting from current row cannot have preceding rows"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(4) - (4)])))); if ((frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) && (frameOptions & (FRAMEOPTION_END_VALUE_PRECEDING | FRAMEOPTION_END_CURRENT_ROW))) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame starting from following row cannot have preceding rows"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(4) - (4)])))); n1->frameOptions = frameOptions; n1->endOffset = n2->startOffset; (yyval.windef) = n1; } -#line 40505 "gram.c" /* yacc.c:1646 */ break; - case 1927: -#line 12955 "gram.y" /* yacc.c:1646 */ + case 2067: +/* Line 1792 of yacc.c */ +#line 13847 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; @@ -40513,11 +44258,11 @@ yyreduce: n->endOffset = NULL; (yyval.windef) = n; } -#line 40517 "gram.c" /* yacc.c:1646 */ break; - case 1928: -#line 12963 "gram.y" /* yacc.c:1646 */ + case 2068: +/* Line 1792 of yacc.c */ +#line 13855 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; @@ -40525,11 +44270,11 @@ yyreduce: n->endOffset = NULL; (yyval.windef) = n; } -#line 40529 "gram.c" /* yacc.c:1646 */ break; - case 1929: -#line 12971 "gram.y" /* yacc.c:1646 */ + case 2069: +/* Line 1792 of yacc.c */ +#line 13863 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; @@ -40537,468 +44282,468 @@ yyreduce: n->endOffset = NULL; (yyval.windef) = n; } -#line 40541 "gram.c" /* yacc.c:1646 */ break; - case 1930: -#line 12979 "gram.y" /* yacc.c:1646 */ + case 2070: +/* Line 1792 of yacc.c */ +#line 13871 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; - n->startOffset = (yyvsp[-1].node); + n->startOffset = (yyvsp[(1) - (2)].node); n->endOffset = NULL; (yyval.windef) = n; } -#line 40553 "gram.c" /* yacc.c:1646 */ break; - case 1931: -#line 12987 "gram.y" /* yacc.c:1646 */ + case 2071: +/* Line 1792 of yacc.c */ +#line 13879 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; - n->startOffset = (yyvsp[-1].node); + n->startOffset = (yyvsp[(1) - (2)].node); n->endOffset = NULL; (yyval.windef) = n; } -#line 40565 "gram.c" /* yacc.c:1646 */ break; - case 1932: -#line 13007 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 40571 "gram.c" /* yacc.c:1646 */ + case 2072: +/* Line 1792 of yacc.c */ +#line 13899 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; - case 1933: -#line 13008 "gram.y" /* yacc.c:1646 */ + case 2073: +/* Line 1792 of yacc.c */ +#line 13900 "gram.y" { (yyval.list) = NIL; } -#line 40577 "gram.c" /* yacc.c:1646 */ break; - case 1934: -#line 13009 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-3].list), (yyvsp[-1].node)); } -#line 40583 "gram.c" /* yacc.c:1646 */ + case 2074: +/* Line 1792 of yacc.c */ +#line 13901 "gram.y" + { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); } break; - case 1935: -#line 13012 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 40589 "gram.c" /* yacc.c:1646 */ + case 2075: +/* Line 1792 of yacc.c */ +#line 13904 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; - case 1936: -#line 13013 "gram.y" /* yacc.c:1646 */ + case 2076: +/* Line 1792 of yacc.c */ +#line 13905 "gram.y" { (yyval.list) = NIL; } -#line 40595 "gram.c" /* yacc.c:1646 */ break; - case 1937: -#line 13016 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-3].list), (yyvsp[-1].node)); } -#line 40601 "gram.c" /* yacc.c:1646 */ + case 2077: +/* Line 1792 of yacc.c */ +#line 13908 "gram.y" + { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); } break; - case 1938: -#line 13019 "gram.y" /* yacc.c:1646 */ + case 2078: +/* Line 1792 of yacc.c */ +#line 13911 "gram.y" { (yyval.ival) = ANY_SUBLINK; } -#line 40607 "gram.c" /* yacc.c:1646 */ break; - case 1939: -#line 13020 "gram.y" /* yacc.c:1646 */ + case 2079: +/* Line 1792 of yacc.c */ +#line 13912 "gram.y" { (yyval.ival) = ANY_SUBLINK; } -#line 40613 "gram.c" /* yacc.c:1646 */ break; - case 1940: -#line 13021 "gram.y" /* yacc.c:1646 */ + case 2080: +/* Line 1792 of yacc.c */ +#line 13913 "gram.y" { (yyval.ival) = ALL_SUBLINK; } -#line 40619 "gram.c" /* yacc.c:1646 */ break; - case 1941: -#line 13024 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 40625 "gram.c" /* yacc.c:1646 */ + case 2081: +/* Line 1792 of yacc.c */ +#line 13916 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 1942: -#line 13025 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 40631 "gram.c" /* yacc.c:1646 */ + case 2082: +/* Line 1792 of yacc.c */ +#line 13917 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 1943: -#line 13028 "gram.y" /* yacc.c:1646 */ + case 2083: +/* Line 1792 of yacc.c */ +#line 13920 "gram.y" { (yyval.str) = "+"; } -#line 40637 "gram.c" /* yacc.c:1646 */ break; - case 1944: -#line 13029 "gram.y" /* yacc.c:1646 */ + case 2084: +/* Line 1792 of yacc.c */ +#line 13921 "gram.y" { (yyval.str) = "-"; } -#line 40643 "gram.c" /* yacc.c:1646 */ break; - case 1945: -#line 13030 "gram.y" /* yacc.c:1646 */ + case 2085: +/* Line 1792 of yacc.c */ +#line 13922 "gram.y" { (yyval.str) = "*"; } -#line 40649 "gram.c" /* yacc.c:1646 */ break; - case 1946: -#line 13031 "gram.y" /* yacc.c:1646 */ + case 2086: +/* Line 1792 of yacc.c */ +#line 13923 "gram.y" { (yyval.str) = "/"; } -#line 40655 "gram.c" /* yacc.c:1646 */ break; - case 1947: -#line 13032 "gram.y" /* yacc.c:1646 */ + case 2087: +/* Line 1792 of yacc.c */ +#line 13924 "gram.y" { (yyval.str) = "%"; } -#line 40661 "gram.c" /* yacc.c:1646 */ break; - case 1948: -#line 13033 "gram.y" /* yacc.c:1646 */ + case 2088: +/* Line 1792 of yacc.c */ +#line 13925 "gram.y" { (yyval.str) = "^"; } -#line 40667 "gram.c" /* yacc.c:1646 */ break; - case 1949: -#line 13034 "gram.y" /* yacc.c:1646 */ + case 2089: +/* Line 1792 of yacc.c */ +#line 13926 "gram.y" { (yyval.str) = "<"; } -#line 40673 "gram.c" /* yacc.c:1646 */ break; - case 1950: -#line 13035 "gram.y" /* yacc.c:1646 */ + case 2090: +/* Line 1792 of yacc.c */ +#line 13927 "gram.y" { (yyval.str) = ">"; } -#line 40679 "gram.c" /* yacc.c:1646 */ break; - case 1951: -#line 13036 "gram.y" /* yacc.c:1646 */ + case 2091: +/* Line 1792 of yacc.c */ +#line 13928 "gram.y" { (yyval.str) = "="; } -#line 40685 "gram.c" /* yacc.c:1646 */ break; - case 1952: -#line 13037 "gram.y" /* yacc.c:1646 */ + case 2092: +/* Line 1792 of yacc.c */ +#line 13929 "gram.y" { (yyval.str) = "<="; } -#line 40691 "gram.c" /* yacc.c:1646 */ break; - case 1953: -#line 13038 "gram.y" /* yacc.c:1646 */ + case 2093: +/* Line 1792 of yacc.c */ +#line 13930 "gram.y" { (yyval.str) = ">="; } -#line 40697 "gram.c" /* yacc.c:1646 */ break; - case 1954: -#line 13039 "gram.y" /* yacc.c:1646 */ + case 2094: +/* Line 1792 of yacc.c */ +#line 13931 "gram.y" { (yyval.str) = "<>"; } -#line 40703 "gram.c" /* yacc.c:1646 */ break; - case 1955: -#line 13043 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 40709 "gram.c" /* yacc.c:1646 */ + case 2095: +/* Line 1792 of yacc.c */ +#line 13935 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; - case 1956: -#line 13045 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 40715 "gram.c" /* yacc.c:1646 */ + case 2096: +/* Line 1792 of yacc.c */ +#line 13937 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; - case 1957: -#line 13050 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 40721 "gram.c" /* yacc.c:1646 */ + case 2097: +/* Line 1792 of yacc.c */ +#line 13942 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; - case 1958: -#line 13052 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 40727 "gram.c" /* yacc.c:1646 */ + case 2098: +/* Line 1792 of yacc.c */ +#line 13944 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; - case 1959: -#line 13057 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 40733 "gram.c" /* yacc.c:1646 */ + case 2099: +/* Line 1792 of yacc.c */ +#line 13949 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; - case 1960: -#line 13059 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 40739 "gram.c" /* yacc.c:1646 */ + case 2100: +/* Line 1792 of yacc.c */ +#line 13951 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; - case 1961: -#line 13061 "gram.y" /* yacc.c:1646 */ + case 2101: +/* Line 1792 of yacc.c */ +#line 13953 "gram.y" { (yyval.list) = list_make1(makeString("~~")); } -#line 40745 "gram.c" /* yacc.c:1646 */ break; - case 1962: -#line 13063 "gram.y" /* yacc.c:1646 */ + case 2102: +/* Line 1792 of yacc.c */ +#line 13955 "gram.y" { (yyval.list) = list_make1(makeString("!~~")); } -#line 40751 "gram.c" /* yacc.c:1646 */ break; - case 1963: -#line 13065 "gram.y" /* yacc.c:1646 */ + case 2103: +/* Line 1792 of yacc.c */ +#line 13957 "gram.y" { (yyval.list) = list_make1(makeString("~~*")); } -#line 40757 "gram.c" /* yacc.c:1646 */ break; - case 1964: -#line 13067 "gram.y" /* yacc.c:1646 */ + case 2104: +/* Line 1792 of yacc.c */ +#line 13959 "gram.y" { (yyval.list) = list_make1(makeString("!~~*")); } -#line 40763 "gram.c" /* yacc.c:1646 */ break; - case 1965: -#line 13079 "gram.y" /* yacc.c:1646 */ + case 2105: +/* Line 1792 of yacc.c */ +#line 13971 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 40771 "gram.c" /* yacc.c:1646 */ break; - case 1966: -#line 13083 "gram.y" /* yacc.c:1646 */ + case 2106: +/* Line 1792 of yacc.c */ +#line 13975 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 40779 "gram.c" /* yacc.c:1646 */ break; - case 1967: -#line 13090 "gram.y" /* yacc.c:1646 */ + case 2107: +/* Line 1792 of yacc.c */ +#line 13982 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 40787 "gram.c" /* yacc.c:1646 */ break; - case 1968: -#line 13094 "gram.y" /* yacc.c:1646 */ + case 2108: +/* Line 1792 of yacc.c */ +#line 13986 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 40795 "gram.c" /* yacc.c:1646 */ break; - case 1969: -#line 13100 "gram.y" /* yacc.c:1646 */ + case 2109: +/* Line 1792 of yacc.c */ +#line 13992 "gram.y" { - (yyval.node) = (yyvsp[0].node); + (yyval.node) = (yyvsp[(1) - (1)].node); } -#line 40803 "gram.c" /* yacc.c:1646 */ break; - case 1970: -#line 13104 "gram.y" /* yacc.c:1646 */ + case 2110: +/* Line 1792 of yacc.c */ +#line 13996 "gram.y" { NamedArgExpr *na = makeNode(NamedArgExpr); - na->name = (yyvsp[-2].str); - na->arg = (Expr *) (yyvsp[0].node); + na->name = (yyvsp[(1) - (3)].str); + na->arg = (Expr *) (yyvsp[(3) - (3)].node); na->argnumber = -1; /* until determined */ - na->location = (yylsp[-2]); + na->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) na; } -#line 40816 "gram.c" /* yacc.c:1646 */ break; - case 1971: -#line 13113 "gram.y" /* yacc.c:1646 */ + case 2111: +/* Line 1792 of yacc.c */ +#line 14005 "gram.y" { NamedArgExpr *na = makeNode(NamedArgExpr); - na->name = (yyvsp[-2].str); - na->arg = (Expr *) (yyvsp[0].node); + na->name = (yyvsp[(1) - (3)].str); + na->arg = (Expr *) (yyvsp[(3) - (3)].node); na->argnumber = -1; /* until determined */ - na->location = (yylsp[-2]); + na->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) na; } -#line 40829 "gram.c" /* yacc.c:1646 */ break; - case 1972: -#line 13123 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].typnam)); } -#line 40835 "gram.c" /* yacc.c:1646 */ + case 2112: +/* Line 1792 of yacc.c */ +#line 14015 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); } break; - case 1973: -#line 13124 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].typnam)); } -#line 40841 "gram.c" /* yacc.c:1646 */ + case 2113: +/* Line 1792 of yacc.c */ +#line 14016 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); } break; - case 1974: -#line 13128 "gram.y" /* yacc.c:1646 */ + case 2114: +/* Line 1792 of yacc.c */ +#line 14020 "gram.y" { - (yyval.node) = makeAArrayExpr((yyvsp[-1].list), (yylsp[-2])); + (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); } -#line 40849 "gram.c" /* yacc.c:1646 */ break; - case 1975: -#line 13132 "gram.y" /* yacc.c:1646 */ + case 2115: +/* Line 1792 of yacc.c */ +#line 14024 "gram.y" { - (yyval.node) = makeAArrayExpr((yyvsp[-1].list), (yylsp[-2])); + (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); } -#line 40857 "gram.c" /* yacc.c:1646 */ break; - case 1976: -#line 13136 "gram.y" /* yacc.c:1646 */ + case 2116: +/* Line 1792 of yacc.c */ +#line 14028 "gram.y" { - (yyval.node) = makeAArrayExpr(NIL, (yylsp[-1])); + (yyval.node) = makeAArrayExpr(NIL, (yylsp[(1) - (2)])); } -#line 40865 "gram.c" /* yacc.c:1646 */ break; - case 1977: -#line 13141 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 40871 "gram.c" /* yacc.c:1646 */ + case 2117: +/* Line 1792 of yacc.c */ +#line 14033 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 1978: -#line 13142 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 40877 "gram.c" /* yacc.c:1646 */ + case 2118: +/* Line 1792 of yacc.c */ +#line 14034 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 1979: -#line 13148 "gram.y" /* yacc.c:1646 */ + case 2119: +/* Line 1792 of yacc.c */ +#line 14040 "gram.y" { - (yyval.list) = list_make2(makeStringConst((yyvsp[-2].str), (yylsp[-2])), (yyvsp[0].node)); + (yyval.list) = list_make2(makeStringConst((yyvsp[(1) - (3)].str), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); } -#line 40885 "gram.c" /* yacc.c:1646 */ break; - case 1980: -#line 13151 "gram.y" /* yacc.c:1646 */ + case 2120: +/* Line 1792 of yacc.c */ +#line 14043 "gram.y" { (yyval.list) = NIL; } -#line 40891 "gram.c" /* yacc.c:1646 */ break; - case 1981: -#line 13158 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 40897 "gram.c" /* yacc.c:1646 */ + case 2121: +/* Line 1792 of yacc.c */ +#line 14050 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 1982: -#line 13159 "gram.y" /* yacc.c:1646 */ + case 2122: +/* Line 1792 of yacc.c */ +#line 14051 "gram.y" { (yyval.str) = "year"; } -#line 40903 "gram.c" /* yacc.c:1646 */ break; - case 1983: -#line 13160 "gram.y" /* yacc.c:1646 */ + case 2123: +/* Line 1792 of yacc.c */ +#line 14052 "gram.y" { (yyval.str) = "month"; } -#line 40909 "gram.c" /* yacc.c:1646 */ break; - case 1984: -#line 13161 "gram.y" /* yacc.c:1646 */ + case 2124: +/* Line 1792 of yacc.c */ +#line 14053 "gram.y" { (yyval.str) = "day"; } -#line 40915 "gram.c" /* yacc.c:1646 */ break; - case 1985: -#line 13162 "gram.y" /* yacc.c:1646 */ + case 2125: +/* Line 1792 of yacc.c */ +#line 14054 "gram.y" { (yyval.str) = "hour"; } -#line 40921 "gram.c" /* yacc.c:1646 */ break; - case 1986: -#line 13163 "gram.y" /* yacc.c:1646 */ + case 2126: +/* Line 1792 of yacc.c */ +#line 14055 "gram.y" { (yyval.str) = "minute"; } -#line 40927 "gram.c" /* yacc.c:1646 */ break; - case 1987: -#line 13164 "gram.y" /* yacc.c:1646 */ + case 2127: +/* Line 1792 of yacc.c */ +#line 14056 "gram.y" { (yyval.str) = "second"; } -#line 40933 "gram.c" /* yacc.c:1646 */ break; - case 1988: -#line 13165 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 40939 "gram.c" /* yacc.c:1646 */ + case 2128: +/* Line 1792 of yacc.c */ +#line 14057 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 1989: -#line 13176 "gram.y" /* yacc.c:1646 */ + case 2129: +/* Line 1792 of yacc.c */ +#line 14068 "gram.y" { - (yyval.list) = list_make4((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + (yyval.list) = list_make4((yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node)); } -#line 40947 "gram.c" /* yacc.c:1646 */ break; - case 1990: -#line 13180 "gram.y" /* yacc.c:1646 */ + case 2130: +/* Line 1792 of yacc.c */ +#line 14072 "gram.y" { - (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); } -#line 40955 "gram.c" /* yacc.c:1646 */ break; - case 1991: -#line 13187 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 40961 "gram.c" /* yacc.c:1646 */ + case 2131: +/* Line 1792 of yacc.c */ +#line 14079 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; - case 1992: -#line 13193 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[0].node), (yyvsp[-2].node)); } -#line 40967 "gram.c" /* yacc.c:1646 */ + case 2132: +/* Line 1792 of yacc.c */ +#line 14085 "gram.y" + { (yyval.list) = list_make2((yyvsp[(3) - (3)].node), (yyvsp[(1) - (3)].node)); } break; - case 1993: -#line 13194 "gram.y" /* yacc.c:1646 */ + case 2133: +/* Line 1792 of yacc.c */ +#line 14086 "gram.y" { (yyval.list) = NIL; } -#line 40973 "gram.c" /* yacc.c:1646 */ break; - case 1994: -#line 13211 "gram.y" /* yacc.c:1646 */ + case 2134: +/* Line 1792 of yacc.c */ +#line 14103 "gram.y" { - (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); } -#line 40981 "gram.c" /* yacc.c:1646 */ break; - case 1995: -#line 13215 "gram.y" /* yacc.c:1646 */ + case 2135: +/* Line 1792 of yacc.c */ +#line 14107 "gram.y" { /* not legal per SQL99, but might as well allow it */ - (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[0].node), (yyvsp[-1].node)); + (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyvsp[(2) - (3)].node)); } -#line 40990 "gram.c" /* yacc.c:1646 */ break; - case 1996: -#line 13220 "gram.y" /* yacc.c:1646 */ + case 2136: +/* Line 1792 of yacc.c */ +#line 14112 "gram.y" { - (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].node)); + (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); } -#line 40998 "gram.c" /* yacc.c:1646 */ break; - case 1997: -#line 13224 "gram.y" /* yacc.c:1646 */ + case 2137: +/* Line 1792 of yacc.c */ +#line 14116 "gram.y" { /* * Since there are no cases where this syntax allows @@ -41009,511 +44754,477 @@ yyreduce: * which it is likely to do if the second argument * is unknown or doesn't have an implicit cast to int4. */ - (yyval.list) = list_make3((yyvsp[-1].node), makeIntConst(1, -1), - makeTypeCast((yyvsp[0].node), + (yyval.list) = list_make3((yyvsp[(1) - (2)].node), makeIntConst(1, -1), + makeTypeCast((yyvsp[(2) - (2)].node), SystemTypeName("int4"), -1)); } -#line 41017 "gram.c" /* yacc.c:1646 */ break; - case 1998: -#line 13239 "gram.y" /* yacc.c:1646 */ + case 2138: +/* Line 1792 of yacc.c */ +#line 14131 "gram.y" { - (yyval.list) = (yyvsp[0].list); + (yyval.list) = (yyvsp[(1) - (1)].list); } -#line 41025 "gram.c" /* yacc.c:1646 */ break; - case 1999: -#line 13243 "gram.y" /* yacc.c:1646 */ + case 2139: +/* Line 1792 of yacc.c */ +#line 14135 "gram.y" { (yyval.list) = NIL; } -#line 41031 "gram.c" /* yacc.c:1646 */ break; - case 2000: -#line 13247 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 41037 "gram.c" /* yacc.c:1646 */ + case 2140: +/* Line 1792 of yacc.c */ +#line 14139 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; - case 2001: -#line 13250 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 41043 "gram.c" /* yacc.c:1646 */ + case 2141: +/* Line 1792 of yacc.c */ +#line 14142 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; - case 2002: -#line 13253 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[0].list), (yyvsp[-2].node)); } -#line 41049 "gram.c" /* yacc.c:1646 */ + case 2142: +/* Line 1792 of yacc.c */ +#line 14145 "gram.y" + { (yyval.list) = lappend((yyvsp[(3) - (3)].list), (yyvsp[(1) - (3)].node)); } break; - case 2003: -#line 13254 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 41055 "gram.c" /* yacc.c:1646 */ + case 2143: +/* Line 1792 of yacc.c */ +#line 14146 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; - case 2004: -#line 13255 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 41061 "gram.c" /* yacc.c:1646 */ + case 2144: +/* Line 1792 of yacc.c */ +#line 14147 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 2005: -#line 13259 "gram.y" /* yacc.c:1646 */ + case 2145: +/* Line 1792 of yacc.c */ +#line 14151 "gram.y" { SubLink *n = makeNode(SubLink); - n->subselect = (yyvsp[0].node); + n->subselect = (yyvsp[(1) - (1)].node); /* other fields will be filled later */ (yyval.node) = (Node *)n; } -#line 41072 "gram.c" /* yacc.c:1646 */ break; - case 2006: -#line 13265 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)(yyvsp[-1].list); } -#line 41078 "gram.c" /* yacc.c:1646 */ + case 2146: +/* Line 1792 of yacc.c */ +#line 14157 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(2) - (3)].list); } break; - case 2007: -#line 13276 "gram.y" /* yacc.c:1646 */ + case 2147: +/* Line 1792 of yacc.c */ +#line 14168 "gram.y" { CaseExpr *c = makeNode(CaseExpr); c->casetype = InvalidOid; /* not analyzed yet */ - c->arg = (Expr *) (yyvsp[-3].node); - c->args = (yyvsp[-2].list); - c->defresult = (Expr *) (yyvsp[-1].node); - c->location = (yylsp[-4]); + c->arg = (Expr *) (yyvsp[(2) - (5)].node); + c->args = (yyvsp[(3) - (5)].list); + c->defresult = (Expr *) (yyvsp[(4) - (5)].node); + c->location = (yylsp[(1) - (5)]); (yyval.node) = (Node *)c; } -#line 41092 "gram.c" /* yacc.c:1646 */ break; - case 2008: -#line 13289 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 41098 "gram.c" /* yacc.c:1646 */ + case 2148: +/* Line 1792 of yacc.c */ +#line 14181 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 2009: -#line 13290 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } -#line 41104 "gram.c" /* yacc.c:1646 */ + case 2149: +/* Line 1792 of yacc.c */ +#line 14182 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; - case 2010: -#line 13295 "gram.y" /* yacc.c:1646 */ + case 2150: +/* Line 1792 of yacc.c */ +#line 14187 "gram.y" { CaseWhen *w = makeNode(CaseWhen); - w->expr = (Expr *) (yyvsp[-2].node); - w->result = (Expr *) (yyvsp[0].node); - w->location = (yylsp[-3]); + w->expr = (Expr *) (yyvsp[(2) - (4)].node); + w->result = (Expr *) (yyvsp[(4) - (4)].node); + w->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)w; } -#line 41116 "gram.c" /* yacc.c:1646 */ break; - case 2011: -#line 13305 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 41122 "gram.c" /* yacc.c:1646 */ + case 2151: +/* Line 1792 of yacc.c */ +#line 14197 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; - case 2012: -#line 13306 "gram.y" /* yacc.c:1646 */ + case 2152: +/* Line 1792 of yacc.c */ +#line 14198 "gram.y" { (yyval.node) = NULL; } -#line 41128 "gram.c" /* yacc.c:1646 */ break; - case 2013: -#line 13309 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 41134 "gram.c" /* yacc.c:1646 */ + case 2153: +/* Line 1792 of yacc.c */ +#line 14201 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 2014: -#line 13310 "gram.y" /* yacc.c:1646 */ + case 2154: +/* Line 1792 of yacc.c */ +#line 14202 "gram.y" { (yyval.node) = NULL; } -#line 41140 "gram.c" /* yacc.c:1646 */ break; - case 2015: -#line 13314 "gram.y" /* yacc.c:1646 */ + case 2155: +/* Line 1792 of yacc.c */ +#line 14206 "gram.y" { - (yyval.node) = makeColumnRef((yyvsp[0].str), NIL, (yylsp[0]), yyscanner); + (yyval.node) = makeColumnRef((yyvsp[(1) - (1)].str), NIL, (yylsp[(1) - (1)]), yyscanner); } -#line 41148 "gram.c" /* yacc.c:1646 */ break; - case 2016: -#line 13318 "gram.y" /* yacc.c:1646 */ + case 2156: +/* Line 1792 of yacc.c */ +#line 14210 "gram.y" { - (yyval.node) = makeColumnRef((yyvsp[-1].str), (yyvsp[0].list), (yylsp[-1]), yyscanner); + (yyval.node) = makeColumnRef((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)]), yyscanner); } -#line 41156 "gram.c" /* yacc.c:1646 */ break; - case 2017: -#line 13325 "gram.y" /* yacc.c:1646 */ + case 2157: +/* Line 1792 of yacc.c */ +#line 14217 "gram.y" { - (yyval.node) = (Node *) makeString((yyvsp[0].str)); + (yyval.node) = (Node *) makeString((yyvsp[(2) - (2)].str)); } -#line 41164 "gram.c" /* yacc.c:1646 */ break; - case 2018: -#line 13329 "gram.y" /* yacc.c:1646 */ + case 2158: +/* Line 1792 of yacc.c */ +#line 14221 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); } -#line 41172 "gram.c" /* yacc.c:1646 */ break; - case 2019: -#line 13333 "gram.y" /* yacc.c:1646 */ + case 2159: +/* Line 1792 of yacc.c */ +#line 14225 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->is_slice = false; ai->lidx = NULL; - ai->uidx = (yyvsp[-1].node); + ai->uidx = (yyvsp[(2) - (3)].node); (yyval.node) = (Node *) ai; } -#line 41184 "gram.c" /* yacc.c:1646 */ break; - case 2020: -#line 13341 "gram.y" /* yacc.c:1646 */ + case 2160: +/* Line 1792 of yacc.c */ +#line 14233 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->is_slice = true; - ai->lidx = (yyvsp[-3].node); - ai->uidx = (yyvsp[-1].node); + ai->lidx = (yyvsp[(2) - (5)].node); + ai->uidx = (yyvsp[(4) - (5)].node); (yyval.node) = (Node *) ai; } -#line 41196 "gram.c" /* yacc.c:1646 */ break; - case 2021: -#line 13351 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 41202 "gram.c" /* yacc.c:1646 */ + case 2161: +/* Line 1792 of yacc.c */ +#line 14243 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 2022: -#line 13352 "gram.y" /* yacc.c:1646 */ + case 2162: +/* Line 1792 of yacc.c */ +#line 14244 "gram.y" { (yyval.node) = NULL; } -#line 41208 "gram.c" /* yacc.c:1646 */ break; - case 2023: -#line 13356 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 41214 "gram.c" /* yacc.c:1646 */ + case 2163: +/* Line 1792 of yacc.c */ +#line 14248 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; - case 2024: -#line 13357 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } -#line 41220 "gram.c" /* yacc.c:1646 */ + case 2164: +/* Line 1792 of yacc.c */ +#line 14249 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; - case 2025: -#line 13361 "gram.y" /* yacc.c:1646 */ + case 2165: +/* Line 1792 of yacc.c */ +#line 14253 "gram.y" { (yyval.list) = NIL; } -#line 41226 "gram.c" /* yacc.c:1646 */ - break; - - case 2026: -#line 13362 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } -#line 41232 "gram.c" /* yacc.c:1646 */ - break; - - case 2029: -#line 13377 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[0].node); } -#line 41238 "gram.c" /* yacc.c:1646 */ - break; - - case 2030: -#line 13379 "gram.y" /* yacc.c:1646 */ - { - SetToDefault *n = makeNode(SetToDefault); - n->location = (yylsp[0]); - (yyval.node) = (Node *) n; - } -#line 41248 "gram.c" /* yacc.c:1646 */ - break; - - case 2031: -#line 13387 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 41254 "gram.c" /* yacc.c:1646 */ - break; - - case 2032: -#line 13388 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 41260 "gram.c" /* yacc.c:1646 */ break; - case 2033: -#line 13396 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 41266 "gram.c" /* yacc.c:1646 */ + case 2166: +/* Line 1792 of yacc.c */ +#line 14254 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; - case 2034: -#line 13406 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 41272 "gram.c" /* yacc.c:1646 */ + case 2169: +/* Line 1792 of yacc.c */ +#line 14268 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; - case 2035: -#line 13407 "gram.y" /* yacc.c:1646 */ + case 2170: +/* Line 1792 of yacc.c */ +#line 14269 "gram.y" { (yyval.list) = NIL; } -#line 41278 "gram.c" /* yacc.c:1646 */ break; - case 2036: -#line 13411 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].target)); } -#line 41284 "gram.c" /* yacc.c:1646 */ + case 2171: +/* Line 1792 of yacc.c */ +#line 14273 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); } break; - case 2037: -#line 13412 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } -#line 41290 "gram.c" /* yacc.c:1646 */ + case 2172: +/* Line 1792 of yacc.c */ +#line 14274 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); } break; - case 2038: -#line 13416 "gram.y" /* yacc.c:1646 */ + case 2173: +/* Line 1792 of yacc.c */ +#line 14278 "gram.y" { (yyval.target) = makeNode(ResTarget); - (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->name = (yyvsp[(3) - (3)].str); (yyval.target)->indirection = NIL; - (yyval.target)->val = (Node *)(yyvsp[-2].node); - (yyval.target)->location = (yylsp[-2]); + (yyval.target)->val = (Node *)(yyvsp[(1) - (3)].node); + (yyval.target)->location = (yylsp[(1) - (3)]); } -#line 41302 "gram.c" /* yacc.c:1646 */ break; - case 2039: -#line 13432 "gram.y" /* yacc.c:1646 */ + case 2174: +/* Line 1792 of yacc.c */ +#line 14294 "gram.y" { (yyval.target) = makeNode(ResTarget); - (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->name = (yyvsp[(2) - (2)].str); (yyval.target)->indirection = NIL; - (yyval.target)->val = (Node *)(yyvsp[-1].node); - (yyval.target)->location = (yylsp[-1]); + (yyval.target)->val = (Node *)(yyvsp[(1) - (2)].node); + (yyval.target)->location = (yylsp[(1) - (2)]); } -#line 41314 "gram.c" /* yacc.c:1646 */ break; - case 2040: -#line 13440 "gram.y" /* yacc.c:1646 */ + case 2175: +/* Line 1792 of yacc.c */ +#line 14302 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; (yyval.target)->indirection = NIL; - (yyval.target)->val = (Node *)(yyvsp[0].node); - (yyval.target)->location = (yylsp[0]); + (yyval.target)->val = (Node *)(yyvsp[(1) - (1)].node); + (yyval.target)->location = (yylsp[(1) - (1)]); } -#line 41326 "gram.c" /* yacc.c:1646 */ break; - case 2041: -#line 13448 "gram.y" /* yacc.c:1646 */ + case 2176: +/* Line 1792 of yacc.c */ +#line 14310 "gram.y" { ColumnRef *n = makeNode(ColumnRef); n->fields = list_make1(makeNode(A_Star)); - n->location = (yylsp[0]); + n->location = (yylsp[(1) - (1)]); (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; (yyval.target)->indirection = NIL; (yyval.target)->val = (Node *)n; - (yyval.target)->location = (yylsp[0]); + (yyval.target)->location = (yylsp[(1) - (1)]); } -#line 41342 "gram.c" /* yacc.c:1646 */ break; - case 2042: -#line 13469 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].range)); } -#line 41348 "gram.c" /* yacc.c:1646 */ + case 2177: +/* Line 1792 of yacc.c */ +#line 14331 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); } break; - case 2043: -#line 13470 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].range)); } -#line 41354 "gram.c" /* yacc.c:1646 */ + case 2178: +/* Line 1792 of yacc.c */ +#line 14332 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); } break; - case 2044: -#line 13482 "gram.y" /* yacc.c:1646 */ + case 2179: +/* Line 1792 of yacc.c */ +#line 14344 "gram.y" { - (yyval.range) = makeRangeVar(NULL, (yyvsp[0].str), (yylsp[0])); + (yyval.range) = makeRangeVar(NULL, (yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 41362 "gram.c" /* yacc.c:1646 */ break; - case 2045: -#line 13486 "gram.y" /* yacc.c:1646 */ + case 2180: +/* Line 1792 of yacc.c */ +#line 14348 "gram.y" { - check_qualified_name((yyvsp[0].list), yyscanner); - (yyval.range) = makeRangeVar(NULL, NULL, (yylsp[-1])); - switch (list_length((yyvsp[0].list))) + check_qualified_name((yyvsp[(2) - (2)].list), yyscanner); + (yyval.range) = makeRangeVar(NULL, NULL, (yylsp[(1) - (2)])); + switch (list_length((yyvsp[(2) - (2)].list))) { case 1: (yyval.range)->catalogname = NULL; - (yyval.range)->schemaname = (yyvsp[-1].str); - (yyval.range)->relname = strVal(linitial((yyvsp[0].list))); + (yyval.range)->schemaname = (yyvsp[(1) - (2)].str); + (yyval.range)->relname = strVal(linitial((yyvsp[(2) - (2)].list))); break; case 2: - (yyval.range)->catalogname = (yyvsp[-1].str); - (yyval.range)->schemaname = strVal(linitial((yyvsp[0].list))); - (yyval.range)->relname = strVal(lsecond((yyvsp[0].list))); + (yyval.range)->catalogname = (yyvsp[(1) - (2)].str); + (yyval.range)->schemaname = strVal(linitial((yyvsp[(2) - (2)].list))); + (yyval.range)->relname = strVal(lsecond((yyvsp[(2) - (2)].list))); break; default: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("improper qualified name (too many dotted names): %s", - NameListToString(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)))), - parser_errposition((yylsp[-1])))); + NameListToString(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)))), + parser_errposition((yylsp[(1) - (2)])))); break; } } -#line 41391 "gram.c" /* yacc.c:1646 */ break; - case 2046: -#line 13513 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 41397 "gram.c" /* yacc.c:1646 */ + case 2181: +/* Line 1792 of yacc.c */ +#line 14375 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; - case 2047: -#line 13515 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } -#line 41403 "gram.c" /* yacc.c:1646 */ + case 2182: +/* Line 1792 of yacc.c */ +#line 14377 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); } break; - case 2048: -#line 13519 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 41409 "gram.c" /* yacc.c:1646 */ + case 2183: +/* Line 1792 of yacc.c */ +#line 14381 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 2049: -#line 13522 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 41415 "gram.c" /* yacc.c:1646 */ + case 2184: +/* Line 1792 of yacc.c */ +#line 14384 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 2050: -#line 13525 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 41421 "gram.c" /* yacc.c:1646 */ + case 2185: +/* Line 1792 of yacc.c */ +#line 14387 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 2051: -#line 13527 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 41427 "gram.c" /* yacc.c:1646 */ + case 2186: +/* Line 1792 of yacc.c */ +#line 14389 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 2052: -#line 13529 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 41433 "gram.c" /* yacc.c:1646 */ + case 2187: +/* Line 1792 of yacc.c */ +#line 14391 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 2053: -#line 13531 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 41439 "gram.c" /* yacc.c:1646 */ + case 2188: +/* Line 1792 of yacc.c */ +#line 14393 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 2054: -#line 13542 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 41445 "gram.c" /* yacc.c:1646 */ + case 2189: +/* Line 1792 of yacc.c */ +#line 14404 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; - case 2055: -#line 13544 "gram.y" /* yacc.c:1646 */ + case 2190: +/* Line 1792 of yacc.c */ +#line 14406 "gram.y" { - (yyval.list) = check_func_name(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)), + (yyval.list) = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), yyscanner); } -#line 41454 "gram.c" /* yacc.c:1646 */ break; - case 2056: -#line 13555 "gram.y" /* yacc.c:1646 */ + case 2191: +/* Line 1792 of yacc.c */ +#line 14417 "gram.y" { - (yyval.node) = makeIntConst((yyvsp[0].ival), (yylsp[0])); + (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); } -#line 41462 "gram.c" /* yacc.c:1646 */ break; - case 2057: -#line 13559 "gram.y" /* yacc.c:1646 */ + case 2192: +/* Line 1792 of yacc.c */ +#line 14421 "gram.y" { - (yyval.node) = makeFloatConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 41470 "gram.c" /* yacc.c:1646 */ break; - case 2058: -#line 13563 "gram.y" /* yacc.c:1646 */ + case 2193: +/* Line 1792 of yacc.c */ +#line 14425 "gram.y" { - (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 41478 "gram.c" /* yacc.c:1646 */ break; - case 2059: -#line 13567 "gram.y" /* yacc.c:1646 */ + case 2194: +/* Line 1792 of yacc.c */ +#line 14429 "gram.y" { - (yyval.node) = makeBitStringConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 41486 "gram.c" /* yacc.c:1646 */ break; - case 2060: -#line 13571 "gram.y" /* yacc.c:1646 */ + case 2195: +/* Line 1792 of yacc.c */ +#line 14433 "gram.y" { /* This is a bit constant per SQL99: * Without Feature F511, "BIT data type", * a shall not be a * or a . */ - (yyval.node) = makeBitStringConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 41499 "gram.c" /* yacc.c:1646 */ break; - case 2061: -#line 13580 "gram.y" /* yacc.c:1646 */ + case 2196: +/* Line 1792 of yacc.c */ +#line 14442 "gram.y" { /* generic type 'literal' syntax */ - TypeName *t = makeTypeNameFromNameList((yyvsp[-1].list)); - t->location = (yylsp[-1]); - (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (2)].list)); + t->location = (yylsp[(1) - (2)]); + (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), t); } -#line 41510 "gram.c" /* yacc.c:1646 */ break; - case 2062: -#line 13587 "gram.y" /* yacc.c:1646 */ + case 2197: +/* Line 1792 of yacc.c */ +#line 14449 "gram.y" { /* generic syntax with a type modifier */ - TypeName *t = makeTypeNameFromNameList((yyvsp[-5].list)); + TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (6)].list)); ListCell *lc; /* @@ -41522,7 +45233,7 @@ yyreduce: * don't actually wish to allow NamedArgExpr in this * context, nor ORDER BY. */ - foreach(lc, (yyvsp[-3].list)) + foreach(lc, (yyvsp[(3) - (6)].list)) { NamedArgExpr *arg = (NamedArgExpr *) lfirst(lc); @@ -41532,106 +45243,106 @@ yyreduce: errmsg("type modifier cannot have parameter name"), parser_errposition(arg->location))); } - if ((yyvsp[-2].list) != NIL) + if ((yyvsp[(4) - (6)].list) != NIL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("type modifier cannot have ORDER BY"), - parser_errposition((yylsp[-2])))); + parser_errposition((yylsp[(4) - (6)])))); - t->typmods = (yyvsp[-3].list); - t->location = (yylsp[-5]); - (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + t->typmods = (yyvsp[(3) - (6)].list); + t->location = (yylsp[(1) - (6)]); + (yyval.node) = makeStringConstCast((yyvsp[(6) - (6)].str), (yylsp[(6) - (6)]), t); } -#line 41546 "gram.c" /* yacc.c:1646 */ break; - case 2063: -#line 13619 "gram.y" /* yacc.c:1646 */ + case 2198: +/* Line 1792 of yacc.c */ +#line 14481 "gram.y" { - (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), (yyvsp[-1].typnam)); + (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); } -#line 41554 "gram.c" /* yacc.c:1646 */ break; - case 2064: -#line 13623 "gram.y" /* yacc.c:1646 */ + case 2199: +/* Line 1792 of yacc.c */ +#line 14485 "gram.y" { - TypeName *t = (yyvsp[-2].typnam); - t->typmods = (yyvsp[0].list); - (yyval.node) = makeStringConstCast((yyvsp[-1].str), (yylsp[-1]), t); + TypeName *t = (yyvsp[(1) - (3)].typnam); + t->typmods = (yyvsp[(3) - (3)].list); + (yyval.node) = makeStringConstCast((yyvsp[(2) - (3)].str), (yylsp[(2) - (3)]), t); } -#line 41564 "gram.c" /* yacc.c:1646 */ break; - case 2065: -#line 13629 "gram.y" /* yacc.c:1646 */ + case 2200: +/* Line 1792 of yacc.c */ +#line 14491 "gram.y" { - TypeName *t = (yyvsp[-4].typnam); + TypeName *t = (yyvsp[(1) - (5)].typnam); t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), - makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); - (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); + (yyval.node) = makeStringConstCast((yyvsp[(5) - (5)].str), (yylsp[(5) - (5)]), t); } -#line 41575 "gram.c" /* yacc.c:1646 */ break; - case 2066: -#line 13636 "gram.y" /* yacc.c:1646 */ + case 2201: +/* Line 1792 of yacc.c */ +#line 14498 "gram.y" { - (yyval.node) = makeBoolAConst(TRUE, (yylsp[0])); + (yyval.node) = makeBoolAConst(TRUE, (yylsp[(1) - (1)])); } -#line 41583 "gram.c" /* yacc.c:1646 */ break; - case 2067: -#line 13640 "gram.y" /* yacc.c:1646 */ + case 2202: +/* Line 1792 of yacc.c */ +#line 14502 "gram.y" { - (yyval.node) = makeBoolAConst(FALSE, (yylsp[0])); + (yyval.node) = makeBoolAConst(FALSE, (yylsp[(1) - (1)])); } -#line 41591 "gram.c" /* yacc.c:1646 */ break; - case 2068: -#line 13644 "gram.y" /* yacc.c:1646 */ + case 2203: +/* Line 1792 of yacc.c */ +#line 14506 "gram.y" { - (yyval.node) = makeNullAConst((yylsp[0])); + (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); } -#line 41599 "gram.c" /* yacc.c:1646 */ break; - case 2069: -#line 13649 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 41605 "gram.c" /* yacc.c:1646 */ + case 2204: +/* Line 1792 of yacc.c */ +#line 14511 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (1)].ival); } break; - case 2070: -#line 13650 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 41611 "gram.c" /* yacc.c:1646 */ + case 2205: +/* Line 1792 of yacc.c */ +#line 14512 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 2071: -#line 13652 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 41617 "gram.c" /* yacc.c:1646 */ + case 2206: +/* Line 1792 of yacc.c */ +#line 14514 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (1)].ival); } break; - case 2072: -#line 13653 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = + (yyvsp[0].ival); } -#line 41623 "gram.c" /* yacc.c:1646 */ + case 2207: +/* Line 1792 of yacc.c */ +#line 14515 "gram.y" + { (yyval.ival) = + (yyvsp[(2) - (2)].ival); } break; - case 2073: -#line 13654 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = - (yyvsp[0].ival); } -#line 41629 "gram.c" /* yacc.c:1646 */ + case 2208: +/* Line 1792 of yacc.c */ +#line 14516 "gram.y" + { (yyval.ival) = - (yyvsp[(2) - (2)].ival); } break; - case 2074: -#line 13659 "gram.y" /* yacc.c:1646 */ + case 2209: +/* Line 1792 of yacc.c */ +#line 14521 "gram.y" { - RoleSpec *spc = (RoleSpec *) (yyvsp[0].node); + RoleSpec *spc = (RoleSpec *) (yyvsp[(1) - (1)].rolespec); switch (spc->roletype) { case ROLESPEC_CSTRING: @@ -41642,175 +45353,175 @@ yyreduce: (errcode(ERRCODE_RESERVED_NAME), errmsg("role name \"%s\" is reserved", "public"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); case ROLESPEC_SESSION_USER: ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("%s cannot be used as a role name here", "SESSION_USER"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); case ROLESPEC_CURRENT_USER: ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("%s cannot be used as a role name here", "CURRENT_USER"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); } } -#line 41661 "gram.c" /* yacc.c:1646 */ break; - case 2075: -#line 13689 "gram.y" /* yacc.c:1646 */ + case 2210: +/* Line 1792 of yacc.c */ +#line 14551 "gram.y" { /* * "public" and "none" are not keywords, but they must * be treated specially here. */ RoleSpec *n; - if (strcmp((yyvsp[0].str), "public") == 0) + if (strcmp((yyvsp[(1) - (1)].str), "public") == 0) { - n = (RoleSpec *) makeRoleSpec(ROLESPEC_PUBLIC, (yylsp[0])); + n = (RoleSpec *) makeRoleSpec(ROLESPEC_PUBLIC, (yylsp[(1) - (1)])); n->roletype = ROLESPEC_PUBLIC; } - else if (strcmp((yyvsp[0].str), "none") == 0) + else if (strcmp((yyvsp[(1) - (1)].str), "none") == 0) { ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("role name \"%s\" is reserved", "none"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); } else { - n = (RoleSpec *) makeRoleSpec(ROLESPEC_CSTRING, (yylsp[0])); - n->rolename = pstrdup((yyvsp[0].str)); + n = makeRoleSpec(ROLESPEC_CSTRING, (yylsp[(1) - (1)])); + n->rolename = pstrdup((yyvsp[(1) - (1)].str)); } - (yyval.node) = (Node *) n; + (yyval.rolespec) = n; } -#line 41692 "gram.c" /* yacc.c:1646 */ break; - case 2076: -#line 13716 "gram.y" /* yacc.c:1646 */ + case 2211: +/* Line 1792 of yacc.c */ +#line 14578 "gram.y" { - (yyval.node) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[0])); + (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); } -#line 41700 "gram.c" /* yacc.c:1646 */ break; - case 2077: -#line 13720 "gram.y" /* yacc.c:1646 */ + case 2212: +/* Line 1792 of yacc.c */ +#line 14582 "gram.y" { - (yyval.node) = makeRoleSpec(ROLESPEC_SESSION_USER, (yylsp[0])); + (yyval.rolespec) = makeRoleSpec(ROLESPEC_SESSION_USER, (yylsp[(1) - (1)])); } -#line 41708 "gram.c" /* yacc.c:1646 */ break; - case 2078: -#line 13726 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 41714 "gram.c" /* yacc.c:1646 */ + case 2213: +/* Line 1792 of yacc.c */ +#line 14588 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); } break; - case 2079: -#line 13728 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 41720 "gram.c" /* yacc.c:1646 */ + case 2214: +/* Line 1792 of yacc.c */ +#line 14590 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); } break; - case 2080: -#line 13744 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 41726 "gram.c" /* yacc.c:1646 */ + case 2215: +/* Line 1792 of yacc.c */ +#line 14606 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 2081: -#line 13745 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 41732 "gram.c" /* yacc.c:1646 */ + case 2216: +/* Line 1792 of yacc.c */ +#line 14607 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 2082: -#line 13746 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 41738 "gram.c" /* yacc.c:1646 */ + case 2217: +/* Line 1792 of yacc.c */ +#line 14608 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 2083: -#line 13751 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 41744 "gram.c" /* yacc.c:1646 */ + case 2218: +/* Line 1792 of yacc.c */ +#line 14613 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 2084: -#line 13752 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 41750 "gram.c" /* yacc.c:1646 */ + case 2219: +/* Line 1792 of yacc.c */ +#line 14614 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 2085: -#line 13753 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 41756 "gram.c" /* yacc.c:1646 */ + case 2220: +/* Line 1792 of yacc.c */ +#line 14615 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 2086: -#line 13758 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 41762 "gram.c" /* yacc.c:1646 */ + case 2221: +/* Line 1792 of yacc.c */ +#line 14620 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 2087: -#line 13759 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 41768 "gram.c" /* yacc.c:1646 */ + case 2222: +/* Line 1792 of yacc.c */ +#line 14621 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 2088: -#line 13760 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 41774 "gram.c" /* yacc.c:1646 */ + case 2223: +/* Line 1792 of yacc.c */ +#line 14622 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 2089: -#line 13761 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 41780 "gram.c" /* yacc.c:1646 */ + case 2224: +/* Line 1792 of yacc.c */ +#line 14623 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 2090: -#line 13767 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 41786 "gram.c" /* yacc.c:1646 */ + case 2225: +/* Line 1792 of yacc.c */ +#line 14629 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; - case 2091: -#line 13768 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 41792 "gram.c" /* yacc.c:1646 */ + case 2226: +/* Line 1792 of yacc.c */ +#line 14630 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 2092: -#line 13769 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 41798 "gram.c" /* yacc.c:1646 */ + case 2227: +/* Line 1792 of yacc.c */ +#line 14631 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 2093: -#line 13770 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 41804 "gram.c" /* yacc.c:1646 */ + case 2228: +/* Line 1792 of yacc.c */ +#line 14632 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; - case 2094: -#line 13771 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 41810 "gram.c" /* yacc.c:1646 */ + case 2229: +/* Line 1792 of yacc.c */ +#line 14633 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; -#line 41814 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 45525 "gram.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -41833,7 +45544,7 @@ yyreduce: *++yyvsp = yyval; *++yylsp = yyloc; - /* Now 'shift' the result of the reduction. Determine what state + /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -41848,9 +45559,9 @@ yyreduce: goto yynewstate; -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -41901,20 +45612,20 @@ yyerrlab: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, &yylloc, yyscanner); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, &yylloc, yyscanner); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -41934,7 +45645,7 @@ yyerrorlab: goto yyerrorlab; yyerror_range[1] = yylsp[1-yylen]; - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -41947,29 +45658,29 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yyerror_range[1] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp, yyscanner); + yystos[yystate], yyvsp, yylsp, yyscanner); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -42025,14 +45736,14 @@ yyreturn: yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc, yyscanner); } - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, yylsp, yyscanner); + yystos[*yyssp], yyvsp, yylsp, yyscanner); YYPOPSTACK (1); } #ifndef yyoverflow @@ -42043,9 +45754,13 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - return yyresult; + /* Make sure YYID is used. */ + return YYID (yyresult); } -#line 14247 "gram.y" /* yacc.c:1906 */ + + +/* Line 2055 of yacc.c */ +#line 15122 "gram.y" /* @@ -42059,6 +45774,33 @@ base_yyerror(YYLTYPE *yylloc, core_yyscan_t yyscanner, const char *msg) parser_yyerror(msg); } +static RawStmt * +makeRawStmt(Node *stmt, int stmt_location) +{ + RawStmt *rs = makeNode(RawStmt); + + rs->stmt = stmt; + rs->stmt_location = stmt_location; + rs->stmt_len = 0; /* might get changed later */ + return rs; +} + +/* Adjust a RawStmt to reflect that it doesn't run to the end of the string */ +static void +updateRawStmtEnd(RawStmt *rs, int end_location) +{ + /* + * If we already set the length, don't change it. This is for situations + * like "select foo ;; select bar" where the same statement will be last + * in the string for more than one semicolon. + */ + if (rs->stmt_len > 0) + return; + + /* OK, update length of RawStmt */ + rs->stmt_len = end_location - rs->stmt_location; +} + static Node * makeColumnRef(char *colname, List *indirection, int location, core_yyscan_t yyscanner) @@ -42111,7 +45853,7 @@ makeColumnRef(char *colname, List *indirection, return (Node *) c; } -static Node * +Node * makeTypeCast(Node *arg, TypeName *typename, int location) { TypeCast *n = makeNode(TypeCast); @@ -42133,7 +45875,7 @@ makeStringConst(char *str, int location) return (Node *)n; } -static Node * +Node * makeStringConstCast(char *str, int location, TypeName *typename) { Node *s = makeStringConst(str, location); @@ -42141,7 +45883,7 @@ makeStringConstCast(char *str, int location, TypeName *typename) return makeTypeCast(s, typename, -1); } -static Node * +Node * makeIntConst(int val, int location) { A_Const *n = makeNode(A_Const); @@ -42230,7 +45972,7 @@ makeBoolAConst(bool state, int location) /* makeRoleSpec * Create a RoleSpec with the given type */ -static Node * +static RoleSpec * makeRoleSpec(RoleSpecType type, int location) { RoleSpec *spec = makeNode(RoleSpec); @@ -42238,7 +45980,7 @@ makeRoleSpec(RoleSpecType type, int location) spec->roletype = type; spec->location = location; - return (Node *) spec; + return spec; } /* check_qualified_name --- check the result of qualified_name production @@ -42574,6 +46316,18 @@ makeAArrayExpr(List *elements, int location) return (Node *) n; } +static Node * +makeSQLValueFunction(SQLValueFunctionOp op, int32 typmod, int location) +{ + SQLValueFunction *svf = makeNode(SQLValueFunction); + + svf->op = op; + /* svf->type will be filled during parse analysis */ + svf->typmod = typmod; + svf->location = location; + return (Node *) svf; +} + static Node * makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args, int location) @@ -42631,7 +46385,7 @@ TableFuncTypeName(List *columns) { FunctionParameter *p = (FunctionParameter *) linitial(columns); - result = (TypeName *) copyObject(p->argType); + result = copyObject(p->argType); } else result = SystemTypeName("record"); @@ -42865,15 +46619,3 @@ parser_init(base_yy_extra_type *yyext) yyext->parsetree = NIL; /* in case grammar forgets to set it */ } -/* - * Create a DefElem setting "oids" to the specified value. - */ -static DefElem * -defWithOids(bool value) -{ - DefElem *f = makeNode(DefElem); - - f->defname = "oids"; - f->arg = (Node *) makeInteger(value); - return f; -} diff --git a/src/parser/gram.h b/src/parser/gram.h index e1f6d9225..478f4c475 100644 --- a/src/parser/gram.h +++ b/src/parser/gram.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,7 +32,7 @@ #ifndef YY_BASE_YY_GRAM_H_INCLUDED # define YY_BASE_YY_GRAM_H_INCLUDED -/* Debug traces. */ +/* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -40,452 +40,466 @@ extern int base_yydebug; #endif -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - LESS_EQUALS = 270, - GREATER_EQUALS = 271, - NOT_EQUALS = 272, - ABORT_P = 273, - ABSOLUTE_P = 274, - ACCESS = 275, - ACTION = 276, - ADD_P = 277, - ADMIN = 278, - AFTER = 279, - AGGREGATE = 280, - ALL = 281, - ALSO = 282, - ALTER = 283, - ALWAYS = 284, - ANALYSE = 285, - ANALYZE = 286, - AND = 287, - ANY = 288, - ARRAY = 289, - AS = 290, - ASC = 291, - ASSERTION = 292, - ASSIGNMENT = 293, - ASYMMETRIC = 294, - AT = 295, - ATTRIBUTE = 296, - AUTHORIZATION = 297, - BACKWARD = 298, - BEFORE = 299, - BEGIN_P = 300, - BETWEEN = 301, - BIGINT = 302, - BINARY = 303, - BIT = 304, - BOOLEAN_P = 305, - BOTH = 306, - BY = 307, - CACHE = 308, - CALLED = 309, - CASCADE = 310, - CASCADED = 311, - CASE = 312, - CAST = 313, - CATALOG_P = 314, - CHAIN = 315, - CHAR_P = 316, - CHARACTER = 317, - CHARACTERISTICS = 318, - CHECK = 319, - CHECKPOINT = 320, - CLASS = 321, - CLOSE = 322, - CLUSTER = 323, - COALESCE = 324, - COLLATE = 325, - COLLATION = 326, - COLUMN = 327, - COMMENT = 328, - COMMENTS = 329, - COMMIT = 330, - COMMITTED = 331, - CONCURRENTLY = 332, - CONFIGURATION = 333, - CONFLICT = 334, - CONNECTION = 335, - CONSTRAINT = 336, - CONSTRAINTS = 337, - CONTENT_P = 338, - CONTINUE_P = 339, - CONVERSION_P = 340, - COPY = 341, - COST = 342, - CREATE = 343, - CROSS = 344, - CSV = 345, - CUBE = 346, - CURRENT_P = 347, - CURRENT_CATALOG = 348, - CURRENT_DATE = 349, - CURRENT_ROLE = 350, - CURRENT_SCHEMA = 351, - CURRENT_TIME = 352, - CURRENT_TIMESTAMP = 353, - CURRENT_USER = 354, - CURSOR = 355, - CYCLE = 356, - DATA_P = 357, - DATABASE = 358, - DAY_P = 359, - DEALLOCATE = 360, - DEC = 361, - DECIMAL_P = 362, - DECLARE = 363, - DEFAULT = 364, - DEFAULTS = 365, - DEFERRABLE = 366, - DEFERRED = 367, - DEFINER = 368, - DELETE_P = 369, - DELIMITER = 370, - DELIMITERS = 371, - DEPENDS = 372, - DESC = 373, - DICTIONARY = 374, - DISABLE_P = 375, - DISCARD = 376, - DISTINCT = 377, - DO = 378, - DOCUMENT_P = 379, - DOMAIN_P = 380, - DOUBLE_P = 381, - DROP = 382, - EACH = 383, - ELSE = 384, - ENABLE_P = 385, - ENCODING = 386, - ENCRYPTED = 387, - END_P = 388, - ENUM_P = 389, - ESCAPE = 390, - EVENT = 391, - EXCEPT = 392, - EXCLUDE = 393, - EXCLUDING = 394, - EXCLUSIVE = 395, - EXECUTE = 396, - EXISTS = 397, - EXPLAIN = 398, - EXTENSION = 399, - EXTERNAL = 400, - EXTRACT = 401, - FALSE_P = 402, - FAMILY = 403, - FETCH = 404, - FILTER = 405, - FIRST_P = 406, - FLOAT_P = 407, - FOLLOWING = 408, - FOR = 409, - FORCE = 410, - FOREIGN = 411, - FORWARD = 412, - FREEZE = 413, - FROM = 414, - FULL = 415, - FUNCTION = 416, - FUNCTIONS = 417, - GLOBAL = 418, - GRANT = 419, - GRANTED = 420, - GREATEST = 421, - GROUP_P = 422, - GROUPING = 423, - HANDLER = 424, - HAVING = 425, - HEADER_P = 426, - HOLD = 427, - HOUR_P = 428, - IDENTITY_P = 429, - IF_P = 430, - ILIKE = 431, - IMMEDIATE = 432, - IMMUTABLE = 433, - IMPLICIT_P = 434, - IMPORT_P = 435, - IN_P = 436, - INCLUDING = 437, - INCREMENT = 438, - INDEX = 439, - INDEXES = 440, - INHERIT = 441, - INHERITS = 442, - INITIALLY = 443, - INLINE_P = 444, - INNER_P = 445, - INOUT = 446, - INPUT_P = 447, - INSENSITIVE = 448, - INSERT = 449, - INSTEAD = 450, - INT_P = 451, - INTEGER = 452, - INTERSECT = 453, - INTERVAL = 454, - INTO = 455, - INVOKER = 456, - IS = 457, - ISNULL = 458, - ISOLATION = 459, - JOIN = 460, - KEY = 461, - LABEL = 462, - LANGUAGE = 463, - LARGE_P = 464, - LAST_P = 465, - LATERAL_P = 466, - LEADING = 467, - LEAKPROOF = 468, - LEAST = 469, - LEFT = 470, - LEVEL = 471, - LIKE = 472, - LIMIT = 473, - LISTEN = 474, - LOAD = 475, - LOCAL = 476, - LOCALTIME = 477, - LOCALTIMESTAMP = 478, - LOCATION = 479, - LOCK_P = 480, - LOCKED = 481, - LOGGED = 482, - MAPPING = 483, - MATCH = 484, - MATERIALIZED = 485, - MAXVALUE = 486, - METHOD = 487, - MINUTE_P = 488, - MINVALUE = 489, - MODE = 490, - MONTH_P = 491, - MOVE = 492, - NAME_P = 493, - NAMES = 494, - NATIONAL = 495, - NATURAL = 496, - NCHAR = 497, - NEXT = 498, - NO = 499, - NONE = 500, - NOT = 501, - NOTHING = 502, - NOTIFY = 503, - NOTNULL = 504, - NOWAIT = 505, - NULL_P = 506, - NULLIF = 507, - NULLS_P = 508, - NUMERIC = 509, - OBJECT_P = 510, - OF = 511, - OFF = 512, - OFFSET = 513, - OIDS = 514, - ON = 515, - ONLY = 516, - OPERATOR = 517, - OPTION = 518, - OPTIONS = 519, - OR = 520, - ORDER = 521, - ORDINALITY = 522, - OUT_P = 523, - OUTER_P = 524, - OVER = 525, - OVERLAPS = 526, - OVERLAY = 527, - OWNED = 528, - OWNER = 529, - PARALLEL = 530, - PARSER = 531, - PARTIAL = 532, - PARTITION = 533, - PASSING = 534, - PASSWORD = 535, - PGPOOL = 536, - PLACING = 537, - PLANS = 538, - POLICY = 539, - POSITION = 540, - PRECEDING = 541, - PRECISION = 542, - PRESERVE = 543, - PREPARE = 544, - PREPARED = 545, - PRIMARY = 546, - PRIOR = 547, - PRIVILEGES = 548, - PROCEDURAL = 549, - PROCEDURE = 550, - PROGRAM = 551, - QUOTE = 552, - RANGE = 553, - READ = 554, - REAL = 555, - REASSIGN = 556, - RECHECK = 557, - RECURSIVE = 558, - REF = 559, - REFERENCES = 560, - REFRESH = 561, - REINDEX = 562, - RELATIVE_P = 563, - RELEASE = 564, - RENAME = 565, - REPEATABLE = 566, - REPLACE = 567, - REPLICA = 568, - RESET = 569, - RESTART = 570, - RESTRICT = 571, - RETURNING = 572, - RETURNS = 573, - REVOKE = 574, - RIGHT = 575, - ROLE = 576, - ROLLBACK = 577, - ROLLUP = 578, - ROW = 579, - ROWS = 580, - RULE = 581, - SAVEPOINT = 582, - SCHEMA = 583, - SCROLL = 584, - SEARCH = 585, - SECOND_P = 586, - SECURITY = 587, - SELECT = 588, - SEQUENCE = 589, - SEQUENCES = 590, - SERIALIZABLE = 591, - SERVER = 592, - SESSION = 593, - SESSION_USER = 594, - SET = 595, - SETS = 596, - SETOF = 597, - SHARE = 598, - SHOW = 599, - SIMILAR = 600, - SIMPLE = 601, - SKIP = 602, - SMALLINT = 603, - SNAPSHOT = 604, - SOME = 605, - SQL_P = 606, - STABLE = 607, - STANDALONE_P = 608, - START = 609, - STATEMENT = 610, - STATISTICS = 611, - STDIN = 612, - STDOUT = 613, - STORAGE = 614, - STRICT_P = 615, - STRIP_P = 616, - SUBSTRING = 617, - SYMMETRIC = 618, - SYSID = 619, - SYSTEM_P = 620, - TABLE = 621, - TABLES = 622, - TABLESAMPLE = 623, - TABLESPACE = 624, - TEMP = 625, - TEMPLATE = 626, - TEMPORARY = 627, - TEXT_P = 628, - THEN = 629, - TIME = 630, - TIMESTAMP = 631, - TO = 632, - TRAILING = 633, - TRANSACTION = 634, - TRANSFORM = 635, - TREAT = 636, - TRIGGER = 637, - TRIM = 638, - TRUE_P = 639, - TRUNCATE = 640, - TRUSTED = 641, - TYPE_P = 642, - TYPES_P = 643, - UNBOUNDED = 644, - UNCOMMITTED = 645, - UNENCRYPTED = 646, - UNION = 647, - UNIQUE = 648, - UNKNOWN = 649, - UNLISTEN = 650, - UNLOGGED = 651, - UNTIL = 652, - UPDATE = 653, - USER = 654, - USING = 655, - VACUUM = 656, - VALID = 657, - VALIDATE = 658, - VALIDATOR = 659, - VALUE_P = 660, - VALUES = 661, - VARCHAR = 662, - VARIADIC = 663, - VARYING = 664, - VERBOSE = 665, - VERSION_P = 666, - VIEW = 667, - VIEWS = 668, - VOLATILE = 669, - WHEN = 670, - WHERE = 671, - WHITESPACE_P = 672, - WINDOW = 673, - WITH = 674, - WITHIN = 675, - WITHOUT = 676, - WORK = 677, - WRAPPER = 678, - WRITE = 679, - XML_P = 680, - XMLATTRIBUTES = 681, - XMLCONCAT = 682, - XMLELEMENT = 683, - XMLEXISTS = 684, - XMLFOREST = 685, - XMLPARSE = 686, - XMLPI = 687, - XMLROOT = 688, - XMLSERIALIZE = 689, - YEAR_P = 690, - YES_P = 691, - ZONE = 692, - NOT_LA = 693, - NULLS_LA = 694, - WITH_LA = 695, - POSTFIXOP = 696, - UMINUS = 697 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IDENT = 258, + FCONST = 259, + SCONST = 260, + BCONST = 261, + XCONST = 262, + Op = 263, + ICONST = 264, + PARAM = 265, + TYPECAST = 266, + DOT_DOT = 267, + COLON_EQUALS = 268, + EQUALS_GREATER = 269, + LESS_EQUALS = 270, + GREATER_EQUALS = 271, + NOT_EQUALS = 272, + ABORT_P = 273, + ABSOLUTE_P = 274, + ACCESS = 275, + ACTION = 276, + ADD_P = 277, + ADMIN = 278, + AFTER = 279, + AGGREGATE = 280, + ALL = 281, + ALSO = 282, + ALTER = 283, + ALWAYS = 284, + ANALYSE = 285, + ANALYZE = 286, + AND = 287, + ANY = 288, + ARRAY = 289, + AS = 290, + ASC = 291, + ASSERTION = 292, + ASSIGNMENT = 293, + ASYMMETRIC = 294, + AT = 295, + ATTACH = 296, + ATTRIBUTE = 297, + AUTHORIZATION = 298, + BACKWARD = 299, + BEFORE = 300, + BEGIN_P = 301, + BETWEEN = 302, + BIGINT = 303, + BINARY = 304, + BIT = 305, + BOOLEAN_P = 306, + BOTH = 307, + BY = 308, + CACHE = 309, + CALLED = 310, + CASCADE = 311, + CASCADED = 312, + CASE = 313, + CAST = 314, + CATALOG_P = 315, + CHAIN = 316, + CHAR_P = 317, + CHARACTER = 318, + CHARACTERISTICS = 319, + CHECK = 320, + CHECKPOINT = 321, + CLASS = 322, + CLOSE = 323, + CLUSTER = 324, + COALESCE = 325, + COLLATE = 326, + COLLATION = 327, + COLUMN = 328, + COLUMNS = 329, + COMMENT = 330, + COMMENTS = 331, + COMMIT = 332, + COMMITTED = 333, + CONCURRENTLY = 334, + CONFIGURATION = 335, + CONFLICT = 336, + CONNECTION = 337, + CONSTRAINT = 338, + CONSTRAINTS = 339, + CONTENT_P = 340, + CONTINUE_P = 341, + CONVERSION_P = 342, + COPY = 343, + COST = 344, + CREATE = 345, + CROSS = 346, + CSV = 347, + CUBE = 348, + CURRENT_P = 349, + CURRENT_CATALOG = 350, + CURRENT_DATE = 351, + CURRENT_ROLE = 352, + CURRENT_SCHEMA = 353, + CURRENT_TIME = 354, + CURRENT_TIMESTAMP = 355, + CURRENT_USER = 356, + CURSOR = 357, + CYCLE = 358, + DATA_P = 359, + DATABASE = 360, + DAY_P = 361, + DEALLOCATE = 362, + DEC = 363, + DECIMAL_P = 364, + DECLARE = 365, + DEFAULT = 366, + DEFAULTS = 367, + DEFERRABLE = 368, + DEFERRED = 369, + DEFINER = 370, + DELETE_P = 371, + DELIMITER = 372, + DELIMITERS = 373, + DEPENDS = 374, + DESC = 375, + DETACH = 376, + DICTIONARY = 377, + DISABLE_P = 378, + DISCARD = 379, + DISTINCT = 380, + DO = 381, + DOCUMENT_P = 382, + DOMAIN_P = 383, + DOUBLE_P = 384, + DROP = 385, + EACH = 386, + ELSE = 387, + ENABLE_P = 388, + ENCODING = 389, + ENCRYPTED = 390, + END_P = 391, + ENUM_P = 392, + ESCAPE = 393, + EVENT = 394, + EXCEPT = 395, + EXCLUDE = 396, + EXCLUDING = 397, + EXCLUSIVE = 398, + EXECUTE = 399, + EXISTS = 400, + EXPLAIN = 401, + EXTENSION = 402, + EXTERNAL = 403, + EXTRACT = 404, + FALSE_P = 405, + FAMILY = 406, + FETCH = 407, + FILTER = 408, + FIRST_P = 409, + FLOAT_P = 410, + FOLLOWING = 411, + FOR = 412, + FORCE = 413, + FOREIGN = 414, + FORWARD = 415, + FREEZE = 416, + FROM = 417, + FULL = 418, + FUNCTION = 419, + FUNCTIONS = 420, + GENERATED = 421, + GLOBAL = 422, + GRANT = 423, + GRANTED = 424, + GREATEST = 425, + GROUP_P = 426, + GROUPING = 427, + HANDLER = 428, + HAVING = 429, + HEADER_P = 430, + HOLD = 431, + HOUR_P = 432, + IDENTITY_P = 433, + IF_P = 434, + ILIKE = 435, + IMMEDIATE = 436, + IMMUTABLE = 437, + IMPLICIT_P = 438, + IMPORT_P = 439, + IN_P = 440, + INCLUDING = 441, + INCREMENT = 442, + INDEX = 443, + INDEXES = 444, + INHERIT = 445, + INHERITS = 446, + INITIALLY = 447, + INLINE_P = 448, + INNER_P = 449, + INOUT = 450, + INPUT_P = 451, + INSENSITIVE = 452, + INSERT = 453, + INSTEAD = 454, + INT_P = 455, + INTEGER = 456, + INTERSECT = 457, + INTERVAL = 458, + INTO = 459, + INVOKER = 460, + IS = 461, + ISNULL = 462, + ISOLATION = 463, + JOIN = 464, + KEY = 465, + LABEL = 466, + LANGUAGE = 467, + LARGE_P = 468, + LAST_P = 469, + LATERAL_P = 470, + LEADING = 471, + LEAKPROOF = 472, + LEAST = 473, + LEFT = 474, + LEVEL = 475, + LIKE = 476, + LIMIT = 477, + LISTEN = 478, + LOAD = 479, + LOCAL = 480, + LOCALTIME = 481, + LOCALTIMESTAMP = 482, + LOCATION = 483, + LOCK_P = 484, + LOCKED = 485, + LOGGED = 486, + MAPPING = 487, + MATCH = 488, + MATERIALIZED = 489, + MAXVALUE = 490, + METHOD = 491, + MINUTE_P = 492, + MINVALUE = 493, + MODE = 494, + MONTH_P = 495, + MOVE = 496, + NAME_P = 497, + NAMES = 498, + NATIONAL = 499, + NATURAL = 500, + NCHAR = 501, + NEW = 502, + NEXT = 503, + NO = 504, + NONE = 505, + NOT = 506, + NOTHING = 507, + NOTIFY = 508, + NOTNULL = 509, + NOWAIT = 510, + NULL_P = 511, + NULLIF = 512, + NULLS_P = 513, + NUMERIC = 514, + OBJECT_P = 515, + OF = 516, + OFF = 517, + OFFSET = 518, + OIDS = 519, + OLD = 520, + ON = 521, + ONLY = 522, + OPERATOR = 523, + OPTION = 524, + OPTIONS = 525, + OR = 526, + ORDER = 527, + ORDINALITY = 528, + OUT_P = 529, + OUTER_P = 530, + OVER = 531, + OVERLAPS = 532, + OVERLAY = 533, + OVERRIDING = 534, + OWNED = 535, + OWNER = 536, + PARALLEL = 537, + PARSER = 538, + PARTIAL = 539, + PARTITION = 540, + PASSING = 541, + PASSWORD = 542, + PGPOOL = 543, + PLACING = 544, + PLANS = 545, + POLICY = 546, + POSITION = 547, + PRECEDING = 548, + PRECISION = 549, + PRESERVE = 550, + PREPARE = 551, + PREPARED = 552, + PRIMARY = 553, + PRIOR = 554, + PRIVILEGES = 555, + PROCEDURAL = 556, + PROCEDURE = 557, + PROGRAM = 558, + PUBLICATION = 559, + QUOTE = 560, + RANGE = 561, + READ = 562, + REAL = 563, + REASSIGN = 564, + RECHECK = 565, + RECURSIVE = 566, + REF = 567, + REFERENCES = 568, + REFERENCING = 569, + REFRESH = 570, + REINDEX = 571, + RELATIVE_P = 572, + RELEASE = 573, + RENAME = 574, + REPEATABLE = 575, + REPLACE = 576, + REPLICA = 577, + RESET = 578, + RESTART = 579, + RESTRICT = 580, + RETURNING = 581, + RETURNS = 582, + REVOKE = 583, + RIGHT = 584, + ROLE = 585, + ROLLBACK = 586, + ROLLUP = 587, + ROW = 588, + ROWS = 589, + RULE = 590, + SAVEPOINT = 591, + SCHEMA = 592, + SCHEMAS = 593, + SCROLL = 594, + SEARCH = 595, + SECOND_P = 596, + SECURITY = 597, + SELECT = 598, + SEQUENCE = 599, + SEQUENCES = 600, + SERIALIZABLE = 601, + SERVER = 602, + SESSION = 603, + SESSION_USER = 604, + SET = 605, + SETS = 606, + SETOF = 607, + SHARE = 608, + SHOW = 609, + SIMILAR = 610, + SIMPLE = 611, + SKIP = 612, + SMALLINT = 613, + SNAPSHOT = 614, + SOME = 615, + SQL_P = 616, + STABLE = 617, + STANDALONE_P = 618, + START = 619, + STATEMENT = 620, + STATISTICS = 621, + STDIN = 622, + STDOUT = 623, + STORAGE = 624, + STRICT_P = 625, + STRIP_P = 626, + SUBSCRIPTION = 627, + SUBSTRING = 628, + SYMMETRIC = 629, + SYSID = 630, + SYSTEM_P = 631, + TABLE = 632, + TABLES = 633, + TABLESAMPLE = 634, + TABLESPACE = 635, + TEMP = 636, + TEMPLATE = 637, + TEMPORARY = 638, + TEXT_P = 639, + THEN = 640, + TIME = 641, + TIMESTAMP = 642, + TO = 643, + TRAILING = 644, + TRANSACTION = 645, + TRANSFORM = 646, + TREAT = 647, + TRIGGER = 648, + TRIM = 649, + TRUE_P = 650, + TRUNCATE = 651, + TRUSTED = 652, + TYPE_P = 653, + TYPES_P = 654, + UNBOUNDED = 655, + UNCOMMITTED = 656, + UNENCRYPTED = 657, + UNION = 658, + UNIQUE = 659, + UNKNOWN = 660, + UNLISTEN = 661, + UNLOGGED = 662, + UNTIL = 663, + UPDATE = 664, + USER = 665, + USING = 666, + VACUUM = 667, + VALID = 668, + VALIDATE = 669, + VALIDATOR = 670, + VALUE_P = 671, + VALUES = 672, + VARCHAR = 673, + VARIADIC = 674, + VARYING = 675, + VERBOSE = 676, + VERSION_P = 677, + VIEW = 678, + VIEWS = 679, + VOLATILE = 680, + WHEN = 681, + WHERE = 682, + WHITESPACE_P = 683, + WINDOW = 684, + WITH = 685, + WITHIN = 686, + WITHOUT = 687, + WORK = 688, + WRAPPER = 689, + WRITE = 690, + XML_P = 691, + XMLATTRIBUTES = 692, + XMLCONCAT = 693, + XMLELEMENT = 694, + XMLEXISTS = 695, + XMLFOREST = 696, + XMLNAMESPACES = 697, + XMLPARSE = 698, + XMLPI = 699, + XMLROOT = 700, + XMLSERIALIZE = 701, + XMLTABLE = 702, + YEAR_P = 703, + YES_P = 704, + ZONE = 705, + NOT_LA = 706, + NULLS_LA = 707, + WITH_LA = 708, + POSTFIXOP = 709, + UMINUS = 710 + }; #endif /* Tokens. */ #define IDENT 258 @@ -526,415 +540,429 @@ extern int base_yydebug; #define ASSIGNMENT 293 #define ASYMMETRIC 294 #define AT 295 -#define ATTRIBUTE 296 -#define AUTHORIZATION 297 -#define BACKWARD 298 -#define BEFORE 299 -#define BEGIN_P 300 -#define BETWEEN 301 -#define BIGINT 302 -#define BINARY 303 -#define BIT 304 -#define BOOLEAN_P 305 -#define BOTH 306 -#define BY 307 -#define CACHE 308 -#define CALLED 309 -#define CASCADE 310 -#define CASCADED 311 -#define CASE 312 -#define CAST 313 -#define CATALOG_P 314 -#define CHAIN 315 -#define CHAR_P 316 -#define CHARACTER 317 -#define CHARACTERISTICS 318 -#define CHECK 319 -#define CHECKPOINT 320 -#define CLASS 321 -#define CLOSE 322 -#define CLUSTER 323 -#define COALESCE 324 -#define COLLATE 325 -#define COLLATION 326 -#define COLUMN 327 -#define COMMENT 328 -#define COMMENTS 329 -#define COMMIT 330 -#define COMMITTED 331 -#define CONCURRENTLY 332 -#define CONFIGURATION 333 -#define CONFLICT 334 -#define CONNECTION 335 -#define CONSTRAINT 336 -#define CONSTRAINTS 337 -#define CONTENT_P 338 -#define CONTINUE_P 339 -#define CONVERSION_P 340 -#define COPY 341 -#define COST 342 -#define CREATE 343 -#define CROSS 344 -#define CSV 345 -#define CUBE 346 -#define CURRENT_P 347 -#define CURRENT_CATALOG 348 -#define CURRENT_DATE 349 -#define CURRENT_ROLE 350 -#define CURRENT_SCHEMA 351 -#define CURRENT_TIME 352 -#define CURRENT_TIMESTAMP 353 -#define CURRENT_USER 354 -#define CURSOR 355 -#define CYCLE 356 -#define DATA_P 357 -#define DATABASE 358 -#define DAY_P 359 -#define DEALLOCATE 360 -#define DEC 361 -#define DECIMAL_P 362 -#define DECLARE 363 -#define DEFAULT 364 -#define DEFAULTS 365 -#define DEFERRABLE 366 -#define DEFERRED 367 -#define DEFINER 368 -#define DELETE_P 369 -#define DELIMITER 370 -#define DELIMITERS 371 -#define DEPENDS 372 -#define DESC 373 -#define DICTIONARY 374 -#define DISABLE_P 375 -#define DISCARD 376 -#define DISTINCT 377 -#define DO 378 -#define DOCUMENT_P 379 -#define DOMAIN_P 380 -#define DOUBLE_P 381 -#define DROP 382 -#define EACH 383 -#define ELSE 384 -#define ENABLE_P 385 -#define ENCODING 386 -#define ENCRYPTED 387 -#define END_P 388 -#define ENUM_P 389 -#define ESCAPE 390 -#define EVENT 391 -#define EXCEPT 392 -#define EXCLUDE 393 -#define EXCLUDING 394 -#define EXCLUSIVE 395 -#define EXECUTE 396 -#define EXISTS 397 -#define EXPLAIN 398 -#define EXTENSION 399 -#define EXTERNAL 400 -#define EXTRACT 401 -#define FALSE_P 402 -#define FAMILY 403 -#define FETCH 404 -#define FILTER 405 -#define FIRST_P 406 -#define FLOAT_P 407 -#define FOLLOWING 408 -#define FOR 409 -#define FORCE 410 -#define FOREIGN 411 -#define FORWARD 412 -#define FREEZE 413 -#define FROM 414 -#define FULL 415 -#define FUNCTION 416 -#define FUNCTIONS 417 -#define GLOBAL 418 -#define GRANT 419 -#define GRANTED 420 -#define GREATEST 421 -#define GROUP_P 422 -#define GROUPING 423 -#define HANDLER 424 -#define HAVING 425 -#define HEADER_P 426 -#define HOLD 427 -#define HOUR_P 428 -#define IDENTITY_P 429 -#define IF_P 430 -#define ILIKE 431 -#define IMMEDIATE 432 -#define IMMUTABLE 433 -#define IMPLICIT_P 434 -#define IMPORT_P 435 -#define IN_P 436 -#define INCLUDING 437 -#define INCREMENT 438 -#define INDEX 439 -#define INDEXES 440 -#define INHERIT 441 -#define INHERITS 442 -#define INITIALLY 443 -#define INLINE_P 444 -#define INNER_P 445 -#define INOUT 446 -#define INPUT_P 447 -#define INSENSITIVE 448 -#define INSERT 449 -#define INSTEAD 450 -#define INT_P 451 -#define INTEGER 452 -#define INTERSECT 453 -#define INTERVAL 454 -#define INTO 455 -#define INVOKER 456 -#define IS 457 -#define ISNULL 458 -#define ISOLATION 459 -#define JOIN 460 -#define KEY 461 -#define LABEL 462 -#define LANGUAGE 463 -#define LARGE_P 464 -#define LAST_P 465 -#define LATERAL_P 466 -#define LEADING 467 -#define LEAKPROOF 468 -#define LEAST 469 -#define LEFT 470 -#define LEVEL 471 -#define LIKE 472 -#define LIMIT 473 -#define LISTEN 474 -#define LOAD 475 -#define LOCAL 476 -#define LOCALTIME 477 -#define LOCALTIMESTAMP 478 -#define LOCATION 479 -#define LOCK_P 480 -#define LOCKED 481 -#define LOGGED 482 -#define MAPPING 483 -#define MATCH 484 -#define MATERIALIZED 485 -#define MAXVALUE 486 -#define METHOD 487 -#define MINUTE_P 488 -#define MINVALUE 489 -#define MODE 490 -#define MONTH_P 491 -#define MOVE 492 -#define NAME_P 493 -#define NAMES 494 -#define NATIONAL 495 -#define NATURAL 496 -#define NCHAR 497 -#define NEXT 498 -#define NO 499 -#define NONE 500 -#define NOT 501 -#define NOTHING 502 -#define NOTIFY 503 -#define NOTNULL 504 -#define NOWAIT 505 -#define NULL_P 506 -#define NULLIF 507 -#define NULLS_P 508 -#define NUMERIC 509 -#define OBJECT_P 510 -#define OF 511 -#define OFF 512 -#define OFFSET 513 -#define OIDS 514 -#define ON 515 -#define ONLY 516 -#define OPERATOR 517 -#define OPTION 518 -#define OPTIONS 519 -#define OR 520 -#define ORDER 521 -#define ORDINALITY 522 -#define OUT_P 523 -#define OUTER_P 524 -#define OVER 525 -#define OVERLAPS 526 -#define OVERLAY 527 -#define OWNED 528 -#define OWNER 529 -#define PARALLEL 530 -#define PARSER 531 -#define PARTIAL 532 -#define PARTITION 533 -#define PASSING 534 -#define PASSWORD 535 -#define PGPOOL 536 -#define PLACING 537 -#define PLANS 538 -#define POLICY 539 -#define POSITION 540 -#define PRECEDING 541 -#define PRECISION 542 -#define PRESERVE 543 -#define PREPARE 544 -#define PREPARED 545 -#define PRIMARY 546 -#define PRIOR 547 -#define PRIVILEGES 548 -#define PROCEDURAL 549 -#define PROCEDURE 550 -#define PROGRAM 551 -#define QUOTE 552 -#define RANGE 553 -#define READ 554 -#define REAL 555 -#define REASSIGN 556 -#define RECHECK 557 -#define RECURSIVE 558 -#define REF 559 -#define REFERENCES 560 -#define REFRESH 561 -#define REINDEX 562 -#define RELATIVE_P 563 -#define RELEASE 564 -#define RENAME 565 -#define REPEATABLE 566 -#define REPLACE 567 -#define REPLICA 568 -#define RESET 569 -#define RESTART 570 -#define RESTRICT 571 -#define RETURNING 572 -#define RETURNS 573 -#define REVOKE 574 -#define RIGHT 575 -#define ROLE 576 -#define ROLLBACK 577 -#define ROLLUP 578 -#define ROW 579 -#define ROWS 580 -#define RULE 581 -#define SAVEPOINT 582 -#define SCHEMA 583 -#define SCROLL 584 -#define SEARCH 585 -#define SECOND_P 586 -#define SECURITY 587 -#define SELECT 588 -#define SEQUENCE 589 -#define SEQUENCES 590 -#define SERIALIZABLE 591 -#define SERVER 592 -#define SESSION 593 -#define SESSION_USER 594 -#define SET 595 -#define SETS 596 -#define SETOF 597 -#define SHARE 598 -#define SHOW 599 -#define SIMILAR 600 -#define SIMPLE 601 -#define SKIP 602 -#define SMALLINT 603 -#define SNAPSHOT 604 -#define SOME 605 -#define SQL_P 606 -#define STABLE 607 -#define STANDALONE_P 608 -#define START 609 -#define STATEMENT 610 -#define STATISTICS 611 -#define STDIN 612 -#define STDOUT 613 -#define STORAGE 614 -#define STRICT_P 615 -#define STRIP_P 616 -#define SUBSTRING 617 -#define SYMMETRIC 618 -#define SYSID 619 -#define SYSTEM_P 620 -#define TABLE 621 -#define TABLES 622 -#define TABLESAMPLE 623 -#define TABLESPACE 624 -#define TEMP 625 -#define TEMPLATE 626 -#define TEMPORARY 627 -#define TEXT_P 628 -#define THEN 629 -#define TIME 630 -#define TIMESTAMP 631 -#define TO 632 -#define TRAILING 633 -#define TRANSACTION 634 -#define TRANSFORM 635 -#define TREAT 636 -#define TRIGGER 637 -#define TRIM 638 -#define TRUE_P 639 -#define TRUNCATE 640 -#define TRUSTED 641 -#define TYPE_P 642 -#define TYPES_P 643 -#define UNBOUNDED 644 -#define UNCOMMITTED 645 -#define UNENCRYPTED 646 -#define UNION 647 -#define UNIQUE 648 -#define UNKNOWN 649 -#define UNLISTEN 650 -#define UNLOGGED 651 -#define UNTIL 652 -#define UPDATE 653 -#define USER 654 -#define USING 655 -#define VACUUM 656 -#define VALID 657 -#define VALIDATE 658 -#define VALIDATOR 659 -#define VALUE_P 660 -#define VALUES 661 -#define VARCHAR 662 -#define VARIADIC 663 -#define VARYING 664 -#define VERBOSE 665 -#define VERSION_P 666 -#define VIEW 667 -#define VIEWS 668 -#define VOLATILE 669 -#define WHEN 670 -#define WHERE 671 -#define WHITESPACE_P 672 -#define WINDOW 673 -#define WITH 674 -#define WITHIN 675 -#define WITHOUT 676 -#define WORK 677 -#define WRAPPER 678 -#define WRITE 679 -#define XML_P 680 -#define XMLATTRIBUTES 681 -#define XMLCONCAT 682 -#define XMLELEMENT 683 -#define XMLEXISTS 684 -#define XMLFOREST 685 -#define XMLPARSE 686 -#define XMLPI 687 -#define XMLROOT 688 -#define XMLSERIALIZE 689 -#define YEAR_P 690 -#define YES_P 691 -#define ZONE 692 -#define NOT_LA 693 -#define NULLS_LA 694 -#define WITH_LA 695 -#define POSTFIXOP 696 -#define UMINUS 697 +#define ATTACH 296 +#define ATTRIBUTE 297 +#define AUTHORIZATION 298 +#define BACKWARD 299 +#define BEFORE 300 +#define BEGIN_P 301 +#define BETWEEN 302 +#define BIGINT 303 +#define BINARY 304 +#define BIT 305 +#define BOOLEAN_P 306 +#define BOTH 307 +#define BY 308 +#define CACHE 309 +#define CALLED 310 +#define CASCADE 311 +#define CASCADED 312 +#define CASE 313 +#define CAST 314 +#define CATALOG_P 315 +#define CHAIN 316 +#define CHAR_P 317 +#define CHARACTER 318 +#define CHARACTERISTICS 319 +#define CHECK 320 +#define CHECKPOINT 321 +#define CLASS 322 +#define CLOSE 323 +#define CLUSTER 324 +#define COALESCE 325 +#define COLLATE 326 +#define COLLATION 327 +#define COLUMN 328 +#define COLUMNS 329 +#define COMMENT 330 +#define COMMENTS 331 +#define COMMIT 332 +#define COMMITTED 333 +#define CONCURRENTLY 334 +#define CONFIGURATION 335 +#define CONFLICT 336 +#define CONNECTION 337 +#define CONSTRAINT 338 +#define CONSTRAINTS 339 +#define CONTENT_P 340 +#define CONTINUE_P 341 +#define CONVERSION_P 342 +#define COPY 343 +#define COST 344 +#define CREATE 345 +#define CROSS 346 +#define CSV 347 +#define CUBE 348 +#define CURRENT_P 349 +#define CURRENT_CATALOG 350 +#define CURRENT_DATE 351 +#define CURRENT_ROLE 352 +#define CURRENT_SCHEMA 353 +#define CURRENT_TIME 354 +#define CURRENT_TIMESTAMP 355 +#define CURRENT_USER 356 +#define CURSOR 357 +#define CYCLE 358 +#define DATA_P 359 +#define DATABASE 360 +#define DAY_P 361 +#define DEALLOCATE 362 +#define DEC 363 +#define DECIMAL_P 364 +#define DECLARE 365 +#define DEFAULT 366 +#define DEFAULTS 367 +#define DEFERRABLE 368 +#define DEFERRED 369 +#define DEFINER 370 +#define DELETE_P 371 +#define DELIMITER 372 +#define DELIMITERS 373 +#define DEPENDS 374 +#define DESC 375 +#define DETACH 376 +#define DICTIONARY 377 +#define DISABLE_P 378 +#define DISCARD 379 +#define DISTINCT 380 +#define DO 381 +#define DOCUMENT_P 382 +#define DOMAIN_P 383 +#define DOUBLE_P 384 +#define DROP 385 +#define EACH 386 +#define ELSE 387 +#define ENABLE_P 388 +#define ENCODING 389 +#define ENCRYPTED 390 +#define END_P 391 +#define ENUM_P 392 +#define ESCAPE 393 +#define EVENT 394 +#define EXCEPT 395 +#define EXCLUDE 396 +#define EXCLUDING 397 +#define EXCLUSIVE 398 +#define EXECUTE 399 +#define EXISTS 400 +#define EXPLAIN 401 +#define EXTENSION 402 +#define EXTERNAL 403 +#define EXTRACT 404 +#define FALSE_P 405 +#define FAMILY 406 +#define FETCH 407 +#define FILTER 408 +#define FIRST_P 409 +#define FLOAT_P 410 +#define FOLLOWING 411 +#define FOR 412 +#define FORCE 413 +#define FOREIGN 414 +#define FORWARD 415 +#define FREEZE 416 +#define FROM 417 +#define FULL 418 +#define FUNCTION 419 +#define FUNCTIONS 420 +#define GENERATED 421 +#define GLOBAL 422 +#define GRANT 423 +#define GRANTED 424 +#define GREATEST 425 +#define GROUP_P 426 +#define GROUPING 427 +#define HANDLER 428 +#define HAVING 429 +#define HEADER_P 430 +#define HOLD 431 +#define HOUR_P 432 +#define IDENTITY_P 433 +#define IF_P 434 +#define ILIKE 435 +#define IMMEDIATE 436 +#define IMMUTABLE 437 +#define IMPLICIT_P 438 +#define IMPORT_P 439 +#define IN_P 440 +#define INCLUDING 441 +#define INCREMENT 442 +#define INDEX 443 +#define INDEXES 444 +#define INHERIT 445 +#define INHERITS 446 +#define INITIALLY 447 +#define INLINE_P 448 +#define INNER_P 449 +#define INOUT 450 +#define INPUT_P 451 +#define INSENSITIVE 452 +#define INSERT 453 +#define INSTEAD 454 +#define INT_P 455 +#define INTEGER 456 +#define INTERSECT 457 +#define INTERVAL 458 +#define INTO 459 +#define INVOKER 460 +#define IS 461 +#define ISNULL 462 +#define ISOLATION 463 +#define JOIN 464 +#define KEY 465 +#define LABEL 466 +#define LANGUAGE 467 +#define LARGE_P 468 +#define LAST_P 469 +#define LATERAL_P 470 +#define LEADING 471 +#define LEAKPROOF 472 +#define LEAST 473 +#define LEFT 474 +#define LEVEL 475 +#define LIKE 476 +#define LIMIT 477 +#define LISTEN 478 +#define LOAD 479 +#define LOCAL 480 +#define LOCALTIME 481 +#define LOCALTIMESTAMP 482 +#define LOCATION 483 +#define LOCK_P 484 +#define LOCKED 485 +#define LOGGED 486 +#define MAPPING 487 +#define MATCH 488 +#define MATERIALIZED 489 +#define MAXVALUE 490 +#define METHOD 491 +#define MINUTE_P 492 +#define MINVALUE 493 +#define MODE 494 +#define MONTH_P 495 +#define MOVE 496 +#define NAME_P 497 +#define NAMES 498 +#define NATIONAL 499 +#define NATURAL 500 +#define NCHAR 501 +#define NEW 502 +#define NEXT 503 +#define NO 504 +#define NONE 505 +#define NOT 506 +#define NOTHING 507 +#define NOTIFY 508 +#define NOTNULL 509 +#define NOWAIT 510 +#define NULL_P 511 +#define NULLIF 512 +#define NULLS_P 513 +#define NUMERIC 514 +#define OBJECT_P 515 +#define OF 516 +#define OFF 517 +#define OFFSET 518 +#define OIDS 519 +#define OLD 520 +#define ON 521 +#define ONLY 522 +#define OPERATOR 523 +#define OPTION 524 +#define OPTIONS 525 +#define OR 526 +#define ORDER 527 +#define ORDINALITY 528 +#define OUT_P 529 +#define OUTER_P 530 +#define OVER 531 +#define OVERLAPS 532 +#define OVERLAY 533 +#define OVERRIDING 534 +#define OWNED 535 +#define OWNER 536 +#define PARALLEL 537 +#define PARSER 538 +#define PARTIAL 539 +#define PARTITION 540 +#define PASSING 541 +#define PASSWORD 542 +#define PGPOOL 543 +#define PLACING 544 +#define PLANS 545 +#define POLICY 546 +#define POSITION 547 +#define PRECEDING 548 +#define PRECISION 549 +#define PRESERVE 550 +#define PREPARE 551 +#define PREPARED 552 +#define PRIMARY 553 +#define PRIOR 554 +#define PRIVILEGES 555 +#define PROCEDURAL 556 +#define PROCEDURE 557 +#define PROGRAM 558 +#define PUBLICATION 559 +#define QUOTE 560 +#define RANGE 561 +#define READ 562 +#define REAL 563 +#define REASSIGN 564 +#define RECHECK 565 +#define RECURSIVE 566 +#define REF 567 +#define REFERENCES 568 +#define REFERENCING 569 +#define REFRESH 570 +#define REINDEX 571 +#define RELATIVE_P 572 +#define RELEASE 573 +#define RENAME 574 +#define REPEATABLE 575 +#define REPLACE 576 +#define REPLICA 577 +#define RESET 578 +#define RESTART 579 +#define RESTRICT 580 +#define RETURNING 581 +#define RETURNS 582 +#define REVOKE 583 +#define RIGHT 584 +#define ROLE 585 +#define ROLLBACK 586 +#define ROLLUP 587 +#define ROW 588 +#define ROWS 589 +#define RULE 590 +#define SAVEPOINT 591 +#define SCHEMA 592 +#define SCHEMAS 593 +#define SCROLL 594 +#define SEARCH 595 +#define SECOND_P 596 +#define SECURITY 597 +#define SELECT 598 +#define SEQUENCE 599 +#define SEQUENCES 600 +#define SERIALIZABLE 601 +#define SERVER 602 +#define SESSION 603 +#define SESSION_USER 604 +#define SET 605 +#define SETS 606 +#define SETOF 607 +#define SHARE 608 +#define SHOW 609 +#define SIMILAR 610 +#define SIMPLE 611 +#define SKIP 612 +#define SMALLINT 613 +#define SNAPSHOT 614 +#define SOME 615 +#define SQL_P 616 +#define STABLE 617 +#define STANDALONE_P 618 +#define START 619 +#define STATEMENT 620 +#define STATISTICS 621 +#define STDIN 622 +#define STDOUT 623 +#define STORAGE 624 +#define STRICT_P 625 +#define STRIP_P 626 +#define SUBSCRIPTION 627 +#define SUBSTRING 628 +#define SYMMETRIC 629 +#define SYSID 630 +#define SYSTEM_P 631 +#define TABLE 632 +#define TABLES 633 +#define TABLESAMPLE 634 +#define TABLESPACE 635 +#define TEMP 636 +#define TEMPLATE 637 +#define TEMPORARY 638 +#define TEXT_P 639 +#define THEN 640 +#define TIME 641 +#define TIMESTAMP 642 +#define TO 643 +#define TRAILING 644 +#define TRANSACTION 645 +#define TRANSFORM 646 +#define TREAT 647 +#define TRIGGER 648 +#define TRIM 649 +#define TRUE_P 650 +#define TRUNCATE 651 +#define TRUSTED 652 +#define TYPE_P 653 +#define TYPES_P 654 +#define UNBOUNDED 655 +#define UNCOMMITTED 656 +#define UNENCRYPTED 657 +#define UNION 658 +#define UNIQUE 659 +#define UNKNOWN 660 +#define UNLISTEN 661 +#define UNLOGGED 662 +#define UNTIL 663 +#define UPDATE 664 +#define USER 665 +#define USING 666 +#define VACUUM 667 +#define VALID 668 +#define VALIDATE 669 +#define VALIDATOR 670 +#define VALUE_P 671 +#define VALUES 672 +#define VARCHAR 673 +#define VARIADIC 674 +#define VARYING 675 +#define VERBOSE 676 +#define VERSION_P 677 +#define VIEW 678 +#define VIEWS 679 +#define VOLATILE 680 +#define WHEN 681 +#define WHERE 682 +#define WHITESPACE_P 683 +#define WINDOW 684 +#define WITH 685 +#define WITHIN 686 +#define WITHOUT 687 +#define WORK 688 +#define WRAPPER 689 +#define WRITE 690 +#define XML_P 691 +#define XMLATTRIBUTES 692 +#define XMLCONCAT 693 +#define XMLELEMENT 694 +#define XMLEXISTS 695 +#define XMLFOREST 696 +#define XMLNAMESPACES 697 +#define XMLPARSE 698 +#define XMLPI 699 +#define XMLROOT 700 +#define XMLSERIALIZE 701 +#define XMLTABLE 702 +#define YEAR_P 703 +#define YES_P 704 +#define ZONE 705 +#define NOT_LA 706 +#define NULLS_LA 707 +#define WITH_LA 708 +#define POSTFIXOP 709 +#define UMINUS 710 -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE { -#line 226 "gram.y" /* yacc.c:1909 */ +/* Line 2058 of yacc.c */ +#line 239 "gram.y" core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ @@ -954,7 +982,7 @@ union YYSTYPE TypeName *typnam; FunctionParameter *fun_param; FunctionParameterMode fun_param_mode; - FuncWithArgs *funwithargs; + ObjectWithArgs *objwithargs; DefElem *defelt; SortBy *sortby; WindowDef *windef; @@ -973,31 +1001,46 @@ union YYSTYPE struct ImportQual *importqual; InsertStmt *istmt; VariableSetStmt *vsetstmt; + PartitionElem *partelem; + PartitionSpec *partspec; + PartitionBoundSpec *partboundspec; + RoleSpec *rolespec; -#line 978 "gram.h" /* yacc.c:1909 */ -}; -typedef union YYSTYPE YYSTYPE; +/* Line 2058 of yacc.c */ +#line 1012 "gram.h" +} YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif -/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE YYLTYPE; -struct YYLTYPE +typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -}; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif - +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int base_yyparse (void *YYPARSE_PARAM); +#else +int base_yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus int base_yyparse (core_yyscan_t yyscanner); +#else +int base_yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ #endif /* !YY_BASE_YY_GRAM_H_INCLUDED */ diff --git a/src/parser/gram.y b/src/parser/gram.y index b4da4ea02..36759f261 100644 --- a/src/parser/gram.y +++ b/src/parser/gram.y @@ -6,8 +6,8 @@ * gram.y * POSTGRESQL BISON rules/actions * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -29,12 +29,11 @@ * current transaction and are just parsing commands to find the next * ROLLBACK or COMMIT. If you make use of SET variables, then you * will do the wrong thing in multi-query strings like this: - * SET SQL_inheritance TO off; SELECT * FROM foo; + * SET constraint_exclusion TO off; SELECT * FROM foo; * because the entire string is parsed by gram.y before the SET gets * executed. Anything that depends on the database or changeable state * should be handled during parse analysis so that it happens at the - * right time not the wrong time. The handling of SQL_inheritance is - * a good example. + * right time not the wrong time. * * WARNINGS * If you use a list, make sure the datum is a node so that the printing @@ -88,6 +87,13 @@ bool operator_precedence_warning = false; #define REPLICA_IDENTITY_FULL 'f' #define REPLICA_IDENTITY_INDEX 'i' +/* + * Definition taken from + * postgreSQL source code file: src/include/catalog/pg_attribute.h + */ +#define ATTRIBUTE_IDENTITY_ALWAYS 'a' +#define ATTRIBUTE_IDENTITY_BY_DEFAULT 'd' + /* * Definition taken from * postgreSQL source code file: src/include/utils/xml.h @@ -100,7 +106,6 @@ typedef enum XML_STANDALONE_OMITTED } XmlStandaloneType; -static DefElem *defWithOids(bool value); /* * Location tracking support --- simpler than bison's default, since we only * want to track the start position not the end position of each nonterminal. @@ -115,7 +120,8 @@ static DefElem *defWithOids(bool value); /* * The above macro assigns -1 (unknown) as the parse location of any - * nonterminal that was reduced from an empty rule. This is problematic + * nonterminal that was reduced from an empty rule, or whose leftmost + * component was reduced from an empty rule. This is problematic * for nonterminals defined like * OptFooList: / * EMPTY * / { ... } | OptFooList Foo { ... } ; * because we'll set -1 as the location during the first reduction and then @@ -126,6 +132,12 @@ static DefElem *defWithOids(bool value); * (Although we have many nonterminals that follow this pattern, we only * bother with fixing @$ like this when the nonterminal's parse location * is actually referenced in some rule.) + * + * A cleaner answer would be to make YYLLOC_DEFAULT scan all the Rhs + * locations until it's found one that's not -1. Then we'd get a correct + * location for any nonterminal that isn't entirely empty. But this way + * would add overhead to every rule reduction, and so far there's not been + * a compelling reason to pay that overhead. */ /* @@ -168,18 +180,17 @@ typedef struct ImportQual static void base_yyerror(YYLTYPE *yylloc, core_yyscan_t yyscanner, const char *msg); +static RawStmt *makeRawStmt(Node *stmt, int stmt_location); +static void updateRawStmtEnd(RawStmt *rs, int end_location); static Node *makeColumnRef(char *colname, List *indirection, int location, core_yyscan_t yyscanner); -static Node *makeTypeCast(Node *arg, TypeName *typename, int location); static Node *makeStringConst(char *str, int location); -static Node *makeStringConstCast(char *str, int location, TypeName *typename); -static Node *makeIntConst(int val, int location); static Node *makeFloatConst(char *str, int location); static Node *makeBitStringConst(char *str, int location); static Node *makeNullAConst(int location); static Node *makeAConst(Value *v, int location); static Node *makeBoolAConst(bool state, int location); -static Node *makeRoleSpec(RoleSpecType type, int location); +static RoleSpec *makeRoleSpec(RoleSpecType type, int location); static void check_qualified_name(List *names, core_yyscan_t yyscanner); static List *check_func_name(List *names, core_yyscan_t yyscanner); static List *check_indirection(List *indirection, core_yyscan_t yyscanner); @@ -199,6 +210,8 @@ static Node *makeAndExpr(Node *lexpr, Node *rexpr, int location); static Node *makeOrExpr(Node *lexpr, Node *rexpr, int location); static Node *makeNotExpr(Node *expr, int location); static Node *makeAArrayExpr(List *elements, int location); +static Node *makeSQLValueFunction(SQLValueFunctionOp op, int32 typmod, + int location); static Node *makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args, int location); static List *mergeTableFuncParameters(List *func_args, List *columns); @@ -242,7 +255,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); TypeName *typnam; FunctionParameter *fun_param; FunctionParameterMode fun_param_mode; - FuncWithArgs *funwithargs; + ObjectWithArgs *objwithargs; DefElem *defelt; SortBy *sortby; WindowDef *windef; @@ -261,32 +274,36 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); struct ImportQual *importqual; InsertStmt *istmt; VariableSetStmt *vsetstmt; + PartitionElem *partelem; + PartitionSpec *partspec; + PartitionBoundSpec *partboundspec; + RoleSpec *rolespec; } %type stmt schema_stmt - AlterEventTrigStmt + AlterEventTrigStmt AlterCollationStmt AlterDatabaseStmt AlterDatabaseSetStmt AlterDomainStmt AlterEnumStmt AlterFdwStmt AlterForeignServerStmt AlterGroupStmt AlterObjectDependsStmt AlterObjectSchemaStmt AlterOwnerStmt AlterOperatorStmt AlterSeqStmt AlterSystemStmt AlterTableStmt AlterTblSpcStmt AlterExtensionStmt AlterExtensionContentsStmt AlterForeignTableStmt - AlterCompositeTypeStmt AlterUserStmt AlterUserMappingStmt AlterUserSetStmt + AlterCompositeTypeStmt AlterUserMappingStmt AlterRoleStmt AlterRoleSetStmt AlterPolicyStmt AlterDefaultPrivilegesStmt DefACLAction AnalyzeStmt ClosePortalStmt ClusterStmt CommentStmt ConstraintsSetStmt CopyStmt CreateAsStmt CreateCastStmt CreateDomainStmt CreateExtensionStmt CreateGroupStmt CreateOpClassStmt CreateOpFamilyStmt AlterOpFamilyStmt CreatePLangStmt - CreateSchemaStmt CreateSeqStmt CreateStmt CreateTableSpaceStmt + CreateSchemaStmt CreateSeqStmt CreateStmt CreateStatsStmt CreateTableSpaceStmt CreateFdwStmt CreateForeignServerStmt CreateForeignTableStmt CreateAssertStmt CreateTransformStmt CreateTrigStmt CreateEventTrigStmt CreateUserStmt CreateUserMappingStmt CreateRoleStmt CreatePolicyStmt CreatedbStmt DeclareCursorStmt DefineStmt DeleteStmt DiscardStmt DoStmt - DropGroupStmt DropOpClassStmt DropOpFamilyStmt DropPLangStmt DropStmt - DropAssertStmt DropTrigStmt DropRuleStmt DropCastStmt DropRoleStmt - DropPolicyStmt DropUserStmt DropdbStmt DropTableSpaceStmt DropFdwStmt + DropOpClassStmt DropOpFamilyStmt DropPLangStmt DropStmt + DropAssertStmt DropCastStmt DropRoleStmt + DropdbStmt DropTableSpaceStmt DropTransformStmt - DropForeignServerStmt DropUserMappingStmt ExplainStmt FetchStmt + DropUserMappingStmt ExplainStmt FetchStmt GrantStmt GrantRoleStmt ImportForeignSchemaStmt IndexStmt InsertStmt ListenStmt LoadStmt LockStmt NotifyStmt ExplainableStmt PreparableStmt CreateFunctionStmt AlterFunctionStmt ReindexStmt RemoveAggrStmt @@ -300,6 +317,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); DropOwnedStmt ReassignOwnedStmt AlterTSConfigurationStmt AlterTSDictionaryStmt CreateMatViewStmt RefreshMatViewStmt CreateAmStmt + CreatePublicationStmt AlterPublicationStmt + CreateSubscriptionStmt AlterSubscriptionStmt DropSubscriptionStmt %type select_no_parens select_with_parens select_clause simple_select values_clause @@ -308,8 +327,10 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type add_drop opt_asc_desc opt_nulls_order %type alter_table_cmd alter_type_cmd opt_collate_clause - replica_identity + replica_identity partition_cmd %type alter_table_cmds alter_type_cmds +%type alter_identity_column_option_list +%type alter_identity_column_option %type opt_drop_behavior @@ -342,6 +363,9 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type TriggerEvents TriggerOneEvent %type TriggerFuncArg %type TriggerWhen +%type TransitionRelName +%type TransitionRowOrTable TransitionOldOrNew +%type TriggerTransition %type event_trigger_when_list event_trigger_value_list %type event_trigger_when_item @@ -361,17 +385,18 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type all_Op MathOp %type row_security_cmd RowSecurityDefaultForCmd +%type RowSecurityDefaultPermissive %type RowSecurityOptionalWithCheck RowSecurityOptionalExpr %type RowSecurityDefaultToRole RowSecurityOptionalToRole %type iso_level opt_encoding -%type grantee +%type grantee %type grantee_list %type privilege %type privileges privilege_list %type privilege_target -%type function_with_argtypes -%type function_with_argtypes_list +%type function_with_argtypes aggregate_with_argtypes operator_with_argtypes +%type function_with_argtypes_list aggregate_with_argtypes_list operator_with_argtypes_list %type defacl_privilege_target %type DefACLOption %type DefACLOptionList @@ -394,8 +419,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); qualified_name_list any_name any_name_list type_name_list any_operator expr_list attrs target_list opt_target_list insert_column_list set_target_list - set_clause_list set_clause multiple_set_clause - ctext_expr_list ctext_row def_list operator_def_list indirection opt_indirection + set_clause_list set_clause + def_list operator_def_list indirection opt_indirection reloption_list group_clause TriggerFuncArgs select_limit opt_select_limit opclass_item_list opclass_drop_list opclass_purpose opt_opfamily transaction_mode_list_or_empty @@ -406,10 +431,14 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); create_generic_options alter_generic_options relation_expr_list dostmt_opt_list transform_element_list transform_type_list + TriggerTransitions TriggerReferencing + publication_name_list %type group_by_list %type group_by_item empty_grouping_set rollup_clause cube_clause %type grouping_sets_clause +%type opt_publication_for_tables publication_for_tables +%type publication_name_item %type opt_fdw_options fdw_options %type fdw_option @@ -449,14 +478,16 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type copy_from opt_program %type opt_column event cursor_options opt_hold opt_set_data -%type drop_type comment_type security_label_type +%type drop_type_any_name drop_type_name drop_type_name_on_any_name + comment_type_any_name comment_type_name + security_label_type_any_name security_label_type_name %type fetch_args limit_clause select_limit_value offset_clause select_offset_value select_offset_value2 opt_select_fetch_first_value %type row_or_rows first_or_next -%type OptSeqOptList SeqOptList +%type OptSeqOptList SeqOptList OptParenthesizedSeqOptList %type SeqOptElem %type insert_rest @@ -471,8 +502,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type def_elem reloption_elem old_aggr_elem operator_def_elem %type def_arg columnElem where_clause where_or_current_clause a_expr b_expr c_expr AexprConst indirection_el opt_slice_bound - columnref in_expr having_clause func_table array_expr - ExclusionWhereClause + columnref in_expr having_clause func_table xmltable array_expr + ExclusionWhereClause operator_def_arg %type rowsfrom_item rowsfrom_list opt_col_def_list %type opt_ordinality %type ExclusionConstraintList ExclusionConstraintElem @@ -482,7 +513,6 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type case_expr case_arg when_clause case_default %type when_clause_list %type sub_type -%type ctext_expr %type NumericOnly %type NumericOnly_list %type alias_clause opt_alias_clause @@ -494,7 +524,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type relation_expr %type relation_expr_opt_alias %type tablesample_clause opt_repeatable_clause -%type target_el single_set_clause set_target insert_column_item +%type target_el set_target insert_column_item %type generic_option_name %type generic_option_arg @@ -521,7 +551,6 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); Bit ConstBit BitWithLength BitWithoutLength %type character %type extract_arg -%type opt_charset %type opt_varying opt_timezone opt_no_inherit %type Iconst SignedIconst @@ -532,7 +561,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type NonReservedWord NonReservedWord_or_Sconst %type createdb_opt_name %type var_value zone_value -%type auth_ident RoleSpec opt_granted_by +%type auth_ident RoleSpec opt_granted_by %type unreserved_keyword type_func_name_keyword %type col_name_keyword reserved_keyword @@ -548,7 +577,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type constraints_set_list %type constraints_set_mode %type OptTableSpace OptConsTableSpace -%type OptTableSpaceOwner +%type OptTableSpaceOwner %type opt_check_option %type opt_provider security_label @@ -559,6 +588,11 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type xmlexists_argument %type document_or_content %type xml_whitespace_option +%type xmltable_column_list xmltable_column_option_list +%type xmltable_column_el +%type xmltable_column_option_el +%type xml_namespace_list +%type xml_namespace_el %type func_application func_expr_common_subexpr %type func_expr func_expr_windowless @@ -573,15 +607,23 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); opt_frame_clause frame_extent frame_bound %type opt_existing_window_name %type opt_if_not_exists +%type generated_when override_kind +%type PartitionSpec OptPartitionSpec +%type part_strategy +%type part_elem +%type part_params +%type ForValues +%type partbound_datum PartitionRangeDatum +%type partbound_datum_list range_datum_list /* * Non-keyword token types. These are hard-wired into the "flex" lexer. * They must be listed first so that their numeric codes do not depend on - * the set of keywords. PL/pgsql depends on this so that it can share the - * same lexer. If you add/change tokens here, fix PL/pgsql to match! + * the set of keywords. PL/pgSQL depends on this so that it can share the + * same lexer. If you add/change tokens here, fix PL/pgSQL to match! * * DOT_DOT is unused in the core SQL grammar, and so will always provoke - * parse errors. It is needed by PL/pgsql. + * parse errors. It is needed by PL/pgSQL. */ %token IDENT FCONST SCONST BCONST XCONST Op %token ICONST PARAM @@ -598,14 +640,14 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); /* ordinary key words in alphabetical order */ %token ABORT_P ABSOLUTE_P ACCESS ACTION ADD_P ADMIN AFTER AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY ARRAY AS ASC - ASSERTION ASSIGNMENT ASYMMETRIC AT ATTRIBUTE AUTHORIZATION + ASSERTION ASSIGNMENT ASYMMETRIC AT ATTACH ATTRIBUTE AUTHORIZATION BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT BOOLEAN_P BOTH BY CACHE CALLED CASCADE CASCADED CASE CAST CATALOG_P CHAIN CHAR_P CHARACTER CHARACTERISTICS CHECK CHECKPOINT CLASS CLOSE - CLUSTER COALESCE COLLATE COLLATION COLUMN COMMENT COMMENTS COMMIT + CLUSTER COALESCE COLLATE COLLATION COLUMN COLUMNS COMMENT COMMENTS COMMIT COMMITTED CONCURRENTLY CONFIGURATION CONFLICT CONNECTION CONSTRAINT CONSTRAINTS CONTENT_P CONTINUE_P CONVERSION_P COPY COST CREATE CROSS CSV CUBE CURRENT_P @@ -614,7 +656,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); DATA_P DATABASE DAY_P DEALLOCATE DEC DECIMAL_P DECLARE DEFAULT DEFAULTS DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS DEPENDS DESC - DICTIONARY DISABLE_P DISCARD DISTINCT DO DOCUMENT_P DOMAIN_P DOUBLE_P DROP + DETACH DICTIONARY DISABLE_P DISCARD DISTINCT DO DOCUMENT_P DOMAIN_P + DOUBLE_P DROP EACH ELSE ENABLE_P ENCODING ENCRYPTED END_P ENUM_P ESCAPE EVENT EXCEPT EXCLUDE EXCLUDING EXCLUSIVE EXECUTE EXISTS EXPLAIN @@ -623,7 +666,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); FALSE_P FAMILY FETCH FILTER FIRST_P FLOAT_P FOLLOWING FOR FORCE FOREIGN FORWARD FREEZE FROM FULL FUNCTION FUNCTIONS - GLOBAL GRANT GRANTED GREATEST GROUP_P GROUPING + GENERATED GLOBAL GRANT GRANTED GREATEST GROUP_P GROUPING HANDLER HAVING HEADER_P HOLD HOUR_P @@ -642,29 +685,29 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); MAPPING MATCH MATERIALIZED MAXVALUE METHOD MINUTE_P MINVALUE MODE MONTH_P MOVE - NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NO NONE + NAME_P NAMES NATIONAL NATURAL NCHAR NEW NEXT NO NONE NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF NULLS_P NUMERIC - OBJECT_P OF OFF OFFSET OIDS ON ONLY OPERATOR OPTION OPTIONS OR - ORDER ORDINALITY OUT_P OUTER_P OVER OVERLAPS OVERLAY OWNED OWNER + OBJECT_P OF OFF OFFSET OIDS OLD ON ONLY OPERATOR OPTION OPTIONS OR + ORDER ORDINALITY OUT_P OUTER_P OVER OVERLAPS OVERLAY OVERRIDING OWNED OWNER PARALLEL PARSER PARTIAL PARTITION PASSING PASSWORD PGPOOL PLACING PLANS POLICY POSITION PRECEDING PRECISION PRESERVE PREPARE PREPARED PRIMARY - PRIOR PRIVILEGES PROCEDURAL PROCEDURE PROGRAM + PRIOR PRIVILEGES PROCEDURAL PROCEDURE PROGRAM PUBLICATION QUOTE - RANGE READ REAL REASSIGN RECHECK RECURSIVE REF REFERENCES REFRESH REINDEX - RELATIVE_P RELEASE RENAME REPEATABLE REPLACE REPLICA + RANGE READ REAL REASSIGN RECHECK RECURSIVE REF REFERENCES REFERENCING + REFRESH REINDEX RELATIVE_P RELEASE RENAME REPEATABLE REPLACE REPLICA RESET RESTART RESTRICT RETURNING RETURNS REVOKE RIGHT ROLE ROLLBACK ROLLUP ROW ROWS RULE - SAVEPOINT SCHEMA SCROLL SEARCH SECOND_P SECURITY SELECT SEQUENCE SEQUENCES + SAVEPOINT SCHEMA SCHEMAS SCROLL SEARCH SECOND_P SECURITY SELECT SEQUENCE SEQUENCES SERIALIZABLE SERVER SESSION SESSION_USER SET SETS SETOF SHARE SHOW - SIMILAR SIMPLE SKIP SMALLINT SNAPSHOT SOME SQL_P STABLE STANDALONE_P START - STATEMENT STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P SUBSTRING - SYMMETRIC SYSID SYSTEM_P + SIMILAR SIMPLE SKIP SMALLINT SNAPSHOT SOME SQL_P STABLE STANDALONE_P + START STATEMENT STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P + SUBSCRIPTION SUBSTRING SYMMETRIC SYSID SYSTEM_P TABLE TABLES TABLESAMPLE TABLESPACE TEMP TEMPLATE TEMPORARY TEXT_P THEN TIME TIMESTAMP TO TRAILING TRANSACTION TRANSFORM TREAT TRIGGER TRIM TRUE_P @@ -678,8 +721,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); WHEN WHERE WHITESPACE_P WINDOW WITH WITHIN WITHOUT WORK WRAPPER WRITE - XML_P XMLATTRIBUTES XMLCONCAT XMLELEMENT XMLEXISTS XMLFOREST XMLPARSE - XMLPI XMLROOT XMLSERIALIZE + XML_P XMLATTRIBUTES XMLCONCAT XMLELEMENT XMLEXISTS XMLFOREST XMLNAMESPACES + XMLPARSE XMLPI XMLROOT XMLSERIALIZE XMLTABLE YEAR_P YES_P @@ -718,6 +761,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); * same as if they weren't keywords). We need to do this for PARTITION, * RANGE, ROWS to support opt_existing_window_name; and for RANGE, ROWS * so that they can follow a_expr without creating postfix-operator problems; + * for GENERATED so that it can follow b_expr; * and for NULL so that it can follow b_expr in ColQualList without creating * postfix-operator problems. * @@ -736,7 +780,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); * blame any funny behavior of UNBOUNDED on the SQL standard, though. */ %nonassoc UNBOUNDED /* ideally should have same precedence as IDENT */ -%nonassoc IDENT NULL_P PARTITION RANGE ROWS PRECEDING FOLLOWING CUBE ROLLUP +%nonassoc IDENT GENERATED NULL_P PARTITION RANGE ROWS PRECEDING FOLLOWING CUBE ROLLUP %left Op OPERATOR /* multi-character ops and user-defined operators */ %left '+' '-' %left '*' '/' '%' @@ -771,18 +815,32 @@ stmtblock: stmtmulti } ; -/* the thrashing around here is to discard "empty" statements... */ +/* + * At top level, we wrap each stmt with a RawStmt node carrying start location + * and length of the stmt's text. Notice that the start loc/len are driven + * entirely from semicolon locations (@2). It would seem natural to use + * @1 or @3 to get the true start location of a stmt, but that doesn't work + * for statements that can start with empty nonterminals (opt_with_clause is + * the main offender here); as noted in the comments for YYLLOC_DEFAULT, + * we'd get -1 for the location in such cases. + * We also take care to discard empty statements entirely. + */ stmtmulti: stmtmulti ';' stmt { + if ($1 != NIL) + { + /* update length of previous stmt */ + updateRawStmtEnd(llast_node(RawStmt, $1), @2); + } if ($3 != NULL) - $$ = lappend($1, $3); + $$ = lappend($1, makeRawStmt($3, @2 + 1)); else $$ = $1; } | stmt { if ($1 != NULL) - $$ = list_make1($1); + $$ = list_make1(makeRawStmt($1, 0)); else $$ = NIL; } @@ -790,6 +848,7 @@ stmtmulti: stmtmulti ';' stmt stmt : AlterEventTrigStmt + | AlterCollationStmt | AlterDatabaseStmt | AlterDatabaseSetStmt | AlterDefaultPrivilegesStmt @@ -812,13 +871,13 @@ stmt : | AlterTableStmt | AlterTblSpcStmt | AlterCompositeTypeStmt + | AlterPublicationStmt | AlterRoleSetStmt | AlterRoleStmt + | AlterSubscriptionStmt | AlterTSConfigurationStmt | AlterTSDictionaryStmt | AlterUserMappingStmt - | AlterUserSetStmt - | AlterUserStmt | AnalyzeStmt | CheckPointStmt | ClosePortalStmt @@ -841,12 +900,15 @@ stmt : | CreateMatViewStmt | CreateOpClassStmt | CreateOpFamilyStmt + | CreatePublicationStmt | AlterOpFamilyStmt | CreatePolicyStmt | CreatePLangStmt | CreateSchemaStmt | CreateSeqStmt | CreateStmt + | CreateSubscriptionStmt + | CreateStatsStmt | CreateTableSpaceStmt | CreateTransformStmt | CreateTrigStmt @@ -863,21 +925,15 @@ stmt : | DoStmt | DropAssertStmt | DropCastStmt - | DropFdwStmt - | DropForeignServerStmt - | DropGroupStmt | DropOpClassStmt | DropOpFamilyStmt | DropOwnedStmt - | DropPolicyStmt | DropPLangStmt - | DropRuleStmt | DropStmt + | DropSubscriptionStmt | DropTableSpaceStmt | DropTransformStmt - | DropTrigStmt | DropRoleStmt - | DropUserStmt | DropUserMappingStmt | DropdbStmt | ExecuteStmt @@ -960,38 +1016,46 @@ AlterOptRoleElem: PASSWORD Sconst { $$ = makeDefElem("password", - (Node *)makeString($2)); + (Node *)makeString($2), @1); } | PASSWORD NULL_P { - $$ = makeDefElem("password", NULL); + $$ = makeDefElem("password", NULL, @1); } | ENCRYPTED PASSWORD Sconst { - $$ = makeDefElem("encryptedPassword", - (Node *)makeString($3)); + /* + * These days, passwords are always stored in encrypted + * form, so there is no difference between PASSWORD and + * ENCRYPTED PASSWORD. + */ + $$ = makeDefElem("password", + (Node *)makeString($3), @1); } | UNENCRYPTED PASSWORD Sconst { - $$ = makeDefElem("unencryptedPassword", - (Node *)makeString($3)); + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("UNENCRYPTED PASSWORD is no longer supported"), + errhint("Remove UNENCRYPTED to store the password in encrypted form instead."), + parser_errposition(@1))); } | INHERIT { - $$ = makeDefElem("inherit", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("inherit", (Node *)makeInteger(TRUE), @1); } | CONNECTION LIMIT SignedIconst { - $$ = makeDefElem("connectionlimit", (Node *)makeInteger($3)); + $$ = makeDefElem("connectionlimit", (Node *)makeInteger($3), @1); } | VALID UNTIL Sconst { - $$ = makeDefElem("validUntil", (Node *)makeString($3)); + $$ = makeDefElem("validUntil", (Node *)makeString($3), @1); } /* Supported but not documented for roles, for use by ALTER GROUP. */ | USER role_list { - $$ = makeDefElem("rolemembers", (Node *)$2); + $$ = makeDefElem("rolemembers", (Node *)$2, @1); } | IDENT { @@ -1001,36 +1065,36 @@ AlterOptRoleElem: * size of the main parser. */ if (strcmp($1, "superuser") == 0) - $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE), @1); else if (strcmp($1, "nosuperuser") == 0) - $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE), @1); else if (strcmp($1, "createrole") == 0) - $$ = makeDefElem("createrole", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("createrole", (Node *)makeInteger(TRUE), @1); else if (strcmp($1, "nocreaterole") == 0) - $$ = makeDefElem("createrole", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("createrole", (Node *)makeInteger(FALSE), @1); else if (strcmp($1, "replication") == 0) - $$ = makeDefElem("isreplication", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("isreplication", (Node *)makeInteger(TRUE), @1); else if (strcmp($1, "noreplication") == 0) - $$ = makeDefElem("isreplication", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("isreplication", (Node *)makeInteger(FALSE), @1); else if (strcmp($1, "createdb") == 0) - $$ = makeDefElem("createdb", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("createdb", (Node *)makeInteger(TRUE), @1); else if (strcmp($1, "nocreatedb") == 0) - $$ = makeDefElem("createdb", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("createdb", (Node *)makeInteger(FALSE), @1); else if (strcmp($1, "login") == 0) - $$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE), @1); else if (strcmp($1, "nologin") == 0) - $$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE), @1); else if (strcmp($1, "bypassrls") == 0) - $$ = makeDefElem("bypassrls", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("bypassrls", (Node *)makeInteger(TRUE), @1); else if (strcmp($1, "nobypassrls") == 0) - $$ = makeDefElem("bypassrls", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("bypassrls", (Node *)makeInteger(FALSE), @1); else if (strcmp($1, "noinherit") == 0) { /* * Note that INHERIT is a keyword, so it's handled by main parser, but * NOINHERIT is handled here. */ - $$ = makeDefElem("inherit", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("inherit", (Node *)makeInteger(FALSE), @1); } else ereport(ERROR, @@ -1045,23 +1109,23 @@ CreateOptRoleElem: /* The following are not supported by ALTER ROLE/USER/GROUP */ | SYSID Iconst { - $$ = makeDefElem("sysid", (Node *)makeInteger($2)); + $$ = makeDefElem("sysid", (Node *)makeInteger($2), @1); } | ADMIN role_list { - $$ = makeDefElem("adminmembers", (Node *)$2); + $$ = makeDefElem("adminmembers", (Node *)$2, @1); } | ROLE role_list { - $$ = makeDefElem("rolemembers", (Node *)$2); + $$ = makeDefElem("rolemembers", (Node *)$2, @1); } | IN_P ROLE role_list { - $$ = makeDefElem("addroleto", (Node *)$3); + $$ = makeDefElem("addroleto", (Node *)$3, @1); } | IN_P GROUP_P role_list { - $$ = makeDefElem("addroleto", (Node *)$3); + $$ = makeDefElem("addroleto", (Node *)$3, @1); } ; @@ -1099,6 +1163,14 @@ AlterRoleStmt: n->options = $5; $$ = (Node *)n; } + | ALTER USER RoleSpec opt_with AlterOptRoleList + { + AlterRoleStmt *n = makeNode(AlterRoleStmt); + n->role = $3; + n->action = +1; /* add, if there are members */ + n->options = $5; + $$ = (Node *)n; + } ; opt_in_database: @@ -1123,46 +1195,32 @@ AlterRoleSetStmt: n->setstmt = $5; $$ = (Node *)n; } - ; - - -/***************************************************************************** - * - * Alter a postgresql DBMS user - * - *****************************************************************************/ - -AlterUserStmt: - ALTER USER RoleSpec opt_with AlterOptRoleList - { - AlterRoleStmt *n = makeNode(AlterRoleStmt); + | ALTER USER RoleSpec opt_in_database SetResetClause + { + AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = $3; - n->action = +1; /* add, if there are members */ - n->options = $5; + n->database = $4; + n->setstmt = $5; $$ = (Node *)n; - } - ; - - -AlterUserSetStmt: - ALTER USER RoleSpec SetResetClause + } + | ALTER USER ALL opt_in_database SetResetClause { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); - n->role = $3; - n->database = NULL; - n->setstmt = $4; + n->role = NULL; + n->database = $4; + n->setstmt = $5; $$ = (Node *)n; } - ; + ; /***************************************************************************** * * Drop a postgresql DBMS role * - * XXX Ideally this would have CASCADE/RESTRICT options, but since a role - * might own objects in multiple databases, there is presently no way to - * implement either cascading or restricting. Caveat DBA. + * XXX Ideally this would have CASCADE/RESTRICT options, but a role + * might own objects in multiple databases, and there is presently no way to + * implement cascading to other databases. So we always behave as RESTRICT. *****************************************************************************/ DropRoleStmt: @@ -1180,19 +1238,7 @@ DropRoleStmt: n->roles = $5; $$ = (Node *)n; } - ; - -/***************************************************************************** - * - * Drop a postgresql DBMS user - * - * XXX Ideally this would have CASCADE/RESTRICT options, but since a user - * might own objects in multiple databases, there is presently no way to - * implement either cascading or restricting. Caveat DBA. - *****************************************************************************/ - -DropUserStmt: - DROP USER role_list + | DROP USER role_list { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = FALSE; @@ -1206,6 +1252,20 @@ DropUserStmt: n->missing_ok = TRUE; $$ = (Node *)n; } + | DROP GROUP_P role_list + { + DropRoleStmt *n = makeNode(DropRoleStmt); + n->missing_ok = FALSE; + n->roles = $3; + $$ = (Node *)n; + } + | DROP GROUP_P IF_P EXISTS role_list + { + DropRoleStmt *n = makeNode(DropRoleStmt); + n->missing_ok = TRUE; + n->roles = $5; + $$ = (Node *)n; + } ; @@ -1240,7 +1300,7 @@ AlterGroupStmt: n->role = $3; n->action = $4; n->options = list_make1(makeDefElem("rolemembers", - (Node *)$6)); + (Node *)$6, @6)); $$ = (Node *)n; } ; @@ -1250,31 +1310,6 @@ add_drop: ADD_P { $$ = +1; } ; -/***************************************************************************** - * - * Drop a postgresql group - * - * XXX see above notes about cascading DROP USER; groups have same problem. - *****************************************************************************/ - -DropGroupStmt: - DROP GROUP_P role_list - { - DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = FALSE; - n->roles = $3; - $$ = (Node *)n; - } - | DROP GROUP_P IF_P EXISTS role_list - { - DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = TRUE; - n->roles = $5; - $$ = (Node *)n; - } - ; - - /***************************************************************************** * * Manipulate a schema @@ -1843,6 +1878,24 @@ AlterTableStmt: n->missing_ok = true; $$ = (Node *)n; } + | ALTER TABLE relation_expr partition_cmd + { + AlterTableStmt *n = makeNode(AlterTableStmt); + n->relation = $3; + n->cmds = list_make1($4); + n->relkind = OBJECT_TABLE; + n->missing_ok = false; + $$ = (Node *)n; + } + | ALTER TABLE IF_P EXISTS relation_expr partition_cmd + { + AlterTableStmt *n = makeNode(AlterTableStmt); + n->relation = $5; + n->cmds = list_make1($6); + n->relkind = OBJECT_TABLE; + n->missing_ok = true; + $$ = (Node *)n; + } | ALTER TABLE ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait { AlterTableMoveAllStmt *n = @@ -1988,6 +2041,35 @@ alter_table_cmds: | alter_table_cmds ',' alter_table_cmd { $$ = lappend($1, $3); } ; +partition_cmd: + /* ALTER TABLE ATTACH PARTITION FOR VALUES */ + ATTACH PARTITION qualified_name ForValues + { + AlterTableCmd *n = makeNode(AlterTableCmd); + PartitionCmd *cmd = makeNode(PartitionCmd); + + n->subtype = AT_AttachPartition; + cmd->name = $3; + cmd->bound = $4; + n->def = (Node *) cmd; + + $$ = (Node *) n; + } + /* ALTER TABLE DETACH PARTITION */ + | DETACH PARTITION qualified_name + { + AlterTableCmd *n = makeNode(AlterTableCmd); + PartitionCmd *cmd = makeNode(PartitionCmd); + + n->subtype = AT_DetachPartition; + cmd->name = $3; + cmd->bound = NULL; + n->def = (Node *) cmd; + + $$ = (Node *) n; + } + ; + alter_table_cmd: /* ALTER TABLE ADD */ ADD_P columnDef @@ -2086,6 +2168,50 @@ alter_table_cmd: n->def = (Node *) makeString($6); $$ = (Node *)n; } + /* ALTER TABLE ALTER [COLUMN] ADD GENERATED ... AS IDENTITY ... */ + | ALTER opt_column ColId ADD_P GENERATED generated_when AS IDENTITY_P OptParenthesizedSeqOptList + { + AlterTableCmd *n = makeNode(AlterTableCmd); + Constraint *c = makeNode(Constraint); + + c->contype = CONSTR_IDENTITY; + c->generated_when = $6; + c->options = $9; + c->location = @5; + + n->subtype = AT_AddIdentity; + n->name = $3; + n->def = (Node *) c; + + $$ = (Node *)n; + } + /* ALTER TABLE ALTER [COLUMN] SET /RESET */ + | ALTER opt_column ColId alter_identity_column_option_list + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_SetIdentity; + n->name = $3; + n->def = (Node *) $4; + $$ = (Node *)n; + } + /* ALTER TABLE ALTER [COLUMN] DROP IDENTITY */ + | ALTER opt_column ColId DROP IDENTITY_P + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_DropIdentity; + n->name = $3; + n->missing_ok = false; + $$ = (Node *)n; + } + /* ALTER TABLE ALTER [COLUMN] DROP IDENTITY IF EXISTS */ + | ALTER opt_column ColId DROP IDENTITY_P IF_P EXISTS + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_DropIdentity; + n->name = $3; + n->missing_ok = true; + $$ = (Node *)n; + } /* ALTER TABLE DROP [COLUMN] IF EXISTS [RESTRICT|CASCADE] */ | DROP opt_column IF_P EXISTS ColId opt_drop_behavior { @@ -2507,23 +2633,133 @@ reloption_list: reloption_elem: ColLabel '=' def_arg { - $$ = makeDefElem($1, (Node *) $3); + $$ = makeDefElem($1, (Node *) $3, @1); } | ColLabel { - $$ = makeDefElem($1, NULL); + $$ = makeDefElem($1, NULL, @1); } | ColLabel '.' ColLabel '=' def_arg { $$ = makeDefElemExtended($1, $3, (Node *) $5, - DEFELEM_UNSPEC); + DEFELEM_UNSPEC, @1); } | ColLabel '.' ColLabel { - $$ = makeDefElemExtended($1, $3, NULL, DEFELEM_UNSPEC); + $$ = makeDefElemExtended($1, $3, NULL, DEFELEM_UNSPEC, @1); + } + ; + +alter_identity_column_option_list: + alter_identity_column_option + { $$ = list_make1($1); } + | alter_identity_column_option_list alter_identity_column_option + { $$ = lappend($1, $2); } + ; + +alter_identity_column_option: + RESTART + { + $$ = makeDefElem("restart", NULL, @1); + } + | RESTART opt_with NumericOnly + { + $$ = makeDefElem("restart", (Node *)$3, @1); + } + | SET SeqOptElem + { + if (strcmp($2->defname, "as") == 0 || + strcmp($2->defname, "restart") == 0 || + strcmp($2->defname, "owned_by") == 0) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("sequence option \"%s\" not supported here", $2->defname), + parser_errposition(@2))); + $$ = $2; + } + | SET GENERATED generated_when + { + $$ = makeDefElem("generated", (Node *) makeInteger($3), @1); + } + ; + +ForValues: + /* a LIST partition */ + FOR VALUES IN_P '(' partbound_datum_list ')' + { + PartitionBoundSpec *n = makeNode(PartitionBoundSpec); + + n->strategy = PARTITION_STRATEGY_LIST; + n->listdatums = $5; + n->location = @3; + + $$ = n; + } + + /* a RANGE partition */ + | FOR VALUES FROM '(' range_datum_list ')' TO '(' range_datum_list ')' + { + PartitionBoundSpec *n = makeNode(PartitionBoundSpec); + + n->strategy = PARTITION_STRATEGY_RANGE; + n->lowerdatums = $5; + n->upperdatums = $9; + n->location = @3; + + $$ = n; } ; +partbound_datum: + Sconst { $$ = makeStringConst($1, @1); } + | NumericOnly { $$ = makeAConst($1, @1); } + | NULL_P { $$ = makeNullAConst(@1); } + ; + +partbound_datum_list: + partbound_datum { $$ = list_make1($1); } + | partbound_datum_list ',' partbound_datum + { $$ = lappend($1, $3); } + ; + +range_datum_list: + PartitionRangeDatum { $$ = list_make1($1); } + | range_datum_list ',' PartitionRangeDatum + { $$ = lappend($1, $3); } + ; + +PartitionRangeDatum: + MINVALUE + { + PartitionRangeDatum *n = makeNode(PartitionRangeDatum); + + n->kind = PARTITION_RANGE_DATUM_MINVALUE; + n->value = NULL; + n->location = @1; + + $$ = (Node *) n; + } + | MAXVALUE + { + PartitionRangeDatum *n = makeNode(PartitionRangeDatum); + + n->kind = PARTITION_RANGE_DATUM_MAXVALUE; + n->value = NULL; + n->location = @1; + + $$ = (Node *) n; + } + | partbound_datum + { + PartitionRangeDatum *n = makeNode(PartitionRangeDatum); + + n->kind = PARTITION_RANGE_DATUM_VALUE; + n->value = $1; + n->location = @1; + + $$ = (Node *) n; + } + ; /***************************************************************************** * @@ -2730,59 +2966,59 @@ copy_opt_list: copy_opt_item: BINARY { - $$ = makeDefElem("format", (Node *)makeString("binary")); + $$ = makeDefElem("format", (Node *)makeString("binary"), @1); } | OIDS { - $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("oids", (Node *)makeInteger(TRUE), @1); } | FREEZE { - $$ = makeDefElem("freeze", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("freeze", (Node *)makeInteger(TRUE), @1); } | DELIMITER opt_as Sconst { - $$ = makeDefElem("delimiter", (Node *)makeString($3)); + $$ = makeDefElem("delimiter", (Node *)makeString($3), @1); } | NULL_P opt_as Sconst { - $$ = makeDefElem("null", (Node *)makeString($3)); + $$ = makeDefElem("null", (Node *)makeString($3), @1); } | CSV { - $$ = makeDefElem("format", (Node *)makeString("csv")); + $$ = makeDefElem("format", (Node *)makeString("csv"), @1); } | HEADER_P { - $$ = makeDefElem("header", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("header", (Node *)makeInteger(TRUE), @1); } | QUOTE opt_as Sconst { - $$ = makeDefElem("quote", (Node *)makeString($3)); + $$ = makeDefElem("quote", (Node *)makeString($3), @1); } | ESCAPE opt_as Sconst { - $$ = makeDefElem("escape", (Node *)makeString($3)); + $$ = makeDefElem("escape", (Node *)makeString($3), @1); } | FORCE QUOTE columnList { - $$ = makeDefElem("force_quote", (Node *)$3); + $$ = makeDefElem("force_quote", (Node *)$3, @1); } | FORCE QUOTE '*' { - $$ = makeDefElem("force_quote", (Node *)makeNode(A_Star)); + $$ = makeDefElem("force_quote", (Node *)makeNode(A_Star), @1); } | FORCE NOT NULL_P columnList { - $$ = makeDefElem("force_not_null", (Node *)$4); + $$ = makeDefElem("force_not_null", (Node *)$4, @1); } | FORCE NULL_P columnList { - $$ = makeDefElem("force_null", (Node *)$3); + $$ = makeDefElem("force_null", (Node *)$3, @1); } | ENCODING Sconst { - $$ = makeDefElem("encoding", (Node *)makeString($2)); + $$ = makeDefElem("encoding", (Node *)makeString($2), @1); } ; @@ -2791,7 +3027,7 @@ copy_opt_item: opt_binary: BINARY { - $$ = makeDefElem("format", (Node *)makeString("binary")); + $$ = makeDefElem("format", (Node *)makeString("binary"), @1); } | /*EMPTY*/ { $$ = NULL; } ; @@ -2799,7 +3035,7 @@ opt_binary: opt_oids: WITH OIDS { - $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("oids", (Node *)makeInteger(TRUE), @1); } | /*EMPTY*/ { $$ = NULL; } ; @@ -2807,7 +3043,7 @@ opt_oids: copy_delimiter: opt_using DELIMITERS Sconst { - $$ = makeDefElem("delimiter", (Node *)makeString($3)); + $$ = makeDefElem("delimiter", (Node *)makeString($3), @2); } | /*EMPTY*/ { $$ = NULL; } ; @@ -2832,7 +3068,7 @@ copy_generic_opt_list: copy_generic_opt_elem: ColLabel copy_generic_opt_arg { - $$ = makeDefElem($1, $2); + $$ = makeDefElem($1, $2, @1); } ; @@ -2869,69 +3105,113 @@ copy_generic_opt_arg_list_item: *****************************************************************************/ CreateStmt: CREATE OptTemp TABLE qualified_name '(' OptTableElementList ')' - OptInherit OptWith OnCommitOption OptTableSpace + OptInherit OptPartitionSpec OptWith OnCommitOption OptTableSpace { CreateStmt *n = makeNode(CreateStmt); $4->relpersistence = $2; n->relation = $4; n->tableElts = $6; n->inhRelations = $8; + n->partspec = $9; n->ofTypename = NULL; n->constraints = NIL; - n->options = $9; - n->oncommit = $10; - n->tablespacename = $11; + n->options = $10; + n->oncommit = $11; + n->tablespacename = $12; n->if_not_exists = false; $$ = (Node *)n; } | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name '(' - OptTableElementList ')' OptInherit OptWith OnCommitOption - OptTableSpace + OptTableElementList ')' OptInherit OptPartitionSpec OptWith + OnCommitOption OptTableSpace { CreateStmt *n = makeNode(CreateStmt); $7->relpersistence = $2; n->relation = $7; n->tableElts = $9; n->inhRelations = $11; + n->partspec = $12; n->ofTypename = NULL; n->constraints = NIL; - n->options = $12; - n->oncommit = $13; - n->tablespacename = $14; + n->options = $13; + n->oncommit = $14; + n->tablespacename = $15; n->if_not_exists = true; $$ = (Node *)n; } | CREATE OptTemp TABLE qualified_name OF any_name - OptTypedTableElementList OptWith OnCommitOption OptTableSpace + OptTypedTableElementList OptPartitionSpec OptWith OnCommitOption + OptTableSpace { CreateStmt *n = makeNode(CreateStmt); $4->relpersistence = $2; n->relation = $4; n->tableElts = $7; n->inhRelations = NIL; + n->partspec = $8; n->ofTypename = makeTypeNameFromNameList($6); n->ofTypename->location = @6; n->constraints = NIL; - n->options = $8; - n->oncommit = $9; - n->tablespacename = $10; + n->options = $9; + n->oncommit = $10; + n->tablespacename = $11; n->if_not_exists = false; $$ = (Node *)n; } | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name OF any_name - OptTypedTableElementList OptWith OnCommitOption OptTableSpace + OptTypedTableElementList OptPartitionSpec OptWith OnCommitOption + OptTableSpace { CreateStmt *n = makeNode(CreateStmt); $7->relpersistence = $2; n->relation = $7; n->tableElts = $10; n->inhRelations = NIL; + n->partspec = $11; n->ofTypename = makeTypeNameFromNameList($9); n->ofTypename->location = @9; n->constraints = NIL; + n->options = $12; + n->oncommit = $13; + n->tablespacename = $14; + n->if_not_exists = true; + $$ = (Node *)n; + } + | CREATE OptTemp TABLE qualified_name PARTITION OF qualified_name + OptTypedTableElementList ForValues OptPartitionSpec OptWith + OnCommitOption OptTableSpace + { + CreateStmt *n = makeNode(CreateStmt); + $4->relpersistence = $2; + n->relation = $4; + n->tableElts = $8; + n->inhRelations = list_make1($7); + n->partbound = $9; + n->partspec = $10; + n->ofTypename = NULL; + n->constraints = NIL; n->options = $11; n->oncommit = $12; n->tablespacename = $13; + n->if_not_exists = false; + $$ = (Node *)n; + } + | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name PARTITION OF + qualified_name OptTypedTableElementList ForValues OptPartitionSpec + OptWith OnCommitOption OptTableSpace + { + CreateStmt *n = makeNode(CreateStmt); + $7->relpersistence = $2; + n->relation = $7; + n->tableElts = $11; + n->inhRelations = list_make1($10); + n->partbound = $12; + n->partspec = $13; + n->ofTypename = NULL; + n->constraints = NIL; + n->options = $14; + n->oncommit = $15; + n->tablespacename = $16; n->if_not_exists = true; $$ = (Node *)n; } @@ -3022,6 +3302,7 @@ columnDef: ColId Typename create_generic_options ColQualList n->is_local = true; n->is_not_null = false; n->is_from_type = false; + n->is_from_parent = false; n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; @@ -3034,7 +3315,7 @@ columnDef: ColId Typename create_generic_options ColQualList } ; -columnOptions: ColId WITH OPTIONS ColQualList +columnOptions: ColId ColQualList { ColumnDef *n = makeNode(ColumnDef); n->colname = $1; @@ -3043,32 +3324,51 @@ columnOptions: ColId WITH OPTIONS ColQualList n->is_local = true; n->is_not_null = false; n->is_from_type = false; + n->is_from_parent = false; n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; n->collOid = InvalidOid; - SplitColQualList($4, &n->constraints, &n->collClause, + SplitColQualList($2, &n->constraints, &n->collClause, yyscanner); n->location = @1; $$ = (Node *)n; } - ; - -ColQualList: - ColQualList ColConstraint { $$ = lappend($1, $2); } - | /*EMPTY*/ { $$ = NIL; } - ; - -ColConstraint: - CONSTRAINT name ColConstraintElem + | ColId WITH OPTIONS ColQualList { - Constraint *n = (Constraint *) $3; - Assert(IsA(n, Constraint)); - n->conname = $2; - n->location = @1; - $$ = (Node *) n; - } - | ColConstraintElem { $$ = $1; } + ColumnDef *n = makeNode(ColumnDef); + n->colname = $1; + n->typeName = NULL; + n->inhcount = 0; + n->is_local = true; + n->is_not_null = false; + n->is_from_type = false; + n->is_from_parent = false; + n->storage = 0; + n->raw_default = NULL; + n->cooked_default = NULL; + n->collOid = InvalidOid; + SplitColQualList($4, &n->constraints, &n->collClause, + yyscanner); + n->location = @1; + $$ = (Node *)n; + } + ; + +ColQualList: + ColQualList ColConstraint { $$ = lappend($1, $2); } + | /*EMPTY*/ { $$ = NIL; } + ; + +ColConstraint: + CONSTRAINT name ColConstraintElem + { + Constraint *n = castNode(Constraint, $3); + n->conname = $2; + n->location = @1; + $$ = (Node *) n; + } + | ColConstraintElem { $$ = $1; } | ConstraintAttr { $$ = $1; } | COLLATE any_name { @@ -3160,6 +3460,15 @@ ColConstraintElem: n->initially_valid = true; $$ = (Node *)n; } + | GENERATED generated_when AS IDENTITY_P OptParenthesizedSeqOptList + { + Constraint *n = makeNode(Constraint); + n->contype = CONSTR_IDENTITY; + n->generated_when = $2; + n->options = $5; + n->location = @1; + $$ = (Node *)n; + } | REFERENCES qualified_name opt_column_list key_match key_actions { Constraint *n = makeNode(Constraint); @@ -3177,6 +3486,11 @@ ColConstraintElem: } ; +generated_when: + ALWAYS { $$ = ATTRIBUTE_IDENTITY_ALWAYS; } + | BY DEFAULT { $$ = ATTRIBUTE_IDENTITY_BY_DEFAULT; } + ; + /* * ConstraintAttr represents constraint attributes, which we parse as if * they were independent constraint clauses, in order to avoid shift/reduce @@ -3243,6 +3557,7 @@ TableLikeOptionList: TableLikeOption: DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } + | IDENTITY_P { $$ = CREATE_TABLE_LIKE_IDENTITY; } | INDEXES { $$ = CREATE_TABLE_LIKE_INDEXES; } | STORAGE { $$ = CREATE_TABLE_LIKE_STORAGE; } | COMMENTS { $$ = CREATE_TABLE_LIKE_COMMENTS; } @@ -3257,8 +3572,7 @@ TableLikeOption: TableConstraint: CONSTRAINT name ConstraintElem { - Constraint *n = (Constraint *) $3; - Assert(IsA(n, Constraint)); + Constraint *n = castNode(Constraint, $3); n->conname = $2; n->location = @1; $$ = (Node *) n; @@ -3478,11 +3792,70 @@ OptInherit: INHERITS '(' qualified_name_list ')' { $$ = $3; } | /*EMPTY*/ { $$ = NIL; } ; +/* Optional partition key specification */ +OptPartitionSpec: PartitionSpec { $$ = $1; } + | /*EMPTY*/ { $$ = NULL; } + ; + +PartitionSpec: PARTITION BY part_strategy '(' part_params ')' + { + PartitionSpec *n = makeNode(PartitionSpec); + + n->strategy = $3; + n->partParams = $5; + n->location = @1; + + $$ = n; + } + ; + +part_strategy: IDENT { $$ = $1; } + | unreserved_keyword { $$ = pstrdup($1); } + ; + +part_params: part_elem { $$ = list_make1($1); } + | part_params ',' part_elem { $$ = lappend($1, $3); } + ; + +part_elem: ColId opt_collate opt_class + { + PartitionElem *n = makeNode(PartitionElem); + + n->name = $1; + n->expr = NULL; + n->collation = $2; + n->opclass = $3; + n->location = @1; + $$ = n; + } + | func_expr_windowless opt_collate opt_class + { + PartitionElem *n = makeNode(PartitionElem); + + n->name = NULL; + n->expr = $1; + n->collation = $2; + n->opclass = $3; + n->location = @1; + $$ = n; + } + | '(' a_expr ')' opt_collate opt_class + { + PartitionElem *n = makeNode(PartitionElem); + + n->name = NULL; + n->expr = $2; + n->collation = $4; + n->opclass = $5; + n->location = @1; + $$ = n; + } + ; /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ OptWith: WITH reloptions { $$ = $2; } - | WITH OIDS { $$ = list_make1(defWithOids(true)); } - | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } + | WITH OIDS { $$ = list_make1(makeDefElem("oids", (Node *) makeInteger(true), @1)); } + | WITHOUT OIDS { $$ = list_make1(makeDefElem("oids", (Node *) makeInteger(false), @1)); } | /*EMPTY*/ { $$ = NIL; } ; @@ -3503,6 +3876,44 @@ OptConsTableSpace: USING INDEX TABLESPACE name { $$ = $4; } ExistingIndex: USING INDEX index_name { $$ = $3; } ; +/***************************************************************************** + * + * QUERY : + * CREATE STATISTICS [IF NOT EXISTS] stats_name [(stat types)] + * ON expression-list FROM from_list + * + * Note: the expectation here is that the clauses after ON are a subset of + * SELECT syntax, allowing for expressions and joined tables, and probably + * someday a WHERE clause. Much less than that is currently implemented, + * but the grammar accepts it and then we'll throw FEATURE_NOT_SUPPORTED + * errors as necessary at execution. + * + *****************************************************************************/ + +CreateStatsStmt: + CREATE STATISTICS any_name + opt_name_list ON expr_list FROM from_list + { + CreateStatsStmt *n = makeNode(CreateStatsStmt); + n->defnames = $3; + n->stat_types = $4; + n->exprs = $6; + n->relations = $8; + n->if_not_exists = false; + $$ = (Node *)n; + } + | CREATE STATISTICS IF_P NOT EXISTS any_name + opt_name_list ON expr_list FROM from_list + { + CreateStatsStmt *n = makeNode(CreateStatsStmt); + n->defnames = $6; + n->stat_types = $7; + n->exprs = $9; + n->relations = $11; + n->if_not_exists = true; + $$ = (Node *)n; + } + ; /***************************************************************************** * @@ -3693,57 +4104,70 @@ OptSeqOptList: SeqOptList { $$ = $1; } | /*EMPTY*/ { $$ = NIL; } ; +OptParenthesizedSeqOptList: '(' SeqOptList ')' { $$ = $2; } + | /*EMPTY*/ { $$ = NIL; } + ; + SeqOptList: SeqOptElem { $$ = list_make1($1); } | SeqOptList SeqOptElem { $$ = lappend($1, $2); } ; -SeqOptElem: CACHE NumericOnly +SeqOptElem: AS SimpleTypename { - $$ = makeDefElem("cache", (Node *)$2); + $$ = makeDefElem("as", (Node *)$2, @1); + } + | CACHE NumericOnly + { + $$ = makeDefElem("cache", (Node *)$2, @1); } | CYCLE { - $$ = makeDefElem("cycle", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("cycle", (Node *)makeInteger(TRUE), @1); } | NO CYCLE { - $$ = makeDefElem("cycle", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("cycle", (Node *)makeInteger(FALSE), @1); } | INCREMENT opt_by NumericOnly { - $$ = makeDefElem("increment", (Node *)$3); + $$ = makeDefElem("increment", (Node *)$3, @1); } | MAXVALUE NumericOnly { - $$ = makeDefElem("maxvalue", (Node *)$2); + $$ = makeDefElem("maxvalue", (Node *)$2, @1); } | MINVALUE NumericOnly { - $$ = makeDefElem("minvalue", (Node *)$2); + $$ = makeDefElem("minvalue", (Node *)$2, @1); } | NO MAXVALUE { - $$ = makeDefElem("maxvalue", NULL); + $$ = makeDefElem("maxvalue", NULL, @1); } | NO MINVALUE { - $$ = makeDefElem("minvalue", NULL); + $$ = makeDefElem("minvalue", NULL, @1); } | OWNED BY any_name { - $$ = makeDefElem("owned_by", (Node *)$3); + $$ = makeDefElem("owned_by", (Node *)$3, @1); + } + | SEQUENCE NAME_P any_name + { + /* not documented, only used by pg_dump */ + $$ = makeDefElem("sequence_name", (Node *)$3, @1); } | START opt_with NumericOnly { - $$ = makeDefElem("start", (Node *)$3); + $$ = makeDefElem("start", (Node *)$3, @1); } | RESTART { - $$ = makeDefElem("restart", NULL); + $$ = makeDefElem("restart", NULL, @1); } | RESTART opt_with NumericOnly { - $$ = makeDefElem("restart", (Node *)$3); + $$ = makeDefElem("restart", (Node *)$3, @1); } ; @@ -3753,6 +4177,7 @@ opt_by: BY {} NumericOnly: FCONST { $$ = makeFloat($1); } + | '+' FCONST { $$ = makeFloat($2); } | '-' FCONST { $$ = makeFloat($2); @@ -3834,8 +4259,7 @@ DropPLangStmt: { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_LANGUAGE; - n->objects = list_make1(list_make1(makeString($4))); - n->arguments = NIL; + n->objects = list_make1(makeString($4)); n->behavior = $5; n->missing_ok = false; n->concurrent = false; @@ -3845,7 +4269,7 @@ DropPLangStmt: { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_LANGUAGE; - n->objects = list_make1(list_make1(makeString($6))); + n->objects = list_make1(makeString($6)); n->behavior = $7; n->missing_ok = true; n->concurrent = false; @@ -3942,19 +4366,19 @@ create_extension_opt_list: create_extension_opt_item: SCHEMA name { - $$ = makeDefElem("schema", (Node *)makeString($2)); + $$ = makeDefElem("schema", (Node *)makeString($2), @1); } | VERSION_P NonReservedWord_or_Sconst { - $$ = makeDefElem("new_version", (Node *)makeString($2)); + $$ = makeDefElem("new_version", (Node *)makeString($2), @1); } | FROM NonReservedWord_or_Sconst { - $$ = makeDefElem("old_version", (Node *)makeString($2)); + $$ = makeDefElem("old_version", (Node *)makeString($2), @1); } | CASCADE { - $$ = makeDefElem("cascade", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("cascade", (Node *)makeInteger(TRUE), @1); } ; @@ -3983,7 +4407,7 @@ alter_extension_opt_list: alter_extension_opt_item: TO NonReservedWord_or_Sconst { - $$ = makeDefElem("new_version", (Node *)makeString($2)); + $$ = makeDefElem("new_version", (Node *)makeString($2), @1); } ; @@ -3994,14 +4418,22 @@ alter_extension_opt_item: *****************************************************************************/ AlterExtensionContentsStmt: - ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args + ALTER EXTENSION name add_drop ACCESS METHOD name + { + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); + n->extname = $3; + n->action = $4; + n->objtype = OBJECT_ACCESS_METHOD; + n->object = (Node *) makeString($7); + $$ = (Node *)n; + } + | ALTER EXTENSION name add_drop AGGREGATE aggregate_with_argtypes { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; n->action = $4; n->objtype = OBJECT_AGGREGATE; - n->objname = $6; - n->objargs = extractAggrArgTypes($7); + n->object = (Node *) $6; $$ = (Node *)n; } | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' @@ -4010,8 +4442,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_CAST; - n->objname = list_make1($7); - n->objargs = list_make1($9); + n->object = (Node *) list_make2($7, $9); $$ = (Node *) n; } | ALTER EXTENSION name add_drop COLLATION any_name @@ -4020,7 +4451,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_COLLATION; - n->objname = $6; + n->object = (Node *) $6; $$ = (Node *)n; } | ALTER EXTENSION name add_drop CONVERSION_P any_name @@ -4029,7 +4460,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_CONVERSION; - n->objname = $6; + n->object = (Node *) $6; $$ = (Node *)n; } | ALTER EXTENSION name add_drop DOMAIN_P Typename @@ -4038,7 +4469,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_DOMAIN; - n->objname = list_make1($6); + n->object = (Node *) $6; $$ = (Node *)n; } | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes @@ -4047,8 +4478,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_FUNCTION; - n->objname = $6->funcname; - n->objargs = $6->funcargs; + n->object = (Node *) $6; $$ = (Node *)n; } | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name @@ -4057,17 +4487,16 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_LANGUAGE; - n->objname = list_make1(makeString($7)); + n->object = (Node *) makeString($7); $$ = (Node *)n; } - | ALTER EXTENSION name add_drop OPERATOR any_operator oper_argtypes + | ALTER EXTENSION name add_drop OPERATOR operator_with_argtypes { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; n->action = $4; n->objtype = OBJECT_OPERATOR; - n->objname = $6; - n->objargs = $7; + n->object = (Node *) $6; $$ = (Node *)n; } | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method @@ -4076,7 +4505,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_OPCLASS; - n->objname = lcons(makeString($9), $7); + n->object = (Node *) lcons(makeString($9), $7); $$ = (Node *)n; } | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method @@ -4085,7 +4514,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_OPFAMILY; - n->objname = lcons(makeString($9), $7); + n->object = (Node *) lcons(makeString($9), $7); $$ = (Node *)n; } | ALTER EXTENSION name add_drop SCHEMA name @@ -4094,7 +4523,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_SCHEMA; - n->objname = list_make1(makeString($6)); + n->object = (Node *) makeString($6); $$ = (Node *)n; } | ALTER EXTENSION name add_drop EVENT TRIGGER name @@ -4103,7 +4532,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_EVENT_TRIGGER; - n->objname = list_make1(makeString($7)); + n->object = (Node *) makeString($7); $$ = (Node *)n; } | ALTER EXTENSION name add_drop TABLE any_name @@ -4112,7 +4541,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_TABLE; - n->objname = $6; + n->object = (Node *) $6; $$ = (Node *)n; } | ALTER EXTENSION name add_drop TEXT_P SEARCH PARSER any_name @@ -4121,7 +4550,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_TSPARSER; - n->objname = $8; + n->object = (Node *) $8; $$ = (Node *)n; } | ALTER EXTENSION name add_drop TEXT_P SEARCH DICTIONARY any_name @@ -4130,7 +4559,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_TSDICTIONARY; - n->objname = $8; + n->object = (Node *) $8; $$ = (Node *)n; } | ALTER EXTENSION name add_drop TEXT_P SEARCH TEMPLATE any_name @@ -4139,7 +4568,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_TSTEMPLATE; - n->objname = $8; + n->object = (Node *) $8; $$ = (Node *)n; } | ALTER EXTENSION name add_drop TEXT_P SEARCH CONFIGURATION any_name @@ -4148,7 +4577,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_TSCONFIGURATION; - n->objname = $8; + n->object = (Node *) $8; $$ = (Node *)n; } | ALTER EXTENSION name add_drop SEQUENCE any_name @@ -4157,7 +4586,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_SEQUENCE; - n->objname = $6; + n->object = (Node *) $6; $$ = (Node *)n; } | ALTER EXTENSION name add_drop VIEW any_name @@ -4166,7 +4595,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_VIEW; - n->objname = $6; + n->object = (Node *) $6; $$ = (Node *)n; } | ALTER EXTENSION name add_drop MATERIALIZED VIEW any_name @@ -4175,7 +4604,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_MATVIEW; - n->objname = $7; + n->object = (Node *) $7; $$ = (Node *)n; } | ALTER EXTENSION name add_drop FOREIGN TABLE any_name @@ -4184,7 +4613,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_FOREIGN_TABLE; - n->objname = $7; + n->object = (Node *) $7; $$ = (Node *)n; } | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name @@ -4193,7 +4622,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_FDW; - n->objname = list_make1(makeString($8)); + n->object = (Node *) makeString($8); $$ = (Node *)n; } | ALTER EXTENSION name add_drop SERVER name @@ -4202,7 +4631,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_FOREIGN_SERVER; - n->objname = list_make1(makeString($6)); + n->object = (Node *) makeString($6); $$ = (Node *)n; } | ALTER EXTENSION name add_drop TRANSFORM FOR Typename LANGUAGE name @@ -4211,8 +4640,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_TRANSFORM; - n->objname = list_make1($7); - n->objargs = list_make1(makeString($9)); + n->object = (Node *) list_make2($7, makeString($9)); $$ = (Node *)n; } | ALTER EXTENSION name add_drop TYPE_P Typename @@ -4221,7 +4649,7 @@ AlterExtensionContentsStmt: n->extname = $3; n->action = $4; n->objtype = OBJECT_TYPE; - n->objname = list_make1($6); + n->object = (Node *) $6; $$ = (Node *)n; } ; @@ -4244,10 +4672,10 @@ CreateFdwStmt: CREATE FOREIGN DATA_P WRAPPER name opt_fdw_options create_generic ; fdw_option: - HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } - | NO HANDLER { $$ = makeDefElem("handler", NULL); } - | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } - | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } + HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2, @1); } + | NO HANDLER { $$ = makeDefElem("handler", NULL, @1); } + | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2, @1); } + | NO VALIDATOR { $$ = makeDefElem("validator", NULL, @1); } ; fdw_options: @@ -4260,37 +4688,6 @@ opt_fdw_options: | /*EMPTY*/ { $$ = NIL; } ; -/***************************************************************************** - * - * QUERY : - * DROP FOREIGN DATA WRAPPER name - * - ****************************************************************************/ - -DropFdwStmt: DROP FOREIGN DATA_P WRAPPER name opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_FDW; - n->objects = list_make1(list_make1(makeString($5))); - n->arguments = NIL; - n->missing_ok = false; - n->behavior = $6; - n->concurrent = false; - $$ = (Node *) n; - } - | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_FDW; - n->objects = list_make1(list_make1(makeString($7))); - n->arguments = NIL; - n->missing_ok = true; - n->behavior = $8; - n->concurrent = false; - $$ = (Node *) n; - } - ; - /***************************************************************************** * * QUERY : @@ -4366,14 +4763,14 @@ alter_generic_option_elem: } | DROP generic_option_name { - $$ = makeDefElemExtended(NULL, $2, NULL, DEFELEM_DROP); + $$ = makeDefElemExtended(NULL, $2, NULL, DEFELEM_DROP, @2); } ; generic_option_elem: generic_option_name generic_option_arg { - $$ = makeDefElem($1, $2); + $$ = makeDefElem($1, $2, @1); } ; @@ -4402,6 +4799,19 @@ CreateForeignServerStmt: CREATE SERVER name opt_type opt_foreign_server_version n->version = $5; n->fdwname = $9; n->options = $10; + n->if_not_exists = false; + $$ = (Node *) n; + } + | CREATE SERVER IF_P NOT EXISTS name opt_type opt_foreign_server_version + FOREIGN DATA_P WRAPPER name create_generic_options + { + CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); + n->servername = $6; + n->servertype = $7; + n->version = $8; + n->fdwname = $12; + n->options = $13; + n->if_not_exists = true; $$ = (Node *) n; } ; @@ -4422,37 +4832,6 @@ opt_foreign_server_version: | /*EMPTY*/ { $$ = NULL; } ; -/***************************************************************************** - * - * QUERY : - * DROP SERVER name - * - ****************************************************************************/ - -DropForeignServerStmt: DROP SERVER name opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_FOREIGN_SERVER; - n->objects = list_make1(list_make1(makeString($3))); - n->arguments = NIL; - n->missing_ok = false; - n->behavior = $4; - n->concurrent = false; - $$ = (Node *) n; - } - | DROP SERVER IF_P EXISTS name opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_FOREIGN_SERVER; - n->objects = list_make1(list_make1(makeString($5))); - n->arguments = NIL; - n->missing_ok = true; - n->behavior = $6; - n->concurrent = false; - $$ = (Node *) n; - } - ; - /***************************************************************************** * * QUERY : @@ -4534,6 +4913,48 @@ CreateForeignTableStmt: n->options = $14; $$ = (Node *) n; } + | CREATE FOREIGN TABLE qualified_name + PARTITION OF qualified_name OptTypedTableElementList ForValues + SERVER name create_generic_options + { + CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); + $4->relpersistence = RELPERSISTENCE_PERMANENT; + n->base.relation = $4; + n->base.inhRelations = list_make1($7); + n->base.tableElts = $8; + n->base.partbound = $9; + n->base.ofTypename = NULL; + n->base.constraints = NIL; + n->base.options = NIL; + n->base.oncommit = ONCOMMIT_NOOP; + n->base.tablespacename = NULL; + n->base.if_not_exists = false; + /* FDW-specific data */ + n->servername = $11; + n->options = $12; + $$ = (Node *) n; + } + | CREATE FOREIGN TABLE IF_P NOT EXISTS qualified_name + PARTITION OF qualified_name OptTypedTableElementList ForValues + SERVER name create_generic_options + { + CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); + $7->relpersistence = RELPERSISTENCE_PERMANENT; + n->base.relation = $7; + n->base.inhRelations = list_make1($10); + n->base.tableElts = $11; + n->base.partbound = $12; + n->base.ofTypename = NULL; + n->base.constraints = NIL; + n->base.options = NIL; + n->base.oncommit = ONCOMMIT_NOOP; + n->base.tablespacename = NULL; + n->base.if_not_exists = true; + /* FDW-specific data */ + n->servername = $14; + n->options = $15; + $$ = (Node *) n; + } ; /***************************************************************************** @@ -4623,6 +5044,16 @@ CreateUserMappingStmt: CREATE USER MAPPING FOR auth_ident SERVER name create_gen n->user = $5; n->servername = $7; n->options = $8; + n->if_not_exists = false; + $$ = (Node *) n; + } + | CREATE USER MAPPING IF_P NOT EXISTS FOR auth_ident SERVER name create_generic_options + { + CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); + n->user = $8; + n->servername = $10; + n->options = $11; + n->if_not_exists = true; $$ = (Node *) n; } ; @@ -4637,6 +5068,8 @@ auth_ident: RoleSpec { $$ = $1; } * QUERY : * DROP USER MAPPING FOR auth_ident SERVER name * + * XXX you'd think this should have a CASCADE/RESTRICT option, even if it's + * only pro forma; but the SQL standard doesn't show one. ****************************************************************************/ DropUserMappingStmt: DROP USER MAPPING FOR auth_ident SERVER name @@ -4677,26 +5110,29 @@ AlterUserMappingStmt: ALTER USER MAPPING FOR auth_ident SERVER name alter_generi /***************************************************************************** * * QUERIES: - * CREATE POLICY name ON table [FOR cmd] [TO role, ...] - * [USING (qual)] [WITH CHECK (with_check)] + * CREATE POLICY name ON table + * [AS { PERMISSIVE | RESTRICTIVE } ] + * [FOR { SELECT | INSERT | UPDATE | DELETE } ] + * [TO role, ...] + * [USING (qual)] [WITH CHECK (with check qual)] * ALTER POLICY name ON table [TO role, ...] - * [USING (qual)] [WITH CHECK (with_check)] - * DROP POLICY name ON table + * [USING (qual)] [WITH CHECK (with check qual)] * *****************************************************************************/ CreatePolicyStmt: - CREATE POLICY name ON qualified_name RowSecurityDefaultForCmd - RowSecurityDefaultToRole RowSecurityOptionalExpr - RowSecurityOptionalWithCheck + CREATE POLICY name ON qualified_name RowSecurityDefaultPermissive + RowSecurityDefaultForCmd RowSecurityDefaultToRole + RowSecurityOptionalExpr RowSecurityOptionalWithCheck { CreatePolicyStmt *n = makeNode(CreatePolicyStmt); n->policy_name = $3; n->table = $5; - n->cmd_name = $6; - n->roles = $7; - n->qual = $8; - n->with_check = $9; + n->permissive = $6; + n->cmd_name = $7; + n->roles = $8; + n->qual = $9; + n->with_check = $10; $$ = (Node *) n; } ; @@ -4715,31 +5151,6 @@ AlterPolicyStmt: } ; -DropPolicyStmt: - DROP POLICY name ON any_name opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_POLICY; - n->objects = list_make1(lappend($5, makeString($3))); - n->arguments = NIL; - n->behavior = $6; - n->missing_ok = false; - n->concurrent = false; - $$ = (Node *) n; - } - | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_POLICY; - n->objects = list_make1(lappend($7, makeString($5))); - n->arguments = NIL; - n->behavior = $8; - n->missing_ok = true; - n->concurrent = false; - $$ = (Node *) n; - } - ; - RowSecurityOptionalExpr: USING '(' a_expr ')' { $$ = $3; } | /* EMPTY */ { $$ = NULL; } @@ -4760,6 +5171,24 @@ RowSecurityOptionalToRole: | /* EMPTY */ { $$ = NULL; } ; +RowSecurityDefaultPermissive: + AS IDENT + { + if (strcmp($2, "permissive") == 0) + $$ = true; + else if (strcmp($2, "restrictive") == 0) + $$ = false; + else + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("unrecognized row security option \"%s\"", $2), + errhint("Only PERMISSIVE or RESTRICTIVE policies are supported currently."), + parser_errposition(@2))); + + } + | /* EMPTY */ { $$ = true; } + ; + RowSecurityDefaultForCmd: FOR row_security_cmd { $$ = $2; } | /* EMPTY */ { $$ = "all"; } @@ -4794,25 +5223,25 @@ CreateAmStmt: CREATE ACCESS METHOD name TYPE_P INDEX HANDLER handler_name * * QUERIES : * CREATE TRIGGER ... - * DROP TRIGGER ... * *****************************************************************************/ CreateTrigStmt: CREATE TRIGGER name TriggerActionTime TriggerEvents ON - qualified_name TriggerForSpec TriggerWhen + qualified_name TriggerReferencing TriggerForSpec TriggerWhen EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->trigname = $3; n->relation = $7; - n->funcname = $12; - n->args = $14; - n->row = $8; + n->funcname = $13; + n->args = $15; + n->row = $9; n->timing = $4; n->events = intVal(linitial($5)); n->columns = (List *) lsecond($5); - n->whenClause = $9; + n->whenClause = $10; + n->transitionRels = $8; n->isconstraint = FALSE; n->deferrable = FALSE; n->initdeferred = FALSE; @@ -4834,6 +5263,7 @@ CreateTrigStmt: n->events = intVal(linitial($6)); n->columns = (List *) lsecond($6); n->whenClause = $14; + n->transitionRels = NIL; n->isconstraint = TRUE; processCASbits($10, @10, "TRIGGER", &n->deferrable, &n->initdeferred, NULL, @@ -4886,6 +5316,49 @@ TriggerOneEvent: { $$ = list_make2(makeInteger(TRIGGER_TYPE_TRUNCATE), NIL); } ; +TriggerReferencing: + REFERENCING TriggerTransitions { $$ = $2; } + | /*EMPTY*/ { $$ = NIL; } + ; + +TriggerTransitions: + TriggerTransition { $$ = list_make1($1); } + | TriggerTransitions TriggerTransition { $$ = lappend($1, $2); } + ; + +TriggerTransition: + TransitionOldOrNew TransitionRowOrTable opt_as TransitionRelName + { + TriggerTransition *n = makeNode(TriggerTransition); + n->name = $4; + n->isNew = $1; + n->isTable = $2; + $$ = (Node *)n; + } + ; + +TransitionOldOrNew: + NEW { $$ = TRUE; } + | OLD { $$ = FALSE; } + ; + +TransitionRowOrTable: + TABLE { $$ = TRUE; } + /* + * According to the standard, lack of a keyword here implies ROW. + * Support for that would require prohibiting ROW entirely here, + * reserving the keyword ROW, and/or requiring AS (instead of + * allowing it to be optional, as the standard specifies) as the + * next token. Requiring ROW seems cleanest and easiest to + * explain. + */ + | ROW { $$ = FALSE; } + ; + +TransitionRelName: + ColId { $$ = $1; } + ; + TriggerForSpec: FOR TriggerForOptEach TriggerForType { @@ -4976,32 +5449,6 @@ ConstraintAttributeElem: ; -DropTrigStmt: - DROP TRIGGER name ON any_name opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_TRIGGER; - n->objects = list_make1(lappend($5, makeString($3))); - n->arguments = NIL; - n->behavior = $6; - n->missing_ok = false; - n->concurrent = false; - $$ = (Node *) n; - } - | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_TRIGGER; - n->objects = list_make1(lappend($7, makeString($5))); - n->arguments = NIL; - n->behavior = $8; - n->missing_ok = true; - n->concurrent = false; - $$ = (Node *) n; - } - ; - - /***************************************************************************** * * QUERIES : @@ -5043,7 +5490,7 @@ event_trigger_when_list: event_trigger_when_item: ColId IN_P '(' event_trigger_value_list ')' - { $$ = makeDefElem($1, (Node *) $4); } + { $$ = makeDefElem($1, (Node *) $4, @1); } ; event_trigger_value_list: @@ -5103,7 +5550,6 @@ DropAssertStmt: { DropStmt *n = makeNode(DropStmt); n->objects = NIL; - n->arguments = NIL; n->behavior = $4; n->removeType = OBJECT_TRIGGER; /* XXX */ ereport(ERROR, @@ -5242,13 +5688,33 @@ DefineStmt: n->definition = $4; $$ = (Node *)n; } + | CREATE COLLATION IF_P NOT EXISTS any_name definition + { + DefineStmt *n = makeNode(DefineStmt); + n->kind = OBJECT_COLLATION; + n->args = NIL; + n->defnames = $6; + n->definition = $7; + n->if_not_exists = true; + $$ = (Node *)n; + } | CREATE COLLATION any_name FROM any_name { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; n->args = NIL; n->defnames = $3; - n->definition = list_make1(makeDefElem("from", (Node *) $5)); + n->definition = list_make1(makeDefElem("from", (Node *) $5, @5)); + $$ = (Node *)n; + } + | CREATE COLLATION IF_P NOT EXISTS any_name FROM any_name + { + DefineStmt *n = makeNode(DefineStmt); + n->kind = OBJECT_COLLATION; + n->args = NIL; + n->defnames = $6; + n->definition = list_make1(makeDefElem("from", (Node *) $8, @8)); + n->if_not_exists = true; $$ = (Node *)n; } ; @@ -5262,11 +5728,11 @@ def_list: def_elem { $$ = list_make1($1); } def_elem: ColLabel '=' def_arg { - $$ = makeDefElem($1, (Node *) $3); + $$ = makeDefElem($1, (Node *) $3, @1); } | ColLabel { - $$ = makeDefElem($1, NULL); + $$ = makeDefElem($1, NULL, @1); } ; @@ -5276,6 +5742,7 @@ def_arg: func_type { $$ = (Node *)$1; } | qual_all_Op { $$ = (Node *)$1; } | NumericOnly { $$ = (Node *)$1; } | Sconst { $$ = (Node *)makeString($1); } + | NONE { $$ = (Node *)makeString(pstrdup($1)); } ; old_aggr_definition: '(' old_aggr_list ')' { $$ = $2; } @@ -5292,7 +5759,7 @@ old_aggr_list: old_aggr_elem { $$ = list_make1($1); } */ old_aggr_elem: IDENT '=' def_arg { - $$ = makeDefElem($1, (Node *)$3); + $$ = makeDefElem($1, (Node *)$3, @1); } ; @@ -5318,30 +5785,44 @@ AlterEnumStmt: { AlterEnumStmt *n = makeNode(AlterEnumStmt); n->typeName = $3; + n->oldVal = NULL; n->newVal = $7; n->newValNeighbor = NULL; n->newValIsAfter = true; - n->skipIfExists = $6; + n->skipIfNewValExists = $6; $$ = (Node *) n; } | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst BEFORE Sconst { AlterEnumStmt *n = makeNode(AlterEnumStmt); n->typeName = $3; + n->oldVal = NULL; n->newVal = $7; n->newValNeighbor = $9; n->newValIsAfter = false; - n->skipIfExists = $6; + n->skipIfNewValExists = $6; $$ = (Node *) n; } | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst AFTER Sconst { AlterEnumStmt *n = makeNode(AlterEnumStmt); n->typeName = $3; + n->oldVal = NULL; n->newVal = $7; n->newValNeighbor = $9; n->newValIsAfter = true; - n->skipIfExists = $6; + n->skipIfNewValExists = $6; + $$ = (Node *) n; + } + | ALTER TYPE_P any_name RENAME VALUE_P Sconst TO Sconst + { + AlterEnumStmt *n = makeNode(AlterEnumStmt); + n->typeName = $3; + n->oldVal = $6; + n->newVal = $8; + n->newValNeighbor = NULL; + n->newValIsAfter = false; + n->skipIfNewValExists = false; $$ = (Node *) n; } ; @@ -5386,39 +5867,38 @@ opclass_item: OPERATOR Iconst any_operator opclass_purpose opt_recheck { CreateOpClassItem *n = makeNode(CreateOpClassItem); + ObjectWithArgs *owa = makeNode(ObjectWithArgs); + owa->objname = $3; + owa->objargs = NIL; n->itemtype = OPCLASS_ITEM_OPERATOR; - n->name = $3; - n->args = NIL; + n->name = owa; n->number = $2; n->order_family = $4; $$ = (Node *) n; } - | OPERATOR Iconst any_operator oper_argtypes opclass_purpose + | OPERATOR Iconst operator_with_argtypes opclass_purpose opt_recheck { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; n->name = $3; - n->args = $4; n->number = $2; - n->order_family = $5; + n->order_family = $4; $$ = (Node *) n; } - | FUNCTION Iconst func_name func_args + | FUNCTION Iconst function_with_argtypes { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; n->name = $3; - n->args = extractArgTypes($4); n->number = $2; $$ = (Node *) n; } - | FUNCTION Iconst '(' type_list ')' func_name func_args + | FUNCTION Iconst '(' type_list ')' function_with_argtypes { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; n->name = $6; - n->args = extractArgTypes($7); n->number = $2; n->class_args = $4; $$ = (Node *) n; @@ -5505,7 +5985,7 @@ opclass_drop: CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; n->number = $2; - n->args = $4; + n->class_args = $4; $$ = (Node *) n; } | FUNCTION Iconst '(' type_list ')' @@ -5513,7 +5993,7 @@ opclass_drop: CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; n->number = $2; - n->args = $4; + n->class_args = $4; $$ = (Node *) n; } ; @@ -5603,28 +6083,66 @@ ReassignOwnedStmt: * *****************************************************************************/ -DropStmt: DROP drop_type IF_P EXISTS any_name_list opt_drop_behavior +DropStmt: DROP drop_type_any_name IF_P EXISTS any_name_list opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = $2; n->missing_ok = TRUE; n->objects = $5; - n->arguments = NIL; n->behavior = $6; n->concurrent = false; $$ = (Node *)n; } - | DROP drop_type any_name_list opt_drop_behavior + | DROP drop_type_any_name any_name_list opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = $2; n->missing_ok = FALSE; n->objects = $3; - n->arguments = NIL; n->behavior = $4; n->concurrent = false; $$ = (Node *)n; } + | DROP drop_type_name IF_P EXISTS name_list opt_drop_behavior + { + DropStmt *n = makeNode(DropStmt); + n->removeType = $2; + n->missing_ok = TRUE; + n->objects = $5; + n->behavior = $6; + n->concurrent = false; + $$ = (Node *)n; + } + | DROP drop_type_name name_list opt_drop_behavior + { + DropStmt *n = makeNode(DropStmt); + n->removeType = $2; + n->missing_ok = FALSE; + n->objects = $3; + n->behavior = $4; + n->concurrent = false; + $$ = (Node *)n; + } + | DROP drop_type_name_on_any_name name ON any_name opt_drop_behavior + { + DropStmt *n = makeNode(DropStmt); + n->removeType = $2; + n->objects = list_make1(lappend($5, makeString($3))); + n->behavior = $6; + n->missing_ok = false; + n->concurrent = false; + $$ = (Node *) n; + } + | DROP drop_type_name_on_any_name IF_P EXISTS name ON any_name opt_drop_behavior + { + DropStmt *n = makeNode(DropStmt); + n->removeType = $2; + n->objects = list_make1(lappend($7, makeString($5))); + n->behavior = $8; + n->missing_ok = true; + n->concurrent = false; + $$ = (Node *) n; + } | DROP TYPE_P type_name_list opt_drop_behavior { DropStmt *n = makeNode(DropStmt); @@ -5671,7 +6189,6 @@ DropStmt: DROP drop_type IF_P EXISTS any_name_list opt_drop_behavior n->removeType = OBJECT_INDEX; n->missing_ok = FALSE; n->objects = $4; - n->arguments = NIL; n->behavior = $5; n->concurrent = true; $$ = (Node *)n; @@ -5682,32 +6199,47 @@ DropStmt: DROP drop_type IF_P EXISTS any_name_list opt_drop_behavior n->removeType = OBJECT_INDEX; n->missing_ok = TRUE; n->objects = $6; - n->arguments = NIL; n->behavior = $7; n->concurrent = true; $$ = (Node *)n; } ; - -drop_type: TABLE { $$ = OBJECT_TABLE; } +/* object types taking any_name_list */ +drop_type_any_name: + TABLE { $$ = OBJECT_TABLE; } | SEQUENCE { $$ = OBJECT_SEQUENCE; } | VIEW { $$ = OBJECT_VIEW; } | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } | INDEX { $$ = OBJECT_INDEX; } | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } - | ACCESS METHOD { $$ = OBJECT_ACCESS_METHOD; } - | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } | COLLATION { $$ = OBJECT_COLLATION; } | CONVERSION_P { $$ = OBJECT_CONVERSION; } - | SCHEMA { $$ = OBJECT_SCHEMA; } - | EXTENSION { $$ = OBJECT_EXTENSION; } + | STATISTICS { $$ = OBJECT_STATISTIC_EXT; } | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } ; +/* object types taking name_list */ +drop_type_name: + ACCESS METHOD { $$ = OBJECT_ACCESS_METHOD; } + | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } + | EXTENSION { $$ = OBJECT_EXTENSION; } + | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } + | PUBLICATION { $$ = OBJECT_PUBLICATION; } + | SCHEMA { $$ = OBJECT_SCHEMA; } + | SERVER { $$ = OBJECT_FOREIGN_SERVER; } + ; + +/* object types attached to a table */ +drop_type_name_on_any_name: + POLICY { $$ = OBJECT_POLICY; } + | RULE { $$ = OBJECT_RULE; } + | TRIGGER { $$ = OBJECT_TRIGGER; } + ; + any_name_list: any_name { $$ = list_make1($1); } | any_name_list ',' any_name { $$ = lappend($1, $3); } @@ -5724,8 +6256,8 @@ attrs: '.' attr_name ; type_name_list: - Typename { $$ = list_make1(list_make1($1)); } - | type_name_list ',' Typename { $$ = lappend($1, list_make1($3)); } + Typename { $$ = list_make1($1); } + | type_name_list ',' Typename { $$ = lappend($1, $3); } /***************************************************************************** * @@ -5782,12 +6314,19 @@ opt_restart_seqs: *****************************************************************************/ CommentStmt: - COMMENT ON comment_type any_name IS comment_text + COMMENT ON comment_type_any_name any_name IS comment_text + { + CommentStmt *n = makeNode(CommentStmt); + n->objtype = $3; + n->object = (Node *) $4; + n->comment = $6; + $$ = (Node *) n; + } + | COMMENT ON comment_type_name name IS comment_text { CommentStmt *n = makeNode(CommentStmt); n->objtype = $3; - n->objname = $4; - n->objargs = NIL; + n->object = (Node *) makeString($4); n->comment = $6; $$ = (Node *) n; } @@ -5795,8 +6334,7 @@ CommentStmt: { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TYPE; - n->objname = list_make1($4); - n->objargs = NIL; + n->object = (Node *) $4; n->comment = $6; $$ = (Node *) n; } @@ -5804,44 +6342,39 @@ CommentStmt: { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_DOMAIN; - n->objname = list_make1($4); - n->objargs = NIL; + n->object = (Node *) $4; n->comment = $6; $$ = (Node *) n; } - | COMMENT ON AGGREGATE func_name aggr_args IS comment_text + | COMMENT ON AGGREGATE aggregate_with_argtypes IS comment_text { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_AGGREGATE; - n->objname = $4; - n->objargs = extractAggrArgTypes($5); - n->comment = $7; + n->object = (Node *) $4; + n->comment = $6; $$ = (Node *) n; } - | COMMENT ON FUNCTION func_name func_args IS comment_text + | COMMENT ON FUNCTION function_with_argtypes IS comment_text { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_FUNCTION; - n->objname = $4; - n->objargs = extractArgTypes($5); - n->comment = $7; + n->object = (Node *) $4; + n->comment = $6; $$ = (Node *) n; } - | COMMENT ON OPERATOR any_operator oper_argtypes IS comment_text + | COMMENT ON OPERATOR operator_with_argtypes IS comment_text { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPERATOR; - n->objname = $4; - n->objargs = $5; - n->comment = $7; + n->object = (Node *) $4; + n->comment = $6; $$ = (Node *) n; } | COMMENT ON CONSTRAINT name ON any_name IS comment_text { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TABCONSTRAINT; - n->objname = lappend($6, makeString($4)); - n->objargs = NIL; + n->object = (Node *) lappend($6, makeString($4)); n->comment = $8; $$ = (Node *) n; } @@ -5854,8 +6387,7 @@ CommentStmt: * there's a shift/reduce conflict if we do that, so fix it * up here. */ - n->objname = list_make1(makeTypeNameFromNameList($7)); - n->objargs = list_make1(makeString($4)); + n->object = (Node *) list_make2(makeTypeNameFromNameList($7), makeString($4)); n->comment = $9; $$ = (Node *) n; } @@ -5863,8 +6395,7 @@ CommentStmt: { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_POLICY; - n->objname = lappend($6, makeString($4)); - n->objargs = NIL; + n->object = (Node *) lappend($6, makeString($4)); n->comment = $8; $$ = (Node *) n; } @@ -5872,27 +6403,15 @@ CommentStmt: { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_RULE; - n->objname = lappend($6, makeString($4)); - n->objargs = NIL; + n->object = (Node *) lappend($6, makeString($4)); n->comment = $8; $$ = (Node *) n; } - | COMMENT ON RULE name IS comment_text - { - /* Obsolete syntax supported for awhile for compatibility */ - CommentStmt *n = makeNode(CommentStmt); - n->objtype = OBJECT_RULE; - n->objname = list_make1(makeString($4)); - n->objargs = NIL; - n->comment = $6; - $$ = (Node *) n; - } | COMMENT ON TRANSFORM FOR Typename LANGUAGE name IS comment_text { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TRANSFORM; - n->objname = list_make1($5); - n->objargs = list_make1(makeString($7)); + n->object = (Node *) list_make2($5, makeString($7)); n->comment = $9; $$ = (Node *) n; } @@ -5900,8 +6419,7 @@ CommentStmt: { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TRIGGER; - n->objname = lappend($6, makeString($4)); - n->objargs = NIL; + n->object = (Node *) lappend($6, makeString($4)); n->comment = $8; $$ = (Node *) n; } @@ -5909,7 +6427,7 @@ CommentStmt: { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPCLASS; - n->objname = lcons(makeString($7), $5); + n->object = (Node *) lcons(makeString($7), $5); n->comment = $9; $$ = (Node *) n; } @@ -5917,8 +6435,7 @@ CommentStmt: { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPFAMILY; - n->objname = lcons(makeString($7), $5); - n->objargs = NIL; + n->object = (Node *) lcons(makeString($7), $5); n->comment = $9; $$ = (Node *) n; } @@ -5926,8 +6443,7 @@ CommentStmt: { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_LARGEOBJECT; - n->objname = list_make1($5); - n->objargs = NIL; + n->object = (Node *) $5; n->comment = $7; $$ = (Node *) n; } @@ -5935,47 +6451,46 @@ CommentStmt: { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_CAST; - n->objname = list_make1($5); - n->objargs = list_make1($7); + n->object = (Node *) list_make2($5, $7); n->comment = $10; $$ = (Node *) n; } - | COMMENT ON opt_procedural LANGUAGE any_name IS comment_text - { - CommentStmt *n = makeNode(CommentStmt); - n->objtype = OBJECT_LANGUAGE; - n->objname = $5; - n->objargs = NIL; - n->comment = $7; - $$ = (Node *) n; - } ; -comment_type: - ACCESS METHOD { $$ = OBJECT_ACCESS_METHOD; } - | COLUMN { $$ = OBJECT_COLUMN; } - | DATABASE { $$ = OBJECT_DATABASE; } - | SCHEMA { $$ = OBJECT_SCHEMA; } +/* object types taking any_name */ +comment_type_any_name: + COLUMN { $$ = OBJECT_COLUMN; } | INDEX { $$ = OBJECT_INDEX; } | SEQUENCE { $$ = OBJECT_SEQUENCE; } + | STATISTICS { $$ = OBJECT_STATISTIC_EXT; } | TABLE { $$ = OBJECT_TABLE; } | VIEW { $$ = OBJECT_VIEW; } | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } | COLLATION { $$ = OBJECT_COLLATION; } | CONVERSION_P { $$ = OBJECT_CONVERSION; } - | TABLESPACE { $$ = OBJECT_TABLESPACE; } - | EXTENSION { $$ = OBJECT_EXTENSION; } - | ROLE { $$ = OBJECT_ROLE; } | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } - | SERVER { $$ = OBJECT_FOREIGN_SERVER; } - | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } - | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } ; +/* object types taking name */ +comment_type_name: + ACCESS METHOD { $$ = OBJECT_ACCESS_METHOD; } + | DATABASE { $$ = OBJECT_DATABASE; } + | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } + | EXTENSION { $$ = OBJECT_EXTENSION; } + | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } + | opt_procedural LANGUAGE { $$ = OBJECT_LANGUAGE; } + | PUBLICATION { $$ = OBJECT_PUBLICATION; } + | ROLE { $$ = OBJECT_ROLE; } + | SCHEMA { $$ = OBJECT_SCHEMA; } + | SERVER { $$ = OBJECT_FOREIGN_SERVER; } + | SUBSCRIPTION { $$ = OBJECT_SUBSCRIPTION; } + | TABLESPACE { $$ = OBJECT_TABLESPACE; } + ; + comment_text: Sconst { $$ = $1; } | NULL_P { $$ = NULL; } @@ -5992,80 +6507,73 @@ comment_text: *****************************************************************************/ SecLabelStmt: - SECURITY LABEL opt_provider ON security_label_type any_name + SECURITY LABEL opt_provider ON security_label_type_any_name any_name IS security_label { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = $3; n->objtype = $5; - n->objname = $6; - n->objargs = NIL; + n->object = (Node *) $6; n->label = $8; $$ = (Node *) n; } - | SECURITY LABEL opt_provider ON TYPE_P Typename + | SECURITY LABEL opt_provider ON security_label_type_name name IS security_label { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = $3; - n->objtype = OBJECT_TYPE; - n->objname = list_make1($6); - n->objargs = NIL; + n->objtype = $5; + n->object = (Node *) makeString($6); n->label = $8; $$ = (Node *) n; } - | SECURITY LABEL opt_provider ON DOMAIN_P Typename + | SECURITY LABEL opt_provider ON TYPE_P Typename IS security_label { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = $3; n->objtype = OBJECT_TYPE; - n->objname = list_make1($6); - n->objargs = NIL; + n->object = (Node *) $6; n->label = $8; $$ = (Node *) n; } - | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args + | SECURITY LABEL opt_provider ON DOMAIN_P Typename IS security_label { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = $3; - n->objtype = OBJECT_AGGREGATE; - n->objname = $6; - n->objargs = extractAggrArgTypes($7); - n->label = $9; + n->objtype = OBJECT_DOMAIN; + n->object = (Node *) $6; + n->label = $8; $$ = (Node *) n; } - | SECURITY LABEL opt_provider ON FUNCTION func_name func_args + | SECURITY LABEL opt_provider ON AGGREGATE aggregate_with_argtypes IS security_label { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = $3; - n->objtype = OBJECT_FUNCTION; - n->objname = $6; - n->objargs = extractArgTypes($7); - n->label = $9; + n->objtype = OBJECT_AGGREGATE; + n->object = (Node *) $6; + n->label = $8; $$ = (Node *) n; } - | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly + | SECURITY LABEL opt_provider ON FUNCTION function_with_argtypes IS security_label { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = $3; - n->objtype = OBJECT_LARGEOBJECT; - n->objname = list_make1($7); - n->objargs = NIL; - n->label = $9; + n->objtype = OBJECT_FUNCTION; + n->object = (Node *) $6; + n->label = $8; $$ = (Node *) n; } - | SECURITY LABEL opt_provider ON opt_procedural LANGUAGE any_name + | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly IS security_label { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = $3; - n->objtype = OBJECT_LANGUAGE; - n->objname = $7; - n->objargs = NIL; + n->objtype = OBJECT_LARGEOBJECT; + n->object = (Node *) $7; n->label = $9; $$ = (Node *) n; } @@ -6075,20 +6583,28 @@ opt_provider: FOR NonReservedWord_or_Sconst { $$ = $2; } | /* empty */ { $$ = NULL; } ; -security_label_type: +/* object types taking any_name */ +security_label_type_any_name: COLUMN { $$ = OBJECT_COLUMN; } - | DATABASE { $$ = OBJECT_DATABASE; } - | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } - | SCHEMA { $$ = OBJECT_SCHEMA; } | SEQUENCE { $$ = OBJECT_SEQUENCE; } | TABLE { $$ = OBJECT_TABLE; } - | ROLE { $$ = OBJECT_ROLE; } - | TABLESPACE { $$ = OBJECT_TABLESPACE; } | VIEW { $$ = OBJECT_VIEW; } | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } ; +/* object types taking name */ +security_label_type_name: + DATABASE { $$ = OBJECT_DATABASE; } + | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } + | opt_procedural LANGUAGE { $$ = OBJECT_LANGUAGE; } + | PUBLICATION { $$ = OBJECT_PUBLICATION; } + | ROLE { $$ = OBJECT_ROLE; } + | SCHEMA { $$ = OBJECT_SCHEMA; } + | SUBSCRIPTION { $$ = OBJECT_SUBSCRIPTION; } + | TABLESPACE { $$ = OBJECT_TABLESPACE; } + ; + security_label: Sconst { $$ = $1; } | NULL_P { $$ = NULL; } ; @@ -6523,22 +7039,6 @@ opt_grant_grant_option: | /*EMPTY*/ { $$ = FALSE; } ; -function_with_argtypes_list: - function_with_argtypes { $$ = list_make1($1); } - | function_with_argtypes_list ',' function_with_argtypes - { $$ = lappend($1, $3); } - ; - -function_with_argtypes: - func_name func_args - { - FuncWithArgs *n = makeNode(FuncWithArgs); - n->funcname = $1; - n->funcargs = extractArgTypes($2); - $$ = n; - } - ; - /***************************************************************************** * * GRANT and REVOKE ROLE statements @@ -6613,15 +7113,15 @@ DefACLOptionList: DefACLOption: IN_P SCHEMA name_list { - $$ = makeDefElem("schemas", (Node *)$3); + $$ = makeDefElem("schemas", (Node *)$3, @1); } | FOR ROLE role_list { - $$ = makeDefElem("roles", (Node *)$3); + $$ = makeDefElem("roles", (Node *)$3, @1); } | FOR USER role_list { - $$ = makeDefElem("roles", (Node *)$3); + $$ = makeDefElem("roles", (Node *)$3, @1); } ; @@ -6678,6 +7178,7 @@ defacl_privilege_target: | FUNCTIONS { $$ = ACL_OBJECT_FUNCTION; } | SEQUENCES { $$ = ACL_OBJECT_SEQUENCE; } | TYPES_P { $$ = ACL_OBJECT_TYPE; } + | SCHEMAS { $$ = ACL_OBJECT_NAMESPACE; } ; @@ -6891,6 +7392,49 @@ func_args_list: | func_args_list ',' func_arg { $$ = lappend($1, $3); } ; +function_with_argtypes_list: + function_with_argtypes { $$ = list_make1($1); } + | function_with_argtypes_list ',' function_with_argtypes + { $$ = lappend($1, $3); } + ; + +function_with_argtypes: + func_name func_args + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = $1; + n->objargs = extractArgTypes($2); + $$ = n; + } + /* + * Because of reduce/reduce conflicts, we can't use func_name + * below, but we can write it out the long way, which actually + * allows more cases. + */ + | type_func_name_keyword + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = list_make1(makeString(pstrdup($1))); + n->args_unspecified = true; + $$ = n; + } + | ColId + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = list_make1(makeString($1)); + n->args_unspecified = true; + $$ = n; + } + | ColId indirection + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = check_func_name(lcons(makeString($1), $2), + yyscanner); + n->args_unspecified = true; + $$ = n; + } + ; + /* * func_args_with_defaults is separate because we only want to accept * defaults in CREATE FUNCTION, not in ALTER etc. @@ -7093,6 +7637,22 @@ aggr_args_list: | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } ; +aggregate_with_argtypes: + func_name aggr_args + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = $1; + n->objargs = extractAggrArgTypes($2); + $$ = n; + } + ; + +aggregate_with_argtypes_list: + aggregate_with_argtypes { $$ = list_make1($1); } + | aggregate_with_argtypes_list ',' aggregate_with_argtypes + { $$ = lappend($1, $3); } + ; + createfunc_opt_list: /* Must be at least one to prevent conflict */ createfunc_opt_item { $$ = list_make1($1); } @@ -7105,87 +7665,87 @@ createfunc_opt_list: common_func_opt_item: CALLED ON NULL_P INPUT_P { - $$ = makeDefElem("strict", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("strict", (Node *)makeInteger(FALSE), @1); } | RETURNS NULL_P ON NULL_P INPUT_P { - $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("strict", (Node *)makeInteger(TRUE), @1); } | STRICT_P { - $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("strict", (Node *)makeInteger(TRUE), @1); } | IMMUTABLE { - $$ = makeDefElem("volatility", (Node *)makeString("immutable")); + $$ = makeDefElem("volatility", (Node *)makeString("immutable"), @1); } | STABLE { - $$ = makeDefElem("volatility", (Node *)makeString("stable")); + $$ = makeDefElem("volatility", (Node *)makeString("stable"), @1); } | VOLATILE { - $$ = makeDefElem("volatility", (Node *)makeString("volatile")); + $$ = makeDefElem("volatility", (Node *)makeString("volatile"), @1); } | EXTERNAL SECURITY DEFINER { - $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("security", (Node *)makeInteger(TRUE), @1); } | EXTERNAL SECURITY INVOKER { - $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("security", (Node *)makeInteger(FALSE), @1); } | SECURITY DEFINER { - $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("security", (Node *)makeInteger(TRUE), @1); } | SECURITY INVOKER { - $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("security", (Node *)makeInteger(FALSE), @1); } | LEAKPROOF { - $$ = makeDefElem("leakproof", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("leakproof", (Node *)makeInteger(TRUE), @1); } | NOT LEAKPROOF { - $$ = makeDefElem("leakproof", (Node *)makeInteger(FALSE)); + $$ = makeDefElem("leakproof", (Node *)makeInteger(FALSE), @1); } | COST NumericOnly { - $$ = makeDefElem("cost", (Node *)$2); + $$ = makeDefElem("cost", (Node *)$2, @1); } | ROWS NumericOnly { - $$ = makeDefElem("rows", (Node *)$2); + $$ = makeDefElem("rows", (Node *)$2, @1); } | FunctionSetResetClause { /* we abuse the normal content of a DefElem here */ - $$ = makeDefElem("set", (Node *)$1); + $$ = makeDefElem("set", (Node *)$1, @1); } | PARALLEL ColId { - $$ = makeDefElem("parallel", (Node *)makeString($2)); + $$ = makeDefElem("parallel", (Node *)makeString($2), @1); } ; createfunc_opt_item: AS func_as { - $$ = makeDefElem("as", (Node *)$2); + $$ = makeDefElem("as", (Node *)$2, @1); } | LANGUAGE NonReservedWord_or_Sconst { - $$ = makeDefElem("language", (Node *)makeString($2)); + $$ = makeDefElem("language", (Node *)makeString($2), @1); } | TRANSFORM transform_type_list { - $$ = makeDefElem("transform", (Node *)$2); + $$ = makeDefElem("transform", (Node *)$2, @1); } | WINDOW { - $$ = makeDefElem("window", (Node *)makeInteger(TRUE)); + $$ = makeDefElem("window", (Node *)makeInteger(TRUE), @1); } | common_func_opt_item { @@ -7274,24 +7834,22 @@ opt_restrict: *****************************************************************************/ RemoveFuncStmt: - DROP FUNCTION func_name func_args opt_drop_behavior + DROP FUNCTION function_with_argtypes_list opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_FUNCTION; - n->objects = list_make1($3); - n->arguments = list_make1(extractArgTypes($4)); - n->behavior = $5; + n->objects = $3; + n->behavior = $4; n->missing_ok = false; n->concurrent = false; $$ = (Node *)n; } - | DROP FUNCTION IF_P EXISTS func_name func_args opt_drop_behavior + | DROP FUNCTION IF_P EXISTS function_with_argtypes_list opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_FUNCTION; - n->objects = list_make1($5); - n->arguments = list_make1(extractArgTypes($6)); - n->behavior = $7; + n->objects = $5; + n->behavior = $6; n->missing_ok = true; n->concurrent = false; $$ = (Node *)n; @@ -7299,24 +7857,22 @@ RemoveFuncStmt: ; RemoveAggrStmt: - DROP AGGREGATE func_name aggr_args opt_drop_behavior + DROP AGGREGATE aggregate_with_argtypes_list opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_AGGREGATE; - n->objects = list_make1($3); - n->arguments = list_make1(extractAggrArgTypes($4)); - n->behavior = $5; + n->objects = $3; + n->behavior = $4; n->missing_ok = false; n->concurrent = false; $$ = (Node *)n; } - | DROP AGGREGATE IF_P EXISTS func_name aggr_args opt_drop_behavior + | DROP AGGREGATE IF_P EXISTS aggregate_with_argtypes_list opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_AGGREGATE; - n->objects = list_make1($5); - n->arguments = list_make1(extractAggrArgTypes($6)); - n->behavior = $7; + n->objects = $5; + n->behavior = $6; n->missing_ok = true; n->concurrent = false; $$ = (Node *)n; @@ -7324,24 +7880,22 @@ RemoveAggrStmt: ; RemoveOperStmt: - DROP OPERATOR any_operator oper_argtypes opt_drop_behavior + DROP OPERATOR operator_with_argtypes_list opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_OPERATOR; - n->objects = list_make1($3); - n->arguments = list_make1($4); - n->behavior = $5; + n->objects = $3; + n->behavior = $4; n->missing_ok = false; n->concurrent = false; $$ = (Node *)n; } - | DROP OPERATOR IF_P EXISTS any_operator oper_argtypes opt_drop_behavior + | DROP OPERATOR IF_P EXISTS operator_with_argtypes_list opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_OPERATOR; - n->objects = list_make1($5); - n->arguments = list_make1($6); - n->behavior = $7; + n->objects = $5; + n->behavior = $6; n->missing_ok = true; n->concurrent = false; $$ = (Node *)n; @@ -7372,6 +7926,22 @@ any_operator: { $$ = lcons(makeString($1), $3); } ; +operator_with_argtypes_list: + operator_with_argtypes { $$ = list_make1($1); } + | operator_with_argtypes_list ',' operator_with_argtypes + { $$ = lappend($1, $3); } + ; + +operator_with_argtypes: + any_operator oper_argtypes + { + ObjectWithArgs *n = makeNode(ObjectWithArgs); + n->objname = $1; + n->objargs = $2; + $$ = n; + } + ; + /***************************************************************************** * * DO [ LANGUAGE language ] @@ -7397,11 +7967,11 @@ dostmt_opt_list: dostmt_opt_item: Sconst { - $$ = makeDefElem("as", (Node *)makeString($1)); + $$ = makeDefElem("as", (Node *)makeString($1), @1); } | LANGUAGE NonReservedWord_or_Sconst { - $$ = makeDefElem("language", (Node *)makeString($2)); + $$ = makeDefElem("language", (Node *)makeString($2), @1); } ; @@ -7456,8 +8026,7 @@ DropCastStmt: DROP CAST opt_if_exists '(' Typename AS Typename ')' opt_drop_beha { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_CAST; - n->objects = list_make1(list_make1($5)); - n->arguments = list_make1(list_make1($7)); + n->objects = list_make1(list_make2($5, $7)); n->behavior = $9; n->missing_ok = $3; n->concurrent = false; @@ -7511,8 +8080,7 @@ DropTransformStmt: DROP TRANSFORM opt_if_exists FOR Typename LANGUAGE name opt_d { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TRANSFORM; - n->objects = list_make1(list_make1($5)); - n->arguments = list_make1(list_make1(makeString($7))); + n->objects = list_make1(list_make2($5, makeString($7))); n->behavior = $8; n->missing_ok = $3; $$ = (Node *)n; @@ -7615,13 +8183,12 @@ AlterTblSpcStmt: * *****************************************************************************/ -RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name +RenameStmt: ALTER AGGREGATE aggregate_with_argtypes RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_AGGREGATE; - n->object = $3; - n->objarg = extractAggrArgTypes($4); - n->newname = $7; + n->object = (Node *) $3; + n->newname = $6; n->missing_ok = false; $$ = (Node *)n; } @@ -7629,7 +8196,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLLATION; - n->object = $3; + n->object = (Node *) $3; n->newname = $6; n->missing_ok = false; $$ = (Node *)n; @@ -7638,7 +8205,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_CONVERSION; - n->object = $3; + n->object = (Node *) $3; n->newname = $6; n->missing_ok = false; $$ = (Node *)n; @@ -7656,7 +8223,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DOMAIN; - n->object = $3; + n->object = (Node *) $3; n->newname = $6; n->missing_ok = false; $$ = (Node *)n; @@ -7665,7 +8232,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DOMCONSTRAINT; - n->object = $3; + n->object = (Node *) $3; n->subname = $6; n->newname = $8; $$ = (Node *)n; @@ -7674,7 +8241,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FDW; - n->object = list_make1(makeString($5)); + n->object = (Node *) makeString($5); n->newname = $8; n->missing_ok = false; $$ = (Node *)n; @@ -7683,8 +8250,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FUNCTION; - n->object = $3->funcname; - n->objarg = $3->funcargs; + n->object = (Node *) $3; n->newname = $6; n->missing_ok = false; $$ = (Node *)n; @@ -7702,7 +8268,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_LANGUAGE; - n->object = list_make1(makeString($4)); + n->object = (Node *) makeString($4); n->newname = $7; n->missing_ok = false; $$ = (Node *)n; @@ -7711,7 +8277,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPCLASS; - n->object = lcons(makeString($6), $4); + n->object = (Node *) lcons(makeString($6), $4); n->newname = $9; n->missing_ok = false; $$ = (Node *)n; @@ -7720,7 +8286,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPFAMILY; - n->object = lcons(makeString($6), $4); + n->object = (Node *) lcons(makeString($6), $4); n->newname = $9; n->missing_ok = false; $$ = (Node *)n; @@ -7745,6 +8311,15 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name n->missing_ok = true; $$ = (Node *)n; } + | ALTER PUBLICATION name RENAME TO name + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_PUBLICATION; + n->object = (Node *) makeString($3); + n->newname = $6; + n->missing_ok = false; + $$ = (Node *)n; + } | ALTER SCHEMA name RENAME TO name { RenameStmt *n = makeNode(RenameStmt); @@ -7758,7 +8333,16 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_SERVER; - n->object = list_make1(makeString($3)); + n->object = (Node *) makeString($3); + n->newname = $6; + n->missing_ok = false; + $$ = (Node *)n; + } + | ALTER SUBSCRIPTION name RENAME TO name + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_SUBSCRIPTION; + n->object = (Node *) makeString($3); n->newname = $6; n->missing_ok = false; $$ = (Node *)n; @@ -7993,7 +8577,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_EVENT_TRIGGER; - n->object = list_make1(makeString($4)); + n->object = (Node *) makeString($4); n->newname = $7; $$ = (Node *)n; } @@ -8024,11 +8608,20 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name n->missing_ok = false; $$ = (Node *)n; } + | ALTER STATISTICS any_name RENAME TO name + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_STATISTIC_EXT; + n->object = (Node *) $3; + n->newname = $6; + n->missing_ok = false; + $$ = (Node *)n; + } | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSPARSER; - n->object = $5; + n->object = (Node *) $5; n->newname = $8; n->missing_ok = false; $$ = (Node *)n; @@ -8037,7 +8630,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSDICTIONARY; - n->object = $5; + n->object = (Node *) $5; n->newname = $8; n->missing_ok = false; $$ = (Node *)n; @@ -8046,7 +8639,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSTEMPLATE; - n->object = $5; + n->object = (Node *) $5; n->newname = $8; n->missing_ok = false; $$ = (Node *)n; @@ -8055,7 +8648,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSCONFIGURATION; - n->object = $5; + n->object = (Node *) $5; n->newname = $8; n->missing_ok = false; $$ = (Node *)n; @@ -8064,7 +8657,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TYPE; - n->object = $3; + n->object = (Node *) $3; n->newname = $6; n->missing_ok = false; $$ = (Node *)n; @@ -8102,9 +8695,7 @@ AlterObjectDependsStmt: { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_FUNCTION; - n->relation = NULL; - n->objname = $3->funcname; - n->objargs = $3->funcargs; + n->object = (Node *) $3; n->extname = makeString($7); $$ = (Node *)n; } @@ -8113,8 +8704,7 @@ AlterObjectDependsStmt: AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_TRIGGER; n->relation = $5; - n->objname = list_make1(makeString($3)); - n->objargs = NIL; + n->object = (Node *) list_make1(makeString($3)); n->extname = makeString($9); $$ = (Node *)n; } @@ -8123,8 +8713,6 @@ AlterObjectDependsStmt: AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_MATVIEW; n->relation = $4; - n->objname = NIL; - n->objargs = NIL; n->extname = makeString($8); $$ = (Node *)n; } @@ -8133,8 +8721,6 @@ AlterObjectDependsStmt: AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_INDEX; n->relation = $3; - n->objname = NIL; - n->objargs = NIL; n->extname = makeString($7); $$ = (Node *)n; } @@ -8147,13 +8733,12 @@ AlterObjectDependsStmt: *****************************************************************************/ AlterObjectSchemaStmt: - ALTER AGGREGATE func_name aggr_args SET SCHEMA name + ALTER AGGREGATE aggregate_with_argtypes SET SCHEMA name { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_AGGREGATE; - n->object = $3; - n->objarg = extractAggrArgTypes($4); - n->newschema = $7; + n->object = (Node *) $3; + n->newschema = $6; n->missing_ok = false; $$ = (Node *)n; } @@ -8161,7 +8746,7 @@ AlterObjectSchemaStmt: { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_COLLATION; - n->object = $3; + n->object = (Node *) $3; n->newschema = $6; n->missing_ok = false; $$ = (Node *)n; @@ -8170,7 +8755,7 @@ AlterObjectSchemaStmt: { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_CONVERSION; - n->object = $3; + n->object = (Node *) $3; n->newschema = $6; n->missing_ok = false; $$ = (Node *)n; @@ -8179,16 +8764,16 @@ AlterObjectSchemaStmt: { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_DOMAIN; - n->object = $3; + n->object = (Node *) $3; n->newschema = $6; n->missing_ok = false; $$ = (Node *)n; } - | ALTER EXTENSION any_name SET SCHEMA name + | ALTER EXTENSION name SET SCHEMA name { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_EXTENSION; - n->object = $3; + n->object = (Node *) makeString($3); n->newschema = $6; n->missing_ok = false; $$ = (Node *)n; @@ -8197,19 +8782,17 @@ AlterObjectSchemaStmt: { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FUNCTION; - n->object = $3->funcname; - n->objarg = $3->funcargs; + n->object = (Node *) $3; n->newschema = $6; n->missing_ok = false; $$ = (Node *)n; } - | ALTER OPERATOR any_operator oper_argtypes SET SCHEMA name + | ALTER OPERATOR operator_with_argtypes SET SCHEMA name { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPERATOR; - n->object = $3; - n->objarg = $4; - n->newschema = $7; + n->object = (Node *) $3; + n->newschema = $6; n->missing_ok = false; $$ = (Node *)n; } @@ -8217,7 +8800,7 @@ AlterObjectSchemaStmt: { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPCLASS; - n->object = lcons(makeString($6), $4); + n->object = (Node *) lcons(makeString($6), $4); n->newschema = $9; n->missing_ok = false; $$ = (Node *)n; @@ -8226,7 +8809,7 @@ AlterObjectSchemaStmt: { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPFAMILY; - n->object = lcons(makeString($6), $4); + n->object = (Node *) lcons(makeString($6), $4); n->newschema = $9; n->missing_ok = false; $$ = (Node *)n; @@ -8249,11 +8832,20 @@ AlterObjectSchemaStmt: n->missing_ok = true; $$ = (Node *)n; } + | ALTER STATISTICS any_name SET SCHEMA name + { + AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); + n->objectType = OBJECT_STATISTIC_EXT; + n->object = (Node *) $3; + n->newschema = $6; + n->missing_ok = false; + $$ = (Node *)n; + } | ALTER TEXT_P SEARCH PARSER any_name SET SCHEMA name { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSPARSER; - n->object = $5; + n->object = (Node *) $5; n->newschema = $8; n->missing_ok = false; $$ = (Node *)n; @@ -8262,7 +8854,7 @@ AlterObjectSchemaStmt: { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSDICTIONARY; - n->object = $5; + n->object = (Node *) $5; n->newschema = $8; n->missing_ok = false; $$ = (Node *)n; @@ -8271,7 +8863,7 @@ AlterObjectSchemaStmt: { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSTEMPLATE; - n->object = $5; + n->object = (Node *) $5; n->newschema = $8; n->missing_ok = false; $$ = (Node *)n; @@ -8280,7 +8872,7 @@ AlterObjectSchemaStmt: { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSCONFIGURATION; - n->object = $5; + n->object = (Node *) $5; n->newschema = $8; n->missing_ok = false; $$ = (Node *)n; @@ -8361,7 +8953,7 @@ AlterObjectSchemaStmt: { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TYPE; - n->object = $3; + n->object = (Node *) $3; n->newschema = $6; n->missing_ok = false; $$ = (Node *)n; @@ -8375,12 +8967,11 @@ AlterObjectSchemaStmt: *****************************************************************************/ AlterOperatorStmt: - ALTER OPERATOR any_operator oper_argtypes SET '(' operator_def_list ')' + ALTER OPERATOR operator_with_argtypes SET '(' operator_def_list ')' { AlterOperatorStmt *n = makeNode(AlterOperatorStmt); n->opername = $3; - n->operargs = $4; - n->options = $7; + n->options = $6; $$ = (Node *)n; } ; @@ -8390,9 +8981,18 @@ operator_def_list: operator_def_elem { $$ = list_make1($1); } ; operator_def_elem: ColLabel '=' NONE - { $$ = makeDefElem($1, NULL); } - | ColLabel '=' def_arg - { $$ = makeDefElem($1, (Node *) $3); } + { $$ = makeDefElem($1, NULL, @1); } + | ColLabel '=' operator_def_arg + { $$ = makeDefElem($1, (Node *) $3, @1); } + ; + +/* must be similar enough to def_arg to avoid reduce/reduce conflicts */ +operator_def_arg: + func_type { $$ = (Node *)$1; } + | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } + | qual_all_Op { $$ = (Node *)$1; } + | NumericOnly { $$ = (Node *)$1; } + | Sconst { $$ = (Node *)makeString($1); } ; /***************************************************************************** @@ -8401,20 +9001,19 @@ operator_def_elem: ColLabel '=' NONE * *****************************************************************************/ -AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec +AlterOwnerStmt: ALTER AGGREGATE aggregate_with_argtypes OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_AGGREGATE; - n->object = $3; - n->objarg = extractAggrArgTypes($4); - n->newowner = $7; + n->object = (Node *) $3; + n->newowner = $6; $$ = (Node *)n; } | ALTER COLLATION any_name OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_COLLATION; - n->object = $3; + n->object = (Node *) $3; n->newowner = $6; $$ = (Node *)n; } @@ -8422,7 +9021,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_CONVERSION; - n->object = $3; + n->object = (Node *) $3; n->newowner = $6; $$ = (Node *)n; } @@ -8430,7 +9029,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DATABASE; - n->object = list_make1(makeString($3)); + n->object = (Node *) makeString($3); n->newowner = $6; $$ = (Node *)n; } @@ -8438,7 +9037,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DOMAIN; - n->object = $3; + n->object = (Node *) $3; n->newowner = $6; $$ = (Node *)n; } @@ -8446,8 +9045,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FUNCTION; - n->object = $3->funcname; - n->objarg = $3->funcargs; + n->object = (Node *) $3; n->newowner = $6; $$ = (Node *)n; } @@ -8455,7 +9053,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LANGUAGE; - n->object = list_make1(makeString($4)); + n->object = (Node *) makeString($4); n->newowner = $7; $$ = (Node *)n; } @@ -8463,24 +9061,23 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LARGEOBJECT; - n->object = list_make1($4); + n->object = (Node *) $4; n->newowner = $7; $$ = (Node *)n; } - | ALTER OPERATOR any_operator oper_argtypes OWNER TO RoleSpec + | ALTER OPERATOR operator_with_argtypes OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPERATOR; - n->object = $3; - n->objarg = $4; - n->newowner = $7; + n->object = (Node *) $3; + n->newowner = $6; $$ = (Node *)n; } | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPCLASS; - n->object = lcons(makeString($6), $4); + n->object = (Node *) lcons(makeString($6), $4); n->newowner = $9; $$ = (Node *)n; } @@ -8488,7 +9085,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPFAMILY; - n->object = lcons(makeString($6), $4); + n->object = (Node *) lcons(makeString($6), $4); n->newowner = $9; $$ = (Node *)n; } @@ -8496,7 +9093,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_SCHEMA; - n->object = list_make1(makeString($3)); + n->object = (Node *) makeString($3); n->newowner = $6; $$ = (Node *)n; } @@ -8504,7 +9101,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TYPE; - n->object = $3; + n->object = (Node *) $3; n->newowner = $6; $$ = (Node *)n; } @@ -8512,7 +9109,15 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TABLESPACE; - n->object = list_make1(makeString($3)); + n->object = (Node *) makeString($3); + n->newowner = $6; + $$ = (Node *)n; + } + | ALTER STATISTICS any_name OWNER TO RoleSpec + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_STATISTIC_EXT; + n->object = (Node *) $3; n->newowner = $6; $$ = (Node *)n; } @@ -8520,7 +9125,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TSDICTIONARY; - n->object = $5; + n->object = (Node *) $5; n->newowner = $8; $$ = (Node *)n; } @@ -8528,7 +9133,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TSCONFIGURATION; - n->object = $5; + n->object = (Node *) $5; n->newowner = $8; $$ = (Node *)n; } @@ -8536,28 +9141,255 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FDW; - n->object = list_make1(makeString($5)); + n->object = (Node *) makeString($5); n->newowner = $8; $$ = (Node *)n; } - | ALTER SERVER name OWNER TO RoleSpec + | ALTER SERVER name OWNER TO RoleSpec + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_FOREIGN_SERVER; + n->object = (Node *) makeString($3); + n->newowner = $6; + $$ = (Node *)n; + } + | ALTER EVENT TRIGGER name OWNER TO RoleSpec + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_EVENT_TRIGGER; + n->object = (Node *) makeString($4); + n->newowner = $7; + $$ = (Node *)n; + } + | ALTER PUBLICATION name OWNER TO RoleSpec + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_PUBLICATION; + n->object = (Node *) makeString($3); + n->newowner = $6; + $$ = (Node *)n; + } + | ALTER SUBSCRIPTION name OWNER TO RoleSpec + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_SUBSCRIPTION; + n->object = (Node *) makeString($3); + n->newowner = $6; + $$ = (Node *)n; + } + ; + + +/***************************************************************************** + * + * CREATE PUBLICATION name [ FOR TABLE ] [ WITH options ] + * + *****************************************************************************/ + +CreatePublicationStmt: + CREATE PUBLICATION name opt_publication_for_tables opt_definition + { + CreatePublicationStmt *n = makeNode(CreatePublicationStmt); + n->pubname = $3; + n->options = $5; + if ($4 != NULL) + { + /* FOR TABLE */ + if (IsA($4, List)) + n->tables = (List *)$4; + /* FOR ALL TABLES */ + else + n->for_all_tables = TRUE; + } + $$ = (Node *)n; + } + ; + +opt_publication_for_tables: + publication_for_tables { $$ = $1; } + | /* EMPTY */ { $$ = NULL; } + ; + +publication_for_tables: + FOR TABLE relation_expr_list + { + $$ = (Node *) $3; + } + | FOR ALL TABLES + { + $$ = (Node *) makeInteger(TRUE); + } + ; + + +/***************************************************************************** + * + * ALTER PUBLICATION name SET ( options ) + * + * ALTER PUBLICATION name ADD TABLE table [, table2] + * + * ALTER PUBLICATION name DROP TABLE table [, table2] + * + * ALTER PUBLICATION name SET TABLE table [, table2] + * + *****************************************************************************/ + +AlterPublicationStmt: + ALTER PUBLICATION name SET definition + { + AlterPublicationStmt *n = makeNode(AlterPublicationStmt); + n->pubname = $3; + n->options = $5; + $$ = (Node *)n; + } + | ALTER PUBLICATION name ADD_P TABLE relation_expr_list + { + AlterPublicationStmt *n = makeNode(AlterPublicationStmt); + n->pubname = $3; + n->tables = $6; + n->tableAction = DEFELEM_ADD; + $$ = (Node *)n; + } + | ALTER PUBLICATION name SET TABLE relation_expr_list + { + AlterPublicationStmt *n = makeNode(AlterPublicationStmt); + n->pubname = $3; + n->tables = $6; + n->tableAction = DEFELEM_SET; + $$ = (Node *)n; + } + | ALTER PUBLICATION name DROP TABLE relation_expr_list + { + AlterPublicationStmt *n = makeNode(AlterPublicationStmt); + n->pubname = $3; + n->tables = $6; + n->tableAction = DEFELEM_DROP; + $$ = (Node *)n; + } + ; + +/***************************************************************************** + * + * CREATE SUBSCRIPTION name ... + * + *****************************************************************************/ + +CreateSubscriptionStmt: + CREATE SUBSCRIPTION name CONNECTION Sconst PUBLICATION publication_name_list opt_definition + { + CreateSubscriptionStmt *n = + makeNode(CreateSubscriptionStmt); + n->subname = $3; + n->conninfo = $5; + n->publication = $7; + n->options = $8; + $$ = (Node *)n; + } + ; + +publication_name_list: + publication_name_item + { + $$ = list_make1($1); + } + | publication_name_list ',' publication_name_item + { + $$ = lappend($1, $3); + } + ; + +publication_name_item: + ColLabel { $$ = makeString($1); }; + +/***************************************************************************** + * + * ALTER SUBSCRIPTION name ... + * + *****************************************************************************/ + +AlterSubscriptionStmt: + ALTER SUBSCRIPTION name SET definition + { + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_OPTIONS; + n->subname = $3; + n->options = $5; + $$ = (Node *)n; + } + | ALTER SUBSCRIPTION name CONNECTION Sconst + { + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_CONNECTION; + n->subname = $3; + n->conninfo = $5; + $$ = (Node *)n; + } + | ALTER SUBSCRIPTION name REFRESH PUBLICATION opt_definition + { + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_REFRESH; + n->subname = $3; + n->options = $6; + $$ = (Node *)n; + } + | ALTER SUBSCRIPTION name SET PUBLICATION publication_name_list opt_definition + { + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_PUBLICATION; + n->subname = $3; + n->publication = $6; + n->options = $7; + $$ = (Node *)n; + } + | ALTER SUBSCRIPTION name ENABLE_P { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_FOREIGN_SERVER; - n->object = list_make1(makeString($3)); - n->newowner = $6; + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_ENABLED; + n->subname = $3; + n->options = list_make1(makeDefElem("enabled", + (Node *)makeInteger(TRUE), @1)); $$ = (Node *)n; } - | ALTER EVENT TRIGGER name OWNER TO RoleSpec + | ALTER SUBSCRIPTION name DISABLE_P { - AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_EVENT_TRIGGER; - n->object = list_make1(makeString($4)); - n->newowner = $7; + AlterSubscriptionStmt *n = + makeNode(AlterSubscriptionStmt); + n->kind = ALTER_SUBSCRIPTION_ENABLED; + n->subname = $3; + n->options = list_make1(makeDefElem("enabled", + (Node *)makeInteger(FALSE), @1)); $$ = (Node *)n; } ; +/***************************************************************************** + * + * DROP SUBSCRIPTION [ IF EXISTS ] name + * + *****************************************************************************/ + +DropSubscriptionStmt: DROP SUBSCRIPTION name opt_drop_behavior + { + DropSubscriptionStmt *n = makeNode(DropSubscriptionStmt); + n->subname = $3; + n->missing_ok = false; + n->behavior = $4; + $$ = (Node *) n; + } + | DROP SUBSCRIPTION IF_P EXISTS name opt_drop_behavior + { + DropSubscriptionStmt *n = makeNode(DropSubscriptionStmt); + n->subname = $5; + n->missing_ok = true; + n->behavior = $6; + $$ = (Node *) n; + } + ; /***************************************************************************** * @@ -8629,32 +9461,6 @@ opt_instead: ; -DropRuleStmt: - DROP RULE name ON any_name opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_RULE; - n->objects = list_make1(lappend($5, makeString($3))); - n->arguments = NIL; - n->behavior = $6; - n->missing_ok = false; - n->concurrent = false; - $$ = (Node *) n; - } - | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_RULE; - n->objects = list_make1(lappend($7, makeString($5))); - n->arguments = NIL; - n->behavior = $8; - n->missing_ok = true; - n->concurrent = false; - $$ = (Node *) n; - } - ; - - /***************************************************************************** * * QUERY: @@ -8758,7 +9564,7 @@ TransactionStmt: TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_SAVEPOINT; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString($2))); + (Node *)makeString($2), @1)); $$ = (Node *)n; } | RELEASE SAVEPOINT ColId @@ -8766,7 +9572,7 @@ TransactionStmt: TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString($3))); + (Node *)makeString($3), @1)); $$ = (Node *)n; } | RELEASE ColId @@ -8774,7 +9580,7 @@ TransactionStmt: TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString($2))); + (Node *)makeString($2), @1)); $$ = (Node *)n; } | ROLLBACK opt_transaction TO SAVEPOINT ColId @@ -8782,7 +9588,7 @@ TransactionStmt: TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString($5))); + (Node *)makeString($5), @1)); $$ = (Node *)n; } | ROLLBACK opt_transaction TO ColId @@ -8790,7 +9596,7 @@ TransactionStmt: TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString($4))); + (Node *)makeString($4), @1)); $$ = (Node *)n; } | PREPARE TRANSACTION Sconst @@ -8824,19 +9630,19 @@ opt_transaction: WORK {} transaction_mode_item: ISOLATION LEVEL iso_level { $$ = makeDefElem("transaction_isolation", - makeStringConst($3, @3)); } + makeStringConst($3, @3), @1); } | READ ONLY { $$ = makeDefElem("transaction_read_only", - makeIntConst(TRUE, @1)); } + makeIntConst(TRUE, @1), @1); } | READ WRITE { $$ = makeDefElem("transaction_read_only", - makeIntConst(FALSE, @1)); } + makeIntConst(FALSE, @1), @1); } | DEFERRABLE { $$ = makeDefElem("transaction_deferrable", - makeIntConst(TRUE, @1)); } + makeIntConst(TRUE, @1), @1); } | NOT DEFERRABLE { $$ = makeDefElem("transaction_deferrable", - makeIntConst(FALSE, @1)); } + makeIntConst(FALSE, @1), @1); } ; /* Syntax with commas is SQL-spec, without commas is Postgres historical */ @@ -8980,15 +9786,15 @@ createdb_opt_items: createdb_opt_item: createdb_opt_name opt_equal SignedIconst { - $$ = makeDefElem($1, (Node *)makeInteger($3)); + $$ = makeDefElem($1, (Node *)makeInteger($3), @1); } | createdb_opt_name opt_equal opt_boolean_or_string { - $$ = makeDefElem($1, (Node *)makeString($3)); + $$ = makeDefElem($1, (Node *)makeString($3), @1); } | createdb_opt_name opt_equal DEFAULT { - $$ = makeDefElem($1, NULL); + $$ = makeDefElem($1, NULL, @1); } ; @@ -9048,7 +9854,7 @@ AlterDatabaseStmt: AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = $3; n->options = list_make1(makeDefElem("tablespace", - (Node *)makeString($6))); + (Node *)makeString($6), @6)); $$ = (Node *)n; } ; @@ -9088,6 +9894,21 @@ DropdbStmt: DROP DATABASE database_name ; +/***************************************************************************** + * + * ALTER COLLATION + * + *****************************************************************************/ + +AlterCollationStmt: ALTER COLLATION any_name REFRESH VERSION_P + { + AlterCollationStmt *n = makeNode(AlterCollationStmt); + n->collname = $3; + $$ = (Node *)n; + } + ; + + /***************************************************************************** * * ALTER SYSTEM @@ -9512,17 +10333,17 @@ ExplainStmt: { ExplainStmt *n = makeNode(ExplainStmt); n->query = $4; - n->options = list_make1(makeDefElem("analyze", NULL)); + n->options = list_make1(makeDefElem("analyze", NULL, @2)); if ($3) n->options = lappend(n->options, - makeDefElem("verbose", NULL)); + makeDefElem("verbose", NULL, @3)); $$ = (Node *) n; } | EXPLAIN VERBOSE ExplainableStmt { ExplainStmt *n = makeNode(ExplainStmt); n->query = $3; - n->options = list_make1(makeDefElem("verbose", NULL)); + n->options = list_make1(makeDefElem("verbose", NULL, @2)); $$ = (Node *) n; } | EXPLAIN '(' explain_option_list ')' ExplainableStmt @@ -9560,7 +10381,7 @@ explain_option_list: explain_option_elem: explain_option_name explain_option_arg { - $$ = makeDefElem($1, $2); + $$ = makeDefElem($1, $2, @1); } ; @@ -9716,12 +10537,26 @@ insert_rest: $$->cols = NIL; $$->selectStmt = $1; } + | OVERRIDING override_kind VALUE_P SelectStmt + { + $$ = makeNode(InsertStmt); + $$->cols = NIL; + $$->override = $2; + $$->selectStmt = $4; + } | '(' insert_column_list ')' SelectStmt { $$ = makeNode(InsertStmt); $$->cols = $2; $$->selectStmt = $4; } + | '(' insert_column_list ')' OVERRIDING override_kind VALUE_P SelectStmt + { + $$ = makeNode(InsertStmt); + $$->cols = $2; + $$->override = $5; + $$->selectStmt = $7; + } | DEFAULT VALUES { $$ = makeNode(InsertStmt); @@ -9730,6 +10565,11 @@ insert_rest: } ; +override_kind: + USER { $$ = OVERRIDING_USER_VALUE; } + | SYSTEM_P { $$ = OVERRIDING_SYSTEM_VALUE; } + ; + insert_column_list: insert_column_item { $$ = list_make1($1); } @@ -9903,75 +10743,24 @@ set_clause_list: ; set_clause: - single_set_clause { $$ = list_make1($1); } - | multiple_set_clause { $$ = $1; } - ; - -single_set_clause: - set_target '=' ctext_expr - { - $$ = $1; - $$->val = (Node *) $3; - } - ; - -/* - * Ideally, we'd accept any row-valued a_expr as RHS of a multiple_set_clause. - * However, per SQL spec the row-constructor case must allow DEFAULT as a row - * member, and it's pretty unclear how to do that (unless perhaps we allow - * DEFAULT in any a_expr and let parse analysis sort it out later?). For the - * moment, the planner/executor only support a subquery as a multiassignment - * source anyhow, so we need only accept ctext_row and subqueries here. - */ -multiple_set_clause: - '(' set_target_list ')' '=' ctext_row + set_target '=' a_expr { - ListCell *col_cell; - ListCell *val_cell; - - /* - * Break the ctext_row apart, merge individual expressions - * into the destination ResTargets. This is semantically - * equivalent to, and much cheaper to process than, the - * general case. - */ - if (list_length($2) != list_length($5)) - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("number of columns does not match number of values"), - parser_errposition(@5))); - forboth(col_cell, $2, val_cell, $5) - { - ResTarget *res_col = (ResTarget *) lfirst(col_cell); - Node *res_val = (Node *) lfirst(val_cell); - - res_col->val = res_val; - } - - $$ = $2; + $1->val = (Node *) $3; + $$ = list_make1($1); } - | '(' set_target_list ')' '=' select_with_parens + | '(' set_target_list ')' '=' a_expr { - SubLink *sl = makeNode(SubLink); int ncolumns = list_length($2); int i = 1; ListCell *col_cell; - /* First, convert bare SelectStmt into a SubLink */ - sl->subLinkType = MULTIEXPR_SUBLINK; - sl->subLinkId = 0; /* will be assigned later */ - sl->testexpr = NULL; - sl->operName = NIL; - sl->subselect = $5; - sl->location = @5; - /* Create a MultiAssignRef source for each target */ foreach(col_cell, $2) { ResTarget *res_col = (ResTarget *) lfirst(col_cell); MultiAssignRef *r = makeNode(MultiAssignRef); - r->source = (Node *) sl; + r->source = (Node *) $5; r->colno = i; r->ncolumns = ncolumns; res_col->val = (Node *) r; @@ -10630,17 +11419,22 @@ locked_rels_list: ; +/* + * We should allow ROW '(' expr_list ')' too, but that seems to require + * making VALUES a fully reserved word, which will probably break more apps + * than allowing the noise-word is worth. + */ values_clause: - VALUES ctext_row + VALUES '(' expr_list ')' { SelectStmt *n = makeNode(SelectStmt); - n->valuesLists = list_make1($2); + n->valuesLists = list_make1($3); $$ = (Node *) n; } - | values_clause ',' ctext_row + | values_clause ',' '(' expr_list ')' { SelectStmt *n = (SelectStmt *) $1; - n->valuesLists = lappend(n->valuesLists, $3); + n->valuesLists = lappend(n->valuesLists, $4); $$ = (Node *) n; } ; @@ -10695,6 +11489,19 @@ table_ref: relation_expr opt_alias_clause n->coldeflist = lsecond($3); $$ = (Node *) n; } + | xmltable opt_alias_clause + { + RangeTableFunc *n = (RangeTableFunc *) $1; + n->alias = $2; + $$ = (Node *) n; + } + | LATERAL_P xmltable opt_alias_clause + { + RangeTableFunc *n = (RangeTableFunc *) $2; + n->lateral = true; + n->alias = $3; + $$ = (Node *) n; + } | select_with_parens opt_alias_clause { RangeSubselect *n = makeNode(RangeSubselect); @@ -10736,7 +11543,7 @@ table_ref: relation_expr opt_alias_clause n->lateral = true; n->subquery = $2; n->alias = $3; - /* same coment as above */ + /* same comment as above */ if ($3 == NULL) { if (IsA($2, SelectStmt) && @@ -10941,30 +11748,30 @@ join_qual: USING '(' name_list ')' { $$ = (Node *) $3; } relation_expr: qualified_name { - /* default inheritance */ + /* inheritance query, implicitly */ $$ = $1; - $$->inhOpt = INH_DEFAULT; + $$->inh = true; $$->alias = NULL; } | qualified_name '*' { - /* inheritance query */ + /* inheritance query, explicitly */ $$ = $1; - $$->inhOpt = INH_YES; + $$->inh = true; $$->alias = NULL; } | ONLY qualified_name { /* no inheritance */ $$ = $2; - $$->inhOpt = INH_NO; + $$->inh = false; $$->alias = NULL; } | ONLY '(' qualified_name ')' { /* no inheritance, SQL99-style syntax */ $$ = $3; - $$->inhOpt = INH_NO; + $$->inh = false; $$->alias = NULL; } ; @@ -11123,6 +11930,7 @@ TableFuncElement: ColId Typename opt_collate_clause n->is_local = true; n->is_not_null = false; n->is_from_type = false; + n->is_from_parent = false; n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; @@ -11134,6 +11942,166 @@ TableFuncElement: ColId Typename opt_collate_clause } ; +/* + * XMLTABLE + */ +xmltable: + XMLTABLE '(' c_expr xmlexists_argument COLUMNS xmltable_column_list ')' + { + RangeTableFunc *n = makeNode(RangeTableFunc); + n->rowexpr = $3; + n->docexpr = $4; + n->columns = $6; + n->namespaces = NIL; + n->location = @1; + $$ = (Node *)n; + } + | XMLTABLE '(' XMLNAMESPACES '(' xml_namespace_list ')' ',' + c_expr xmlexists_argument COLUMNS xmltable_column_list ')' + { + RangeTableFunc *n = makeNode(RangeTableFunc); + n->rowexpr = $8; + n->docexpr = $9; + n->columns = $11; + n->namespaces = $5; + n->location = @1; + $$ = (Node *)n; + } + ; + +xmltable_column_list: xmltable_column_el { $$ = list_make1($1); } + | xmltable_column_list ',' xmltable_column_el { $$ = lappend($1, $3); } + ; + +xmltable_column_el: + ColId Typename + { + RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); + + fc->colname = $1; + fc->for_ordinality = false; + fc->typeName = $2; + fc->is_not_null = false; + fc->colexpr = NULL; + fc->coldefexpr = NULL; + fc->location = @1; + + $$ = (Node *) fc; + } + | ColId Typename xmltable_column_option_list + { + RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); + ListCell *option; + bool nullability_seen = false; + + fc->colname = $1; + fc->typeName = $2; + fc->for_ordinality = false; + fc->is_not_null = false; + fc->colexpr = NULL; + fc->coldefexpr = NULL; + fc->location = @1; + + foreach(option, $3) + { + DefElem *defel = (DefElem *) lfirst(option); + + if (strcmp(defel->defname, "default") == 0) + { + if (fc->coldefexpr != NULL) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("only one DEFAULT value is allowed"), + parser_errposition(defel->location))); + fc->coldefexpr = defel->arg; + } + else if (strcmp(defel->defname, "path") == 0) + { + if (fc->colexpr != NULL) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("only one PATH value per column is allowed"), + parser_errposition(defel->location))); + fc->colexpr = defel->arg; + } + else if (strcmp(defel->defname, "is_not_null") == 0) + { + if (nullability_seen) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("conflicting or redundant NULL / NOT NULL declarations for column \"%s\"", fc->colname), + parser_errposition(defel->location))); + fc->is_not_null = intVal(defel->arg); + nullability_seen = true; + } + else + { + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("unrecognized column option \"%s\"", + defel->defname), + parser_errposition(defel->location))); + } + } + $$ = (Node *) fc; + } + | ColId FOR ORDINALITY + { + RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); + + fc->colname = $1; + fc->for_ordinality = true; + /* other fields are ignored, initialized by makeNode */ + fc->location = @1; + + $$ = (Node *) fc; + } + ; + +xmltable_column_option_list: + xmltable_column_option_el + { $$ = list_make1($1); } + | xmltable_column_option_list xmltable_column_option_el + { $$ = lappend($1, $2); } + ; + +xmltable_column_option_el: + IDENT b_expr + { $$ = makeDefElem($1, $2, @1); } + | DEFAULT b_expr + { $$ = makeDefElem("default", $2, @1); } + | NOT NULL_P + { $$ = makeDefElem("is_not_null", (Node *) makeInteger(true), @1); } + | NULL_P + { $$ = makeDefElem("is_not_null", (Node *) makeInteger(false), @1); } + ; + +xml_namespace_list: + xml_namespace_el + { $$ = list_make1($1); } + | xml_namespace_list ',' xml_namespace_el + { $$ = lappend($1, $3); } + ; + +xml_namespace_el: + b_expr AS ColLabel + { + $$ = makeNode(ResTarget); + $$->name = $3; + $$->indirection = NIL; + $$->val = $1; + $$->location = @1; + } + | DEFAULT b_expr + { + $$ = makeNode(ResTarget); + $$->name = NULL; + $$->indirection = NIL; + $$->val = $2; + $$->location = @1; + } + ; + /***************************************************************************** * * Type syntax @@ -11430,28 +12398,20 @@ ConstCharacter: CharacterWithLength } ; -CharacterWithLength: character '(' Iconst ')' opt_charset +CharacterWithLength: character '(' Iconst ')' { - if (($5 != NULL) && (strcmp($5, "sql_text") != 0)) - $1 = psprintf("%s_%s", $1, $5); - $$ = SystemTypeName($1); $$->typmods = list_make1(makeIntConst($3, @3)); $$->location = @1; } ; -CharacterWithoutLength: character opt_charset +CharacterWithoutLength: character { - if (($2 != NULL) && (strcmp($2, "sql_text") != 0)) - $1 = psprintf("%s_%s", $1, $2); - $$ = SystemTypeName($1); - /* char defaults to char(1), varchar to no limit */ if (strcmp($1, "bpchar") == 0) $$->typmods = list_make1(makeIntConst(1, -1)); - $$->location = @1; } ; @@ -11475,11 +12435,6 @@ opt_varying: | /*EMPTY*/ { $$ = FALSE; } ; -opt_charset: - CHARACTER SET ColId { $$ = $3; } - | /*EMPTY*/ { $$ = NULL; } - ; - /* * SQL date/time types */ @@ -12031,6 +12986,20 @@ a_expr: c_expr { $$ = $1; } list_make1($1), @2), @2); } + | DEFAULT + { + /* + * The SQL spec only allows DEFAULT in "contextually typed + * expressions", but for us, it's easier to allow it in + * any a_expr and then throw error during parse analysis + * if it's in an inappropriate context. This way also + * lets us say something smarter than "syntax error". + */ + SetToDefault *n = makeNode(SetToDefault); + /* parse analysis will fill in the rest */ + n->location = @1; + $$ = (Node *)n; + } ; /* @@ -12150,7 +13119,10 @@ c_expr: columnref { $$ = $1; } * AEXPR_PAREN nodes wrapping all explicitly * parenthesized subexpressions; this prevents bogus * warnings from being issued when the ordering has - * been forced by parentheses. + * been forced by parentheses. Take care that an + * AEXPR_PAREN node has the same exprLocation as its + * child, so as not to cause surprising changes in + * error cursor positioning. * * In principle we should not be relying on a GUC to * decide whether to insert AEXPR_PAREN nodes. @@ -12159,7 +13131,8 @@ c_expr: columnref { $$ = $1; } * we'd just as soon not waste cycles on dummy parse * nodes if we don't have to. */ - $$ = (Node *) makeA_Expr(AEXPR_PAREN, NIL, $2, NULL, @1); + $$ = (Node *) makeA_Expr(AEXPR_PAREN, NIL, $2, NULL, + exprLocation($2)); } else $$ = $2; @@ -12227,8 +13200,7 @@ c_expr: columnref { $$ = $1; } } | ARRAY array_expr { - A_ArrayExpr *n = (A_ArrayExpr *) $2; - Assert(IsA(n, A_ArrayExpr)); + A_ArrayExpr *n = castNode(A_ArrayExpr, $2); /* point outermost A_ArrayExpr to the ARRAY keyword */ n->location = @1; $$ = (Node *)n; @@ -12393,143 +13365,63 @@ func_expr_common_subexpr: } | CURRENT_DATE { - /* - * Translate as "'now'::text::date". - * - * We cannot use "'now'::date" because coerce_type() will - * immediately reduce that to a constant representing - * today's date. We need to delay the conversion until - * runtime, else the wrong things will happen when - * CURRENT_DATE is used in a column default value or rule. - * - * This could be simplified if we had a way to generate - * an expression tree representing runtime application - * of type-input conversion functions. (As of PG 7.3 - * that is actually possible, but not clear that we want - * to rely on it.) - * - * The token location is attached to the run-time - * typecast, not to the Const, for the convenience of - * pg_stat_statements (which doesn't want these constructs - * to appear to be replaceable constants). - */ - Node *n; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - $$ = makeTypeCast(n, SystemTypeName("date"), @1); + $$ = makeSQLValueFunction(SVFOP_CURRENT_DATE, -1, @1); } | CURRENT_TIME { - /* - * Translate as "'now'::text::timetz". - * See comments for CURRENT_DATE. - */ - Node *n; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - $$ = makeTypeCast(n, SystemTypeName("timetz"), @1); + $$ = makeSQLValueFunction(SVFOP_CURRENT_TIME, -1, @1); } | CURRENT_TIME '(' Iconst ')' { - /* - * Translate as "'now'::text::timetz(n)". - * See comments for CURRENT_DATE. - */ - Node *n; - TypeName *d; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - d = SystemTypeName("timetz"); - d->typmods = list_make1(makeIntConst($3, @3)); - $$ = makeTypeCast(n, d, @1); + $$ = makeSQLValueFunction(SVFOP_CURRENT_TIME_N, $3, @1); } | CURRENT_TIMESTAMP { - /* - * Translate as "now()", since we have a function that - * does exactly what is needed. - */ - $$ = (Node *) makeFuncCall(SystemFuncName("now"), NIL, @1); + $$ = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP, -1, @1); } | CURRENT_TIMESTAMP '(' Iconst ')' { - /* - * Translate as "'now'::text::timestamptz(n)". - * See comments for CURRENT_DATE. - */ - Node *n; - TypeName *d; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - d = SystemTypeName("timestamptz"); - d->typmods = list_make1(makeIntConst($3, @3)); - $$ = makeTypeCast(n, d, @1); + $$ = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP_N, $3, @1); } | LOCALTIME { - /* - * Translate as "'now'::text::time". - * See comments for CURRENT_DATE. - */ - Node *n; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - $$ = makeTypeCast((Node *)n, SystemTypeName("time"), @1); + $$ = makeSQLValueFunction(SVFOP_LOCALTIME, -1, @1); } | LOCALTIME '(' Iconst ')' { - /* - * Translate as "'now'::text::time(n)". - * See comments for CURRENT_DATE. - */ - Node *n; - TypeName *d; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - d = SystemTypeName("time"); - d->typmods = list_make1(makeIntConst($3, @3)); - $$ = makeTypeCast((Node *)n, d, @1); + $$ = makeSQLValueFunction(SVFOP_LOCALTIME_N, $3, @1); } | LOCALTIMESTAMP { - /* - * Translate as "'now'::text::timestamp". - * See comments for CURRENT_DATE. - */ - Node *n; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - $$ = makeTypeCast(n, SystemTypeName("timestamp"), @1); + $$ = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP, -1, @1); } | LOCALTIMESTAMP '(' Iconst ')' { - /* - * Translate as "'now'::text::timestamp(n)". - * See comments for CURRENT_DATE. - */ - Node *n; - TypeName *d; - n = makeStringConstCast("now", -1, SystemTypeName("text")); - d = SystemTypeName("timestamp"); - d->typmods = list_make1(makeIntConst($3, @3)); - $$ = makeTypeCast(n, d, @1); + $$ = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP_N, $3, @1); } | CURRENT_ROLE { - $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); + $$ = makeSQLValueFunction(SVFOP_CURRENT_ROLE, -1, @1); } | CURRENT_USER { - $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); + $$ = makeSQLValueFunction(SVFOP_CURRENT_USER, -1, @1); } | SESSION_USER { - $$ = (Node *) makeFuncCall(SystemFuncName("session_user"), NIL, @1); + $$ = makeSQLValueFunction(SVFOP_SESSION_USER, -1, @1); } | USER { - $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); + $$ = makeSQLValueFunction(SVFOP_USER, -1, @1); } | CURRENT_CATALOG { - $$ = (Node *) makeFuncCall(SystemFuncName("current_database"), NIL, @1); + $$ = makeSQLValueFunction(SVFOP_CURRENT_CATALOG, -1, @1); } | CURRENT_SCHEMA { - $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); + $$ = makeSQLValueFunction(SVFOP_CURRENT_SCHEMA, -1, @1); } | CAST '(' a_expr AS Typename ')' { $$ = makeTypeCast($3, $5, @1); } @@ -13366,36 +14258,6 @@ opt_asymmetric: ASYMMETRIC | /*EMPTY*/ ; -/* - * The SQL spec defines "contextually typed value expressions" and - * "contextually typed row value constructors", which for our purposes - * are the same as "a_expr" and "row" except that DEFAULT can appear at - * the top level. - */ - -ctext_expr: - a_expr { $$ = (Node *) $1; } - | DEFAULT - { - SetToDefault *n = makeNode(SetToDefault); - n->location = @1; - $$ = (Node *) n; - } - ; - -ctext_expr_list: - ctext_expr { $$ = list_make1($1); } - | ctext_expr_list ',' ctext_expr { $$ = lappend($1, $3); } - ; - -/* - * We should allow ROW '(' ctext_expr_list ')' too, but that seems to require - * making VALUES a fully reserved word, which will probably break more apps - * than allowing the noise-word is worth. - */ -ctext_row: '(' ctext_expr_list ')' { $$ = $2; } - ; - /***************************************************************************** * @@ -13707,10 +14569,10 @@ RoleSpec: NonReservedWord } else { - n = (RoleSpec *) makeRoleSpec(ROLESPEC_CSTRING, @1); + n = makeRoleSpec(ROLESPEC_CSTRING, @1); n->rolename = pstrdup($1); } - $$ = (Node *) n; + $$ = n; } | CURRENT_USER { @@ -13802,6 +14664,7 @@ unreserved_keyword: | ASSERTION | ASSIGNMENT | AT + | ATTACH | ATTRIBUTE | BACKWARD | BEFORE @@ -13818,6 +14681,7 @@ unreserved_keyword: | CLASS | CLOSE | CLUSTER + | COLUMNS | COMMENT | COMMENTS | COMMIT @@ -13848,6 +14712,7 @@ unreserved_keyword: | DELIMITER | DELIMITERS | DEPENDS + | DETACH | DICTIONARY | DISABLE_P | DISCARD @@ -13877,6 +14742,7 @@ unreserved_keyword: | FORWARD | FUNCTION | FUNCTIONS + | GENERATED | GLOBAL | GRANTED | HANDLER @@ -13928,6 +14794,7 @@ unreserved_keyword: | MOVE | NAME_P | NAMES + | NEW | NEXT | NO | NOTHING @@ -13938,11 +14805,13 @@ unreserved_keyword: | OF | OFF | OIDS + | OLD | OPERATOR | OPTION | OPTIONS | ORDINALITY | OVER + | OVERRIDING | OWNED | OWNER | PARALLEL @@ -13962,6 +14831,7 @@ unreserved_keyword: | PROCEDURAL | PROCEDURE | PROGRAM + | PUBLICATION | QUOTE | RANGE | READ @@ -13969,6 +14839,7 @@ unreserved_keyword: | RECHECK | RECURSIVE | REF + | REFERENCING | REFRESH | REINDEX | RELATIVE_P @@ -13989,6 +14860,7 @@ unreserved_keyword: | RULE | SAVEPOINT | SCHEMA + | SCHEMAS | SCROLL | SEARCH | SECOND_P @@ -14016,6 +14888,7 @@ unreserved_keyword: | STORAGE | STRICT_P | STRIP_P + | SUBSCRIPTION | SYSID | SYSTEM_P | TABLES @@ -14116,10 +14989,12 @@ col_name_keyword: | XMLELEMENT | XMLEXISTS | XMLFOREST + | XMLNAMESPACES | XMLPARSE | XMLPI | XMLROOT | XMLSERIALIZE + | XMLTABLE ; /* Type/function identifier --- keywords that can be type or function names. @@ -14257,6 +15132,33 @@ base_yyerror(YYLTYPE *yylloc, core_yyscan_t yyscanner, const char *msg) parser_yyerror(msg); } +static RawStmt * +makeRawStmt(Node *stmt, int stmt_location) +{ + RawStmt *rs = makeNode(RawStmt); + + rs->stmt = stmt; + rs->stmt_location = stmt_location; + rs->stmt_len = 0; /* might get changed later */ + return rs; +} + +/* Adjust a RawStmt to reflect that it doesn't run to the end of the string */ +static void +updateRawStmtEnd(RawStmt *rs, int end_location) +{ + /* + * If we already set the length, don't change it. This is for situations + * like "select foo ;; select bar" where the same statement will be last + * in the string for more than one semicolon. + */ + if (rs->stmt_len > 0) + return; + + /* OK, update length of RawStmt */ + rs->stmt_len = end_location - rs->stmt_location; +} + static Node * makeColumnRef(char *colname, List *indirection, int location, core_yyscan_t yyscanner) @@ -14309,7 +15211,7 @@ makeColumnRef(char *colname, List *indirection, return (Node *) c; } -static Node * +Node * makeTypeCast(Node *arg, TypeName *typename, int location) { TypeCast *n = makeNode(TypeCast); @@ -14331,7 +15233,7 @@ makeStringConst(char *str, int location) return (Node *)n; } -static Node * +Node * makeStringConstCast(char *str, int location, TypeName *typename) { Node *s = makeStringConst(str, location); @@ -14339,7 +15241,7 @@ makeStringConstCast(char *str, int location, TypeName *typename) return makeTypeCast(s, typename, -1); } -static Node * +Node * makeIntConst(int val, int location) { A_Const *n = makeNode(A_Const); @@ -14428,7 +15330,7 @@ makeBoolAConst(bool state, int location) /* makeRoleSpec * Create a RoleSpec with the given type */ -static Node * +static RoleSpec * makeRoleSpec(RoleSpecType type, int location) { RoleSpec *spec = makeNode(RoleSpec); @@ -14436,7 +15338,7 @@ makeRoleSpec(RoleSpecType type, int location) spec->roletype = type; spec->location = location; - return (Node *) spec; + return spec; } /* check_qualified_name --- check the result of qualified_name production @@ -14772,6 +15674,18 @@ makeAArrayExpr(List *elements, int location) return (Node *) n; } +static Node * +makeSQLValueFunction(SQLValueFunctionOp op, int32 typmod, int location) +{ + SQLValueFunction *svf = makeNode(SQLValueFunction); + + svf->op = op; + /* svf->type will be filled during parse analysis */ + svf->typmod = typmod; + svf->location = location; + return (Node *) svf; +} + static Node * makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args, int location) @@ -14829,7 +15743,7 @@ TableFuncTypeName(List *columns) { FunctionParameter *p = (FunctionParameter *) linitial(columns); - result = (TypeName *) copyObject(p->argType); + result = copyObject(p->argType); } else result = SystemTypeName("record"); @@ -15063,15 +15977,3 @@ parser_init(base_yy_extra_type *yyext) yyext->parsetree = NIL; /* in case grammar forgets to set it */ } -/* - * Create a DefElem setting "oids" to the specified value. - */ -static DefElem * -defWithOids(bool value) -{ - DefElem *f = makeNode(DefElem); - - f->defname = "oids"; - f->arg = (Node *) makeInteger(value); - return f; -} diff --git a/src/parser/keywords.c b/src/parser/keywords.c index 34ac6bb34..8c148d330 100644 --- a/src/parser/keywords.c +++ b/src/parser/keywords.c @@ -4,8 +4,8 @@ * lexical token lookup for key words in PostgreSQL * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -15,16 +15,95 @@ *------------------------------------------------------------------------- */ +#include #include "parsenodes.h" +#ifndef FRONTEND + #include "gramparse.h" /* required before parser/parse.h! */ -#include "keywords.h" -#include "gram.h" #define PG_KEYWORD(a,b,c) {a,b,c}, +#else + +#include "keywords.h" + +/* + * We don't need the token number for frontend uses, so leave it out to avoid + * requiring backend headers that won't compile cleanly here. + */ +#define PG_KEYWORD(a,b,c) {a,0,c}, + +#endif /* FRONTEND */ + +#include "gram.h" const ScanKeyword ScanKeywords[] = { #include "kwlist.h" }; const int NumScanKeywords = lengthof(ScanKeywords); + +/* + * ScanKeywordLookup - see if a given word is a keyword + * + * Returns a pointer to the ScanKeyword table entry, or NULL if no match. + * + * The match is done case-insensitively. Note that we deliberately use a + * dumbed-down case conversion that will only translate 'A'-'Z' into 'a'-'z', + * even if we are in a locale where tolower() would produce more or different + * translations. This is to conform to the SQL99 spec, which says that + * keywords are to be matched in this way even though non-keyword identifiers + * receive a different case-normalization mapping. + */ +const ScanKeyword * +ScanKeywordLookup(const char *text, + const ScanKeyword *keywords, + int num_keywords) +{ + int len, + i; + char word[NAMEDATALEN]; + const ScanKeyword *low; + const ScanKeyword *high; + + len = strlen(text); + /* We assume all keywords are shorter than NAMEDATALEN. */ + if (len >= NAMEDATALEN) + return NULL; + + /* + * Apply an ASCII-only downcasing. We must not use tolower() since it may + * produce the wrong translation in some locales (eg, Turkish). + */ + for (i = 0; i < len; i++) + { + char ch = text[i]; + + if (ch >= 'A' && ch <= 'Z') + ch += 'a' - 'A'; + word[i] = ch; + } + word[len] = '\0'; + + /* + * Now do a binary search using plain strcmp() comparison. + */ + low = keywords; + high = keywords + (num_keywords - 1); + while (low <= high) + { + const ScanKeyword *middle; + int difference; + + middle = low + (high - low) / 2; + difference = strcmp(middle->name, word); + if (difference == 0) + return middle; + else if (difference < 0) + low = middle + 1; + else + high = middle - 1; + } + + return NULL; +} diff --git a/src/parser/kwlookup.c b/src/parser/kwlookup.c deleted file mode 100644 index 55224def2..000000000 --- a/src/parser/kwlookup.c +++ /dev/null @@ -1,88 +0,0 @@ -/*------------------------------------------------------------------------- - * - * kwlookup.c - * lexical token lookup for key words in PostgreSQL - * - * NB - this file is also used by ECPG and several frontend programs in - * src/bin/ including pg_dump and psql - * - * Portions Copyright (c) 2003-2015, PgPool Global Development Group - * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * - * IDENTIFICATION - * src/backend/parser/kwlookup.c - * - *------------------------------------------------------------------------- - */ - -/* use c.h so this can be built as either frontend or backend */ -#include -#include "pool_parser.h" -#include "keywords.h" - -/* - * ScanKeywordLookup - see if a given word is a keyword - * - * Returns a pointer to the ScanKeyword table entry, or NULL if no match. - * - * The match is done case-insensitively. Note that we deliberately use a - * dumbed-down case conversion that will only translate 'A'-'Z' into 'a'-'z', - * even if we are in a locale where tolower() would produce more or different - * translations. This is to conform to the SQL99 spec, which says that - * keywords are to be matched in this way even though non-keyword identifiers - * receive a different case-normalization mapping. - */ -const ScanKeyword * -ScanKeywordLookup(const char *text, - const ScanKeyword *keywords, - int num_keywords) -{ - int len, - i; - char word[NAMEDATALEN]; - const ScanKeyword *low; - const ScanKeyword *high; - - len = strlen(text); - /* We assume all keywords are shorter than NAMEDATALEN. */ - if (len >= NAMEDATALEN) - return NULL; - - /* - * Apply an ASCII-only downcasing. We must not use tolower() since it may - * produce the wrong translation in some locales (eg, Turkish). - */ - for (i = 0; i < len; i++) - { - char ch = text[i]; - - if (ch >= 'A' && ch <= 'Z') - ch += 'a' - 'A'; - word[i] = ch; - } - word[len] = '\0'; - - /* - * Now do a binary search using plain strcmp() comparison. - */ - low = keywords; - high = keywords + (num_keywords - 1); - while (low <= high) - { - const ScanKeyword *middle; - int difference; - - middle = low + (high - low) / 2; - difference = strcmp(middle->name, word); - if (difference == 0) - return middle; - else if (difference < 0) - low = middle + 1; - else - high = middle - 1; - } - - return NULL; -} diff --git a/src/parser/list.c b/src/parser/list.c index 21775223b..ac546f9ba 100644 --- a/src/parser/list.c +++ b/src/parser/list.c @@ -4,8 +4,8 @@ * implementation for PostgreSQL generic linked list package * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -54,7 +54,7 @@ check_list_invariants(const List *list) } #else #define check_list_invariants(l) -#endif /* USE_ASSERT_CHECKING */ +#endif /* USE_ASSERT_CHECKING */ /* * Return a freshly allocated List. Since empty non-NIL lists are diff --git a/src/parser/makefuncs.c b/src/parser/makefuncs.c index 2222331bc..f8ce3604c 100644 --- a/src/parser/makefuncs.c +++ b/src/parser/makefuncs.c @@ -4,8 +4,8 @@ * creator functions for primitive nodes. The functions here are for * the most frequently created nodes. * - * Portions Copyright (c) 2003-2015, PgPool Global Development Group - * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -211,10 +211,10 @@ makeWholeRowVar(RangeTblEntry *rte, default: /* - * RTE is a join, subselect, or VALUES. We represent this as a - * whole-row Var of RECORD type. (Note that in most cases the Var - * will be expanded to a RowExpr during planning, but that is not - * our concern here.) + * RTE is a join, subselect, tablefunc, or VALUES. We represent + * this as a whole-row Var of RECORD type. (Note that in most + * cases the Var will be expanded to a RowExpr during planning, + * but that is not our concern here.) */ result = makeVar(varno, InvalidAttrNumber, @@ -421,7 +421,7 @@ makeRangeVar(char *schemaname, char *relname, int location) r->catalogname = NULL; r->schemaname = schemaname; r->relname = relname; - r->inhOpt = INH_DEFAULT; + r->inh = true; r->relpersistence = RELPERSISTENCE_PERMANENT; r->alias = NULL; r->location = location; @@ -474,6 +474,37 @@ makeTypeNameFromOid(Oid typeOid, int32 typmod) return n; } +/* + * makeColumnDef - + * build a ColumnDef node to represent a simple column definition. + * + * Type and collation are specified by OID. + * Other properties are all basic to start with. + */ +ColumnDef * +makeColumnDef(const char *colname, Oid typeOid, int32 typmod, Oid collOid) +{ + ColumnDef *n = makeNode(ColumnDef); + + n->colname = pstrdup(colname); + n->typeName = makeTypeNameFromOid(typeOid, typmod); + n->inhcount = 0; + n->is_local = true; + n->is_not_null = false; + n->is_from_type = false; + n->is_from_parent = false; + n->storage = 0; + n->raw_default = NULL; + n->cooked_default = NULL; + n->collClause = NULL; + n->collOid = collOid; + n->constraints = NIL; + n->fdwoptions = NIL; + n->location = -1; + + return n; +} + /* * makeFuncExpr - * build an expression tree representing a function call. @@ -489,8 +520,8 @@ makeFuncExpr(Oid funcid, Oid rettype, List *args, funcexpr = makeNode(FuncExpr); funcexpr->funcid = funcid; funcexpr->funcresulttype = rettype; - funcexpr->funcretset = false; /* only allowed case here */ - funcexpr->funcvariadic = false; /* only allowed case here */ + funcexpr->funcretset = false; /* only allowed case here */ + funcexpr->funcvariadic = false; /* only allowed case here */ funcexpr->funcformat = fformat; funcexpr->funccollid = funccollid; funcexpr->inputcollid = inputcollid; @@ -508,7 +539,7 @@ makeFuncExpr(Oid funcid, Oid rettype, List *args, * and no special action. */ DefElem * -makeDefElem(char *name, Node *arg) +makeDefElem(char *name, Node *arg, int location) { DefElem *res = makeNode(DefElem); @@ -516,6 +547,7 @@ makeDefElem(char *name, Node *arg) res->defname = name; res->arg = arg; res->defaction = DEFELEM_UNSPEC; + res->location = location; return res; } @@ -526,7 +558,7 @@ makeDefElem(char *name, Node *arg) */ DefElem * makeDefElemExtended(char *nameSpace, char *name, Node *arg, - DefElemAction defaction) + DefElemAction defaction, int location) { DefElem *res = makeNode(DefElem); @@ -534,6 +566,7 @@ makeDefElemExtended(char *nameSpace, char *name, Node *arg, res->defname = name; res->arg = arg; res->defaction = defaction; + res->location = location; return res; } diff --git a/src/parser/nodes.c b/src/parser/nodes.c index 16e38f11b..62f15f73b 100644 --- a/src/parser/nodes.c +++ b/src/parser/nodes.c @@ -4,8 +4,8 @@ * support code for nodes (now that we have removed the home-brew * inheritance system, our support code for nodes is much simpler) * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * diff --git a/src/parser/outfuncs.c b/src/parser/outfuncs.c index bc9888ffb..2630086cd 100644 --- a/src/parser/outfuncs.c +++ b/src/parser/outfuncs.c @@ -3,8 +3,8 @@ * outfuncs.c * Output functions for Postgres tree nodes. * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -183,7 +183,7 @@ static void _outSetRest(String *str, VariableSetStmt *node); static void _outSetTransactionModeList(String *str, List *list); static void _outAlterTableCmd(String *str, AlterTableCmd *node); static void _outOptSeqList(String *str, List *options); -static void _outFuncWithArgs(String *str, FuncWithArgs *node); +static void _outObjectWithArgs(String *str, ObjectWithArgs *node); static void _outFunctionParameter(String *str, FunctionParameter *node); static void _outPrivilegeList(String *str, List *list); static void _outFuncOptList(String *str, List *list); @@ -358,11 +358,6 @@ _outRangeVar(String *str, RangeVar *node) if (node->alias) _outNode(str, node->alias); - - if (node->inhOpt == INH_YES) - { - string_append_char(str, " * "); - } } static void @@ -984,6 +979,11 @@ _outIndexStmt(String *str, IndexStmt *node) } } +static void +_outCreateStatsStmt(String *str, CreateStatsStmt *node) +{ +} + static void _outNotifyStmt(String *str, NotifyStmt *node) { @@ -1288,6 +1288,11 @@ _outLockingClause(String *str, LockingClause *node) } } +static void +_outTriggerTransition(String *str, TriggerTransition *node) +{ +} + static void _outColumnDef(String *str, ColumnDef *node) { @@ -2753,7 +2758,7 @@ static void _outRenameStmt(String *str, RenameStmt *node) case OBJECT_FUNCTION: string_append_char(str, "FUNCTION "); - foreach (lc, node->object) + foreach (lc, castNode(List, node->object)) { Node *n = lfirst(lc); if (IsA(n, String)) @@ -2772,7 +2777,6 @@ static void _outRenameStmt(String *str, RenameStmt *node) } string_append_char(str, "("); - _outNode(str, node->objarg); string_append_char(str, ")"); string_append_char(str, " RENAME TO \""); string_append_char(str, node->newname); @@ -3777,15 +3781,15 @@ _outCreateOpClassItem(String *str, CreateOpClassItem *node) snprintf(buf, 16, "%d", node->number); string_append_char(str, buf); string_append_char(str, " "); - _outOperatorName(str, node->name); + _outOperatorName(str, node->name->objname); - if (node->args != NIL) + if (node->name->objname != NIL) { string_append_char(str, "("); - _outNode(str, node->args); + _outNode(str, node->name->objname); string_append_char(str, ")"); } - /* XXX + /* if (node->recheck == TRUE) string_append_char(str, " RECHECK"); */ @@ -3796,9 +3800,9 @@ _outCreateOpClassItem(String *str, CreateOpClassItem *node) snprintf(buf, 16, "%d", node->number); string_append_char(str, buf); string_append_char(str, " "); - _outFuncName(str, node->name); + _outFuncName(str, node->name->objname); string_append_char(str, "("); - _outNode(str, node->args); + _outNode(str, node->name->objname); string_append_char(str, ")"); break; @@ -3991,7 +3995,6 @@ _outDropStmt(String *str, DropStmt *node) objname = linitial(node->objects); _outNode(str, linitial(objname)); string_append_char(str, " AS "); - objname = linitial(node->arguments); _outNode(str, linitial(objname)); string_append_char(str, ")"); break; @@ -4003,7 +4006,6 @@ _outDropStmt(String *str, DropStmt *node) objname = linitial(node->objects); _outIdList(str, objname); string_append_char(str, " USING "); - objname = linitial(node->arguments); _outIdList(str, objname); break; @@ -4129,11 +4131,11 @@ _outFunctionParameter(String *str, FunctionParameter *node) } static void -_outFuncWithArgs(String *str, FuncWithArgs *node) +_outObjectWithArgs(String *str, ObjectWithArgs *node) { - _outFuncName(str, node->funcname); + _outFuncName(str, node->objname); string_append_char(str, "("); - _outNode(str, node->funcargs); + _outNode(str, node->objargs); string_append_char(str, ")"); } @@ -4405,16 +4407,18 @@ _outAlterObjectSchemaStmt(String *str, AlterObjectSchemaStmt *node) { string_append_char(str, "ALTER "); + ObjectWithArgs *owa = castNode(ObjectWithArgs, node); + switch (node->objectType) { case OBJECT_AGGREGATE: string_append_char(str, "AGGREGATE "); - _outFuncName(str, node->object); + _outFuncName(str, owa->objname); string_append_char(str, "("); - if (lfirst(list_head(node->objarg)) == NULL) + if (lfirst(list_head(owa->objargs)) == NULL) string_append_char(str, "*"); else - _outNode(str, lfirst(list_head(node->objarg))); + _outNode(str, lfirst(list_head(owa->objargs))); string_append_char(str, ") SET SCHAME \""); string_append_char(str, node->newschema); string_append_char(str, "\""); @@ -4422,7 +4426,7 @@ _outAlterObjectSchemaStmt(String *str, AlterObjectSchemaStmt *node) case OBJECT_DOMAIN: string_append_char(str, "DOMAIN "); - _outFuncName(str, node->object); + _outFuncName(str, owa->objname); string_append_char(str, " SET SCHEMA \""); string_append_char(str, node->newschema); string_append_char(str, "\""); @@ -4430,9 +4434,8 @@ _outAlterObjectSchemaStmt(String *str, AlterObjectSchemaStmt *node) case OBJECT_FUNCTION: string_append_char(str, "FUNCTION "); - _outFuncName(str, node->object); + _outFuncName(str, owa->objname); string_append_char(str, "("); - _outNode(str, node->objarg); string_append_char(str, ") SET SCHEMA \""); string_append_char(str, node->newschema); string_append_char(str, "\""); @@ -4456,7 +4459,7 @@ _outAlterObjectSchemaStmt(String *str, AlterObjectSchemaStmt *node) case OBJECT_TYPE: string_append_char(str, "TYPE "); - _outFuncName(str, node->object); + _outFuncName(str, owa->objname); string_append_char(str, " SET SCHEMA \""); string_append_char(str, node->newschema); string_append_char(str, "\""); @@ -4472,16 +4475,18 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) { string_append_char(str, "ALTER "); + ObjectWithArgs *owa = castNode(ObjectWithArgs, node); + switch (node->objectType) { case OBJECT_AGGREGATE: string_append_char(str, "AGGREGATE "); - _outFuncName(str, node->object); + _outFuncName(str, owa->objname); string_append_char(str, "("); - if (lfirst(list_head(node->objarg)) == NULL) + if (lfirst(list_head(owa->objargs)) == NULL) string_append_char(str, "*"); else - _outNode(str, lfirst(list_head(node->objarg))); + _outNode(str, lfirst(list_head(owa->objargs))); string_append_char(str, ") OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4489,7 +4494,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_CONVERSION: string_append_char(str, "CONVERSION \""); - string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, strVal(linitial(owa->objname))); string_append_char(str, "\" OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4497,7 +4502,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_DATABASE: string_append_char(str, "DATABASE \""); - string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, strVal(linitial(owa->objname))); string_append_char(str, "\" OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4505,7 +4510,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_DOMAIN: string_append_char(str, "DOMAIN \""); - string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, strVal(linitial(owa->objname))); string_append_char(str, "\" OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4513,9 +4518,9 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_FUNCTION: string_append_char(str, "FUNCTION "); - _outFuncName(str, node->object); + _outFuncName(str, owa->objname); string_append_char(str, "("); - _outNode(str, node->objarg); + _outNode(str, owa->objargs); string_append_char(str, ") OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4523,7 +4528,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_LANGUAGE: string_append_char(str, "LANGUAGE \""); - string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, strVal(linitial(owa->objname))); string_append_char(str, "\" OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4531,9 +4536,8 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_OPERATOR: string_append_char(str, "OPERATOR "); - _outOperatorName(str, node->object); + _outOperatorName(str, owa->objname); string_append_char(str, "("); - _outOperatorArgTypes(str, node->objarg); string_append_char(str, ") OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4541,9 +4545,9 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_OPCLASS: string_append_char(str, "OPERATOR CLASS "); - _outFuncName(str, node->object); + _outFuncName(str, owa->objname); string_append_char(str, " USING "); - string_append_char(str, strVal(linitial(node->objarg))); + string_append_char(str, strVal(linitial(owa->objargs))); string_append_char(str, " OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4551,9 +4555,9 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_OPFAMILY: string_append_char(str, "OPERATOR FAMILY "); - _outFuncName(str, node->object); + _outFuncName(str, owa->objname); string_append_char(str, " USING "); - string_append_char(str, strVal(linitial(node->objarg))); + string_append_char(str, strVal(linitial(owa->objargs))); string_append_char(str, " OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4561,7 +4565,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_SCHEMA: string_append_char(str, "SCHEMA \""); - string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, strVal(linitial(owa->objname))); string_append_char(str, "\" OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4569,7 +4573,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_TYPE: string_append_char(str, "TYPE \""); - string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, strVal(linitial(owa->objname))); string_append_char(str, "\" OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4577,7 +4581,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_TABLESPACE: string_append_char(str, "TABLESPACE \""); - string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, strVal(linitial(owa->objname))); string_append_char(str, "\" OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4585,7 +4589,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_TSDICTIONARY: string_append_char(str, "TEXT SEARCH DICTIONARY \""); - string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, strVal(linitial(owa->objname))); string_append_char(str, "\" OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4593,7 +4597,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_TSCONFIGURATION: string_append_char(str, "TEXT SEARCH CONFIGURATION \""); - string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, strVal(linitial(owa->objname))); string_append_char(str, "\" OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4601,7 +4605,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_FDW: string_append_char(str, "FOREIGN DATA WRAPPER \""); - string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, strVal(linitial(owa->objname))); string_append_char(str, "\" OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4609,7 +4613,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) case OBJECT_FOREIGN_SERVER: string_append_char(str, "SERVER \""); - string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, strVal(linitial(owa->objname))); string_append_char(str, "\" OWNER TO \""); _outNode(str, node->newowner); string_append_char(str, "\""); @@ -4990,14 +4994,16 @@ _outCommentStmt(String *str, CommentStmt *node) string_append_char(str, "COMMENT ON "); + ObjectWithArgs *owa = castNode(ObjectWithArgs, node); + switch (node->objtype) { case OBJECT_AGGREGATE: string_append_char(str, "AGGREGATE "); - _outFuncName(str, node->objname); + _outFuncName(str, owa->objname); string_append_char(str, "("); - t = linitial(node->objargs); + t = linitial(owa->objargs); if (t) _outNode(str, t); else @@ -5007,56 +5013,56 @@ _outCommentStmt(String *str, CommentStmt *node) case OBJECT_FUNCTION: string_append_char(str, "FUNCTION "); - _outFuncName(str, node->objname); + _outFuncName(str, owa->objname); string_append_char(str, "("); - _outNode(str, node->objargs); + _outNode(str, owa->objargs); string_append_char(str, ")"); break; case OBJECT_OPERATOR: string_append_char(str, "OPERATOR "); - _outOperatorName(str, node->objname); + _outOperatorName(str, owa->objname); string_append_char(str, "("); - _outOperatorArgTypes(str, node->objargs); + _outOperatorArgTypes(str, owa->objargs); string_append_char(str, ")"); break; case OBJECT_TABCONSTRAINT: case OBJECT_DOMCONSTRAINT: string_append_char(str, "CONSTRAINT \""); - v = lsecond(node->objname); + v = lsecond(owa->objname); string_append_char(str, v->val.str); string_append_char(str, "\" ON "); - _outFuncName(str, linitial(node->objargs)); + _outFuncName(str, linitial(owa->objargs)); break; case OBJECT_RULE: string_append_char(str, "RULE \""); - v = lsecond(node->objname); + v = lsecond(owa->objname); string_append_char(str, v->val.str); string_append_char(str, "\" ON "); - _outFuncName(str, linitial(node->objargs)); + _outFuncName(str, linitial(owa->objargs)); break; case OBJECT_TRIGGER: string_append_char(str, "TRIGGER \""); - v = lsecond(node->objname); + v = lsecond(owa->objname); string_append_char(str, v->val.str); string_append_char(str, "\" ON "); - _outFuncName(str, linitial(node->objargs)); + _outFuncName(str, linitial(owa->objargs)); break; case OBJECT_OPCLASS: string_append_char(str, "OPERATOR CLASS "); - _outFuncName(str, node->objname); + _outFuncName(str, owa->objname); string_append_char(str, " USING "); - v = linitial(node->objargs); + v = linitial(owa->objargs); string_append_char(str, v->val.str); break; case OBJECT_LARGEOBJECT: string_append_char(str, "LARGE OBJECT "); - v = linitial(node->objname); + v = linitial(owa->objname); if (IsA(v, String)) string_append_char(str, v->val.str); else if (IsA(v, Integer)) @@ -5068,15 +5074,15 @@ _outCommentStmt(String *str, CommentStmt *node) case OBJECT_CAST: string_append_char(str, "CAST ("); - _outNode(str, linitial(node->objname)); + _outNode(str, linitial(owa->objname)); string_append_char(str, " AS "); - _outNode(str, linitial(node->objargs)); + _outNode(str, linitial(owa->objargs)); string_append_char(str, ")"); break; case OBJECT_LANGUAGE: string_append_char(str, "LANGUAGE "); - _outFuncName(str, node->objname); + _outFuncName(str, owa->objname); break; default: @@ -5112,7 +5118,7 @@ _outCommentStmt(String *str, CommentStmt *node) default: break; } - _outFuncName(str, node->objname); + _outFuncName(str, owa->objname); break; } @@ -5172,6 +5178,16 @@ _outRangeTableSample(String *str, RangeTableSample *node) } } +static void +_outRangeTableFunc(String *str, RangeTableFunc *node) +{ +} + +static void +_outRangeTableFuncCol(String *str, RangeTableFuncCol *node) +{ +} + static void _outDiscardStmt(String *str, DiscardStmt *node) { @@ -5445,6 +5461,25 @@ _outOnConflictClause(String *str, OnConflictClause *node) } } +static void +_outPartitionElem(String *str, PartitionElem *node) +{ +} + +static void +_outPartitionSpec(String *str, PartitionSpec *node) +{ +} + +static void +_outPartitionBoundSpec(String *str, PartitionBoundSpec *node) +{ +} + +static void +_outPartitionRangeDatum(String *str, PartitionRangeDatum *node) +{ +} /* * _outNode - @@ -5586,6 +5621,11 @@ _outNode(String *str, void *obj) case T_MinMaxExpr: _outMinMaxExpr(str, obj); break; + /* + case T_SQLValueFunction: + _outSQLValueFunction(str, obj); + */ + break; case T_XmlExpr: _outXmlExpr(str, obj); break; @@ -5607,6 +5647,11 @@ _outNode(String *str, void *obj) case T_CurrentOfExpr: _outCurrentOfExpr(str, obj); break; + /* + case T_NextValueExpr: + _outNextValueExpr(str, obj); + break; + */ case T_InferenceElem: _outInferenceElem(str, obj); break; @@ -5645,6 +5690,9 @@ _outNode(String *str, void *obj) case T_IndexStmt: _outIndexStmt(str, obj); break; + case T_CreateStatsStmt: + _outCreateStatsStmt(str, obj); + break; case T_NotifyStmt: _outNotifyStmt(str, obj); break; @@ -5755,6 +5803,12 @@ _outNode(String *str, void *obj) case T_RangeTableSample: _outRangeTableSample(str, obj); break; + case T_RangeTableFunc: + _outRangeTableFunc(str, obj); + break; + case T_RangeTableFuncCol: + _outRangeTableFuncCol(str, obj); + break; case T_Constraint: _outConstraint(str, obj); break; @@ -5775,6 +5829,21 @@ _outNode(String *str, void *obj) case T_XmlSerialize: _outXmlSerialize(str, obj); break; + case T_TriggerTransition: + _outTriggerTransition(str, obj); + break; + case T_PartitionElem: + _outPartitionElem(str, obj); + break; + case T_PartitionSpec: + _outPartitionSpec(str, obj); + break; + case T_PartitionBoundSpec: + _outPartitionBoundSpec(str, obj); + break; + case T_PartitionRangeDatum: + _outPartitionRangeDatum(str, obj); + break; case T_InsertStmt: _outInsertStmt(str, obj); @@ -5932,8 +6001,8 @@ _outNode(String *str, void *obj) _outGrantStmt(str, obj); break; - case T_FuncWithArgs: - _outFuncWithArgs(str, obj); + case T_ObjectWithArgs: + _outObjectWithArgs(str, obj); break; case T_FunctionParameter: @@ -6082,3 +6151,4 @@ nodeToString(const void *obj) return p; } + diff --git a/src/parser/parser.c b/src/parser/parser.c index bc67392d2..6d0f2391b 100644 --- a/src/parser/parser.c +++ b/src/parser/parser.c @@ -10,8 +10,8 @@ * analyze.c and related files. * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -40,7 +40,8 @@ parse_version(const char *versionString); * raw_parser * Given a query in string form, do lexical and grammatical analysis. * - * Returns a list of raw (un-analyzed) parse trees. + * Returns a list of raw (un-analyzed) parse trees. The immediate elements + * of the list are always RawStmt nodes. * Set *error to true if there's any parse error. */ List * @@ -91,6 +92,20 @@ raw_parser(const char *str, bool *error) return yyextra.parsetree; } +/* + * XXX: Currently we only process the first element of the parse tree. + * rest of multiple statements are silently discarded. + */ +Node * +raw_parser2(List *parse_tree_list) +{ + Node *node = NULL; + RawStmt *rstmt; + + rstmt = (RawStmt *) lfirst(list_head(parse_tree_list)); + node = (Node *) rstmt->stmt; + return node; +} /* * Intermediate filter between parser and core lexer (core_yylex in scan.l). diff --git a/src/parser/scan.c b/src/parser/scan.c index a1f95be31..52574f26d 100644 --- a/src/parser/scan.c +++ b/src/parser/scan.c @@ -1,5 +1,4 @@ #line 2 "scan.c" -#line 2 "scan.l" /*------------------------------------------------------------------------- * * scan.l @@ -22,8 +21,8 @@ * Postgres 9.2, this check is made automatically by the Makefile.) * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -46,9 +45,7 @@ #include "utils/palloc.h" #include "utils/elog.h" - - -#line 52 "scan.c" +#line 49 "scan.c" #define YY_INT_ALIGNED short int @@ -56,8 +53,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -136,25 +133,13 @@ typedef unsigned int flex_uint32_t; #endif /* ! FLEXINT_H */ -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST +/* TODO: this is always defined, so inline it */ #define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) #else -#define yyconst +#define yynoreturn #endif /* Returned upon end-of-file. */ @@ -227,11 +212,17 @@ typedef void* yyscan_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -249,11 +240,6 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -266,7 +252,7 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - yy_size_t yy_buf_size; + int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. @@ -382,7 +368,7 @@ void core_yyfree (void * ,yyscan_t yyscanner ); /* Begin user sect3 */ -#define core_yywrap(n) 1 +#define core_yywrap(yyscanner) (/*CONSTCOND*/1) #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; @@ -394,14 +380,14 @@ typedef int yy_state_type; static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); -static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); +static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ - yyleng = (size_t) (yy_cp - yy_bp); \ + yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; @@ -450,7 +436,7 @@ static yyconst flex_int16_t yy_accept[290] = 28, 28, 28, 28, 55, 55, 28, 28, 0 } ; -static yyconst flex_int32_t yy_ec[256] = +static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 2, 4, 1, 1, 1, 1, 1, 1, 1, @@ -482,7 +468,7 @@ static yyconst flex_int32_t yy_ec[256] = 29, 29, 29, 29, 29 } ; -static yyconst flex_int32_t yy_meta[38] = +static yyconst YY_CHAR yy_meta[38] = { 0, 1, 1, 2, 2, 3, 4, 3, 5, 3, 3, 6, 1, 7, 3, 3, 1, 7, 8, 8, 1, @@ -490,7 +476,7 @@ static yyconst flex_int32_t yy_meta[38] = 10, 10, 10, 10, 11, 10, 10 } ; -static yyconst flex_int16_t yy_base[357] = +static yyconst flex_uint16_t yy_base[357] = { 0, 0, 0, 404, 403, 33, 52, 395, 394, 376, 375, 41, 42, 362, 361, 55, 75, 353, 352, 82, 117, @@ -576,7 +562,7 @@ static yyconst flex_int16_t yy_def[357] = 289, 289, 289, 289, 289, 289 } ; -static yyconst flex_int16_t yy_nxt[1202] = +static yyconst flex_uint16_t yy_nxt[1202] = { 0, 28, 29, 30, 29, 31, 32, 33, 34, 35, 33, 36, 37, 35, 35, 38, 39, 40, 41, 41, 42, @@ -1089,7 +1075,7 @@ extern void core_yyset_column(int column_no, yyscan_t yyscanner); * Note that xcstart must appear before operator, as explained above! * Also whitespace (comment) must appear before operator. */ -#line 1093 "scan.c" +#line 1079 "scan.c" #define INITIAL 0 #define xb 1 @@ -1182,19 +1168,23 @@ void core_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *core_yyget_in (yyscan_t yyscanner ); -void core_yyset_in (FILE * in_str ,yyscan_t yyscanner ); +void core_yyset_in (FILE * _in_str ,yyscan_t yyscanner ); FILE *core_yyget_out (yyscan_t yyscanner ); -void core_yyset_out (FILE * out_str ,yyscan_t yyscanner ); +void core_yyset_out (FILE * _out_str ,yyscan_t yyscanner ); -int core_yyget_leng (yyscan_t yyscanner ); + int core_yyget_leng (yyscan_t yyscanner ); char *core_yyget_text (yyscan_t yyscanner ); int core_yyget_lineno (yyscan_t yyscanner ); -void core_yyset_lineno (int line_number ,yyscan_t yyscanner ); +void core_yyset_lineno (int _line_number ,yyscan_t yyscanner ); + +int core_yyget_column (yyscan_t yyscanner ); + +void core_yyset_column (int _column_no ,yyscan_t yyscanner ); YYSTYPE * core_yyget_lval (yyscan_t yyscanner ); @@ -1216,6 +1206,8 @@ extern int core_yywrap (yyscan_t yyscanner ); #endif #endif +#ifndef YY_NO_UNPUT +#endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif @@ -1249,7 +1241,7 @@ static int input (yyscan_t yyscanner ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -1273,7 +1265,7 @@ static int input (yyscan_t yyscanner ); else \ { \ errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -1330,7 +1322,7 @@ extern int core_yylex \ /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK break; +#define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ @@ -1340,16 +1332,11 @@ extern int core_yylex \ */ YY_DECL { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 398 "scan.l" - - -#line 1352 "scan.c" - yylval = yylval_param; yylloc = yylloc_param; @@ -1380,7 +1367,13 @@ YY_DECL core_yy_load_buffer_state(yyscanner ); } - while ( 1 ) /* loops until end-of-file is reached */ + { +#line 398 "scan.l" + + +#line 1377 "scan.c" + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; @@ -1396,7 +1389,7 @@ YY_DECL yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; @@ -1408,7 +1401,7 @@ yy_match: if ( yy_current_state >= 290 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } while ( yy_current_state != 289 ); @@ -2371,7 +2364,7 @@ YY_RULE_SETUP #line 1020 "scan.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2375 "scan.c" +#line 2370 "scan.c" case YY_END_OF_BUFFER: { @@ -2501,6 +2494,7 @@ YY_FATAL_ERROR( "flex scanner jammed" ); "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of core_yylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -2513,9 +2507,9 @@ YY_FATAL_ERROR( "flex scanner jammed" ); static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = yyg->yytext_ptr; - register int number_to_move, i; + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = yyg->yytext_ptr; + yy_size_t number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) @@ -2544,7 +2538,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; + number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -2564,7 +2558,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); @@ -2584,7 +2578,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; + b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -2602,7 +2596,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, (size_t) num_to_read ); + yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } @@ -2626,9 +2620,9 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((int) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) core_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); @@ -2647,15 +2641,15 @@ static int yy_get_next_buffer (yyscan_t yyscanner) static yy_state_type yy_get_previous_state (yyscan_t yyscanner) { - register yy_state_type yy_current_state; - register char *yy_cp; + yy_state_type yy_current_state; + char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_current_state = yyg->yy_start; for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; @@ -2667,7 +2661,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) if ( yy_current_state >= 290 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; @@ -2680,11 +2674,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) { - register int yy_is_jam; + int yy_is_jam; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ - register char *yy_cp = yyg->yy_c_buf_p; + char *yy_cp = yyg->yy_c_buf_p; - register YY_CHAR yy_c = 1; + YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; @@ -2696,12 +2690,17 @@ static int yy_get_next_buffer (yyscan_t yyscanner) if ( yy_current_state >= 290 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_is_jam = (yy_current_state == 289); + (void)yyg; return yy_is_jam ? 0 : yy_current_state; } +#ifndef YY_NO_UNPUT + +#endif + #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner) @@ -2751,7 +2750,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) case EOB_ACT_END_OF_FILE: { if ( core_yywrap(yyscanner ) ) - return EOF; + return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; @@ -2855,7 +2854,7 @@ static void core_yy_load_buffer_state (yyscan_t yyscanner) if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in core_yy_create_buffer()" ); - b->yy_buf_size = size; + b->yy_buf_size = (yy_size_t)size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. @@ -3016,7 +3015,7 @@ static void core_yyensure_buffer_stack (yyscan_t yyscanner) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)core_yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); @@ -3033,7 +3032,7 @@ static void core_yyensure_buffer_stack (yyscan_t yyscanner) if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; + yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)core_yyrealloc @@ -3063,7 +3062,7 @@ YY_BUFFER_STATE core_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yy base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return 0; + return NULL; b = (YY_BUFFER_STATE) core_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) @@ -3072,7 +3071,7 @@ YY_BUFFER_STATE core_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yy b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = 0; + b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; @@ -3095,7 +3094,7 @@ YY_BUFFER_STATE core_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yy YY_BUFFER_STATE core_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) { - return core_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner); + return core_yy_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to core_yylex() will @@ -3110,10 +3109,10 @@ YY_BUFFER_STATE core_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; + n = (yy_size_t) _yybytes_len + 2; buf = (char *) core_yyalloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in core_yy_scan_bytes()" ); @@ -3139,9 +3138,11 @@ YY_BUFFER_STATE core_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , #define YY_EXIT_FAILURE 2 #endif -static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) +static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { - (void) fprintf( stderr, "%s\n", msg ); + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + (void)yyg; + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -3247,51 +3248,51 @@ void core_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) } /** Set the current line number. - * @param line_number + * @param _line_number line number * @param yyscanner The scanner object. */ -void core_yyset_lineno (int line_number , yyscan_t yyscanner) +void core_yyset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "core_yyset_lineno called with no buffer" , yyscanner); + YY_FATAL_ERROR( "core_yyset_lineno called with no buffer" ); - yylineno = line_number; + yylineno = _line_number; } /** Set the current column. - * @param line_number + * @param _column_no column number * @param yyscanner The scanner object. */ -void core_yyset_column (int column_no , yyscan_t yyscanner) +void core_yyset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "core_yyset_column called with no buffer" , yyscanner); + YY_FATAL_ERROR( "core_yyset_column called with no buffer" ); - yycolumn = column_no; + yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. - * @param in_str A readable stream. + * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see core_yy_switch_to_buffer */ -void core_yyset_in (FILE * in_str , yyscan_t yyscanner) +void core_yyset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyin = in_str ; + yyin = _in_str ; } -void core_yyset_out (FILE * out_str , yyscan_t yyscanner) +void core_yyset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyout = out_str ; + yyout = _out_str ; } int core_yyget_debug (yyscan_t yyscanner) @@ -3300,10 +3301,10 @@ int core_yyget_debug (yyscan_t yyscanner) return yy_flex_debug; } -void core_yyset_debug (int bdebug , yyscan_t yyscanner) +void core_yyset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = bdebug ; + yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ @@ -3403,10 +3404,10 @@ static int yy_init_globals (yyscan_t yyscanner) * This function is called from core_yylex_destroy(), so don't allocate here. */ - yyg->yy_buffer_stack = 0; + yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = (char *) 0; + yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; yyg->yy_start = 0; @@ -3419,8 +3420,8 @@ static int yy_init_globals (yyscan_t yyscanner) yyin = stdin; yyout = stdout; #else - yyin = (FILE *) 0; - yyout = (FILE *) 0; + yyin = NULL; + yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by @@ -3466,7 +3467,10 @@ int core_yylex_destroy (yyscan_t yyscanner) #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { - register int i; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + (void)yyg; + + int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } @@ -3475,7 +3479,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yysca #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { - register int n; + int n; for ( n = 0; s[n]; ++n ) ; @@ -3916,6 +3920,13 @@ litbuf_udeescape(unsigned char escape, core_yyscan_t yyscanner) } } + /* unfinished surrogate pair? */ + if (pair_first) + { + ADVANCE_YYLLOC(in - litbuf + 3); /* 3 for U&" */ + yyerror("invalid Unicode surrogate pair"); + } + *out = '\0'; /* diff --git a/src/parser/scan.l b/src/parser/scan.l index 220fcf5d6..a8b92434f 100644 --- a/src/parser/scan.l +++ b/src/parser/scan.l @@ -21,8 +21,8 @@ * Postgres 9.2, this check is made automatically by the Makefile.) * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -1446,6 +1446,13 @@ litbuf_udeescape(unsigned char escape, core_yyscan_t yyscanner) } } + /* unfinished surrogate pair? */ + if (pair_first) + { + ADVANCE_YYLLOC(in - litbuf + 3); /* 3 for U&" */ + yyerror("invalid Unicode surrogate pair"); + } + *out = '\0'; /* diff --git a/src/parser/scansup.c b/src/parser/scansup.c index c1a7c44f5..842d4b41b 100644 --- a/src/parser/scansup.c +++ b/src/parser/scansup.c @@ -4,8 +4,8 @@ * support routines for the lex/flex scanner, used by both the normal * backend as well as the bootstrap backend * - * Portions Copyright (c) 1996-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * diff --git a/src/parser/snprintf.c b/src/parser/snprintf.c index a187632df..5a1c35d50 100644 --- a/src/parser/snprintf.c +++ b/src/parser/snprintf.c @@ -426,7 +426,7 @@ nextch1: goto nextch1; case '*': if (afterstar) - have_non_dollar = true; /* multiple stars */ + have_non_dollar = true; /* multiple stars */ afterstar = true; accum = 0; goto nextch1; diff --git a/src/parser/stringinfo.c b/src/parser/stringinfo.c index e4d76f6a3..817087931 100644 --- a/src/parser/stringinfo.c +++ b/src/parser/stringinfo.c @@ -6,8 +6,8 @@ * It can be used to buffer either ordinary C strings (null-terminated text) * or arbitrary binary data. All storage is allocated with palloc(). * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/backend/lib/stringinfo.c diff --git a/src/parser/value.c b/src/parser/value.c index e38eaae5c..e61be4988 100644 --- a/src/parser/value.c +++ b/src/parser/value.c @@ -4,8 +4,8 @@ * implementation of Value nodes * * - * Portions Copyright (c) 2003-2016, PgPool Global Development Group - * Copyright (c) 2003-2015, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2017, PgPool Global Development Group + * Copyright (c) 2003-2017, PostgreSQL Global Development Group * * * IDENTIFICATION diff --git a/src/parser/wchar.c b/src/parser/wchar.c index 7701c66eb..b0802cd39 100644 --- a/src/parser/wchar.c +++ b/src/parser/wchar.c @@ -187,20 +187,20 @@ pg_euc2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) *to = (SS2 << 8) | *from++; len -= 2; } - else if (*from == SS3 && len >= 3) /* JIS X 0212 KANJI */ + else if (*from == SS3 && len >= 3) /* JIS X 0212 KANJI */ { from++; *to = (SS3 << 16) | (*from++ << 8); *to |= *from++; len -= 3; } - else if (IS_HIGHBIT_SET(*from) && len >= 2) /* JIS X 0208 KANJI */ + else if (IS_HIGHBIT_SET(*from) && len >= 2) /* JIS X 0208 KANJI */ { *to = *from++ << 8; *to |= *from++; len -= 2; } - else /* must be ASCII */ + else /* must be ASCII */ { *to = *from++; len--; @@ -314,14 +314,14 @@ pg_euccn2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) *to |= *from++; len -= 3; } - else if (*from == SS3 && len >= 3) /* code set 3 (unused ?) */ + else if (*from == SS3 && len >= 3) /* code set 3 (unused ?) */ { from++; *to = (SS3 << 16) | (*from++ << 8); *to |= *from++; len -= 3; } - else if (IS_HIGHBIT_SET(*from) && len >= 2) /* code set 1 */ + else if (IS_HIGHBIT_SET(*from) && len >= 2) /* code set 1 */ { *to = *from++ << 8; *to |= *from++; @@ -382,14 +382,14 @@ pg_euctw2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) *to |= *from++; len -= 4; } - else if (*from == SS3 && len >= 3) /* code set 3 (unused?) */ + else if (*from == SS3 && len >= 3) /* code set 3 (unused?) */ { from++; *to = (SS3 << 16) | (*from++ << 8); *to |= *from++; len -= 3; } - else if (IS_HIGHBIT_SET(*from) && len >= 2) /* code set 2 */ + else if (IS_HIGHBIT_SET(*from) && len >= 2) /* code set 2 */ { *to = *from++ << 8; *to |= *from++; @@ -683,7 +683,7 @@ struct mbinterval /* auxiliary function for binary search in interval table */ static int -mbbisearch(pg_wchar ucs, const struct mbinterval * table, int max) +mbbisearch(pg_wchar ucs, const struct mbinterval *table, int max) { int min = 0; int mid; @@ -1086,7 +1086,7 @@ pg_sjis_dsplen(const unsigned char *s) else if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else - len = pg_ascii_dsplen(s); /* should be ASCII */ + len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } @@ -1113,7 +1113,7 @@ pg_big5_dsplen(const unsigned char *s) if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else - len = pg_ascii_dsplen(s); /* should be ASCII */ + len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } @@ -1140,7 +1140,7 @@ pg_gbk_dsplen(const unsigned char *s) if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else - len = pg_ascii_dsplen(s); /* should be ASCII */ + len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } @@ -1167,7 +1167,7 @@ pg_uhc_dsplen(const unsigned char *s) if (IS_HIGHBIT_SET(*s)) len = 2; /* 2byte? */ else - len = pg_ascii_dsplen(s); /* should be ASCII */ + len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } @@ -1197,7 +1197,7 @@ pg_gb18030_dsplen(const unsigned char *s) if (IS_HIGHBIT_SET(*s)) len = 2; else - len = pg_ascii_dsplen(s); /* ASCII */ + len = pg_ascii_dsplen(s); /* ASCII */ return len; } @@ -1259,7 +1259,7 @@ pg_eucjp_verifier(const unsigned char *s, int len) break; default: - if (IS_HIGHBIT_SET(c1)) /* JIS X 0208? */ + if (IS_HIGHBIT_SET(c1)) /* JIS X 0208? */ { l = 2; if (l > len) @@ -1343,7 +1343,7 @@ pg_euctw_verifier(const unsigned char *s, int len) return -1; default: - if (IS_HIGHBIT_SET(c1)) /* CNS 11643 Plane 1 */ + if (IS_HIGHBIT_SET(c1)) /* CNS 11643 Plane 1 */ { l = 2; if (l > len) @@ -1785,7 +1785,7 @@ pg_eucjp_increment(unsigned char *charptr, int length) return false; default: - if (IS_HIGHBIT_SET(c1)) /* JIS X 0208? */ + if (IS_HIGHBIT_SET(c1)) /* JIS X 0208? */ { if (length != 2) return false; @@ -1819,7 +1819,7 @@ pg_eucjp_increment(unsigned char *charptr, int length) return true; } -#endif /* !FRONTEND */ +#endif /* !FRONTEND */ /* @@ -1836,40 +1836,40 @@ const pg_wchar_tbl pg_wchar_table[] = { {pg_euctw2wchar_with_len, pg_wchar2euc_with_len, pg_euctw_mblen, pg_euctw_dsplen, pg_euctw_verifier, 4}, /* PG_EUC_TW */ {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifier, 3}, /* PG_EUC_JIS_2004 */ {pg_utf2wchar_with_len, pg_wchar2utf_with_len, pg_utf_mblen, pg_utf_dsplen, pg_utf8_verifier, 4}, /* PG_UTF8 */ - {pg_mule2wchar_with_len, pg_wchar2mule_with_len, pg_mule_mblen, pg_mule_dsplen, pg_mule_verifier, 4}, /* PG_MULE_INTERNAL */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN1 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN2 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN3 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN4 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN5 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN6 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN7 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN8 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN9 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN10 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1256 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1258 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN866 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN874 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_KOI8R */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1251 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1252 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-5 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-6 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-7 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-8 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1250 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1253 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1254 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1255 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1257 */ - {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_KOI8U */ + {pg_mule2wchar_with_len, pg_wchar2mule_with_len, pg_mule_mblen, pg_mule_dsplen, pg_mule_verifier, 4}, /* PG_MULE_INTERNAL */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN1 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN2 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN3 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN4 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN5 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN6 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN7 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN8 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN9 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN10 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1256 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1258 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN866 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN874 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_KOI8R */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1251 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1252 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-5 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-6 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-7 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-8 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1250 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1253 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1254 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1255 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1257 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_KOI8U */ {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifier, 2}, /* PG_SJIS */ {0, 0, pg_big5_mblen, pg_big5_dsplen, pg_big5_verifier, 2}, /* PG_BIG5 */ {0, 0, pg_gbk_mblen, pg_gbk_dsplen, pg_gbk_verifier, 2}, /* PG_GBK */ {0, 0, pg_uhc_mblen, pg_uhc_dsplen, pg_uhc_verifier, 2}, /* PG_UHC */ - {0, 0, pg_gb18030_mblen, pg_gb18030_dsplen, pg_gb18030_verifier, 4}, /* PG_GB18030 */ - {0, 0, pg_johab_mblen, pg_johab_dsplen, pg_johab_verifier, 3}, /* PG_JOHAB */ + {0, 0, pg_gb18030_mblen, pg_gb18030_dsplen, pg_gb18030_verifier, 4}, /* PG_GB18030 */ + {0, 0, pg_johab_mblen, pg_johab_dsplen, pg_johab_verifier, 3}, /* PG_JOHAB */ {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifier, 2} /* PG_SHIFT_JIS_2004 */ }; @@ -1887,8 +1887,8 @@ int pg_encoding_mblen(int encoding, const char *mbstr) { return (PG_VALID_ENCODING(encoding) ? - ((*pg_wchar_table[encoding].mblen) ((const unsigned char *) mbstr)) : - ((*pg_wchar_table[PG_SQL_ASCII].mblen) ((const unsigned char *) mbstr))); + ((*pg_wchar_table[encoding].mblen) ((const unsigned char *) mbstr)) : + ((*pg_wchar_table[PG_SQL_ASCII].mblen) ((const unsigned char *) mbstr))); } /* @@ -1898,8 +1898,8 @@ int pg_encoding_dsplen(int encoding, const char *mbstr) { return (PG_VALID_ENCODING(encoding) ? - ((*pg_wchar_table[encoding].dsplen) ((const unsigned char *) mbstr)) : - ((*pg_wchar_table[PG_SQL_ASCII].dsplen) ((const unsigned char *) mbstr))); + ((*pg_wchar_table[encoding].dsplen) ((const unsigned char *) mbstr)) : + ((*pg_wchar_table[PG_SQL_ASCII].dsplen) ((const unsigned char *) mbstr))); } /* @@ -2153,4 +2153,4 @@ report_untranslatable_char(int src_encoding, int dest_encoding, pg_enc2name_tbl[dest_encoding].name))); } -#endif /* !FRONTEND */ +#endif /* !FRONTEND */ diff --git a/src/protocol/pool_process_query.c b/src/protocol/pool_process_query.c index d8e491d27..a523cc947 100644 --- a/src/protocol/pool_process_query.c +++ b/src/protocol/pool_process_query.c @@ -458,13 +458,13 @@ void wait_for_query_response_with_trans_cleanup(POOL_CONNECTION *frontend, POOL_ { /* Cancel current transaction */ CancelPacket cancel_packet; - + cancel_packet.protoVersion = htonl(PROTO_CANCEL); cancel_packet.pid = pid; cancel_packet.key= key; cancel_request(&cancel_packet); } - + PG_RE_THROW(); } PG_END_TRY(); @@ -580,7 +580,7 @@ POOL_STATUS send_extended_protocol_message(POOL_CONNECTION_POOL *backend, } else pool_flush(cp); - + return POOL_CONTINUE; } @@ -626,7 +626,7 @@ int pool_check_fd(POOL_CONNECTION *cp) { return 0; } - + fd = cp->fd; if (timeoutsec >= 0) @@ -659,7 +659,7 @@ int pool_check_fd(POOL_CONNECTION *cp) if (errno == EAGAIN || errno == EINTR) continue; - + ereport(WARNING, (errmsg("waiting for reading data. select failed with error: \"%s\"", strerror(errno)))); break; @@ -940,7 +940,7 @@ POOL_STATUS ParameterStatus(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *bac ereport(ERROR, (errmsg("unable to process parameter status"), errdetail("could not read from backend"))); - + name = p; value = p + strlen(name) + 1; ereport(DEBUG1, @@ -1066,7 +1066,7 @@ static int */ session_context->query_context->temp_cache = NULL; } - + return 1; } @@ -1410,7 +1410,7 @@ POOL_STATUS do_command(POOL_CONNECTION *frontend, POOL_CONNECTION *backend, int deadlock_detected = 0; ereport(DEBUG1, (errmsg("do_command: Query:\"%s\"", query))); - + /* send the query to the backend */ send_simplequery_message(backend, strlen(query)+1, query, protoMajor); @@ -1466,7 +1466,7 @@ POOL_STATUS do_command(POOL_CONNECTION *frontend, POOL_CONNECTION *backend, ereport(ERROR, (errmsg("do command failed"), errdetail("kind is not N, E, S, C or A(%02x)", kind))); - + } string = pool_read2(backend, len); if (string == NULL) @@ -1595,7 +1595,7 @@ retry_read_packet: pool_read(backend, &kind, sizeof(kind)); /* set transaction state */ - + backend->tstate = kind; ereport(DEBUG2, @@ -2260,13 +2260,13 @@ void do_query(POOL_CONNECTION *backend, char *query, POOL_SELECT_RESULT **result if (major == PROTO_MAJOR_V2) { nbytes = (num_fields + 7)/8; - + if (nbytes <= 0) ereport(ERROR, (errmsg("do query failed"), errdetail("error while reading null bitmap"))); - + pool_read(backend, nullmap, nbytes); } @@ -2476,9 +2476,9 @@ int need_insert_lock(POOL_CONNECTION_POOL *backend, char *query, Node *node) * 1: Issue LOCK TABLE IN SHARE ROW EXCLUSIVE MODE * 2: Issue row lock against sequence table * 3: Issue row lock against pgpool_catalog.insert_lock table - * "lock_kind == 2" is deprecated because PostgreSQL disallows + * "lock_kind == 2" is deprecated because PostgreSQL disallows * SELECT FOR UPDATE/SHARE on sequence tables since 2011/06/03. - * See following threads for more details: + * See following threads for more details: * [HACKERS] pgpool versus sequences * [ADMIN] 'SGT DETAIL: Could not open file "pg_clog/05DC": ... */ @@ -2720,7 +2720,7 @@ POOL_STATUS insert_lock(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend } else { - status = do_command(frontend, CONNECTION(backend, i), qbuf, PROTO_MAJOR_V3, + status = do_command(frontend, CONNECTION(backend, i), qbuf, PROTO_MAJOR_V3, MASTER_CONNECTION(backend)->pid, MASTER_CONNECTION(backend)->key, 0); } } @@ -3104,7 +3104,7 @@ static bool is_all_slaves_command_complete(unsigned char *kind_list, int num_bac } return ok; } - + /* * read_kind_from_backend: read kind from backends. * the "frontend" parameter is used to send "kind mismatch" error message to the frontend. @@ -3218,7 +3218,7 @@ void read_kind_from_backend(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *bac if (kind == 'A') { *decided_kind = 'A'; - + ereport(DEBUG1, (errmsg("reading backend data packet kind"), errdetail("received notification message for master node %d", @@ -3548,7 +3548,7 @@ void read_kind_from_backend(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *bac { string_append_char(msg, "unknown message]"); } - + /* * If the error was caused by DEALLOCATE then print original query */ @@ -3562,7 +3562,7 @@ void read_kind_from_backend(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *bac if (parse_tree_list != NIL) { - node = (Node *) lfirst(list_head(parse_tree_list)); + node = raw_parser2(parse_tree_list); if (IsA(node, DeallocateStmt)) { @@ -3900,7 +3900,7 @@ POOL_STATUS start_internal_transaction(POOL_CONNECTION *frontend, POOL_CONNECTIO { per_node_statement_log(backend, i, "BEGIN"); - if (do_command(frontend, CONNECTION(backend, i), "BEGIN", MAJOR(backend), + if (do_command(frontend, CONNECTION(backend, i), "BEGIN", MAJOR(backend), MASTER_CONNECTION(backend)->pid, MASTER_CONNECTION(backend)->key, 0) != POOL_CONTINUE) ereport(ERROR, (errmsg("unable to start the internal transaction"), @@ -3966,7 +3966,7 @@ POOL_STATUS end_internal_transaction(POOL_CONNECTION *frontend, POOL_CONNECTION_ PG_RE_THROW(); } PG_END_TRY(); - + INTERNAL_TRANSACTION_STARTED(backend, i) = false; } } @@ -4302,9 +4302,9 @@ static bool pool_process_notice_message_from_one_backend(POOL_CONNECTION *fronte * * If "unread" is true, the packet will be returned to the stream. * - * Return values are: - * 0: not error or notice message - * 1: succeeded to extract error message + * Return values are: + * 0: not error or notice message + * 1: succeeded to extract error message * -1: error) */ int pool_extract_error_message(bool read_kind, POOL_CONNECTION *backend, int major, bool unread, char **message) @@ -4425,7 +4425,7 @@ POOL_STATUS pool_discard_packet(POOL_CONNECTION_POOL *cp) backend = CONNECTION(cp, i); pool_read(backend, &kind, sizeof(kind)); - + ereport(DEBUG2, (errmsg("pool_discard_packet: kind: %c", kind))); } @@ -4695,7 +4695,7 @@ pool_config->client_idle_limit))); * This could happen after detecting backend errors and before actually * detaching the backend. In this case reading from backend socket will * return EOF and it's better to close this session. So returns POOL_END. - */ + */ ereport(LOG, (errmsg("unable to read and process data"), errdetail("detect_postmaster_down_error returns error on backend %d. Going to close this session.", i))); @@ -4717,7 +4717,7 @@ pool_config->client_idle_limit))); ereport(ERROR, (errmsg("unable to read from frontend socket"), errdetail("exception occured on frontend socket"))); - + else if (FD_ISSET(frontend->fd, &readmask)) { status = ProcessFrontendResponse(frontend, backend); diff --git a/src/protocol/pool_proto_modules.c b/src/protocol/pool_proto_modules.c index dd8bf5dc0..97ed6c9ab 100644 --- a/src/protocol/pool_proto_modules.c +++ b/src/protocol/pool_proto_modules.c @@ -1,8 +1,8 @@ /* -*-pgsql-c-*- */ /* * $Header$ - * - * pgpool: a language independent connection pool server for PostgreSQL + * + * pgpool: a language independent connection pool server for PostgreSQL * written by Tatsuo Ishii * * Copyright (c) 2003-2017 PgPool Global Development Group @@ -215,9 +215,9 @@ POOL_STATUS SimpleQuery(POOL_CONNECTION *frontend, * do not use cache. Of course we could analyze the SELECT to see * if it uses the table modified in the transaction, but it will * need parsing query and accessing to system catalog, which will - * add significant overhead. Moreover if we are in aborted + * add significant overhead. Moreover if we are in aborted * transaction, commands should be ignored, so we should not use - * query cache. + * query cache. */ if (pool_config->memory_cache_enabled && is_likely_select && !pool_is_writing_transaction() && @@ -289,11 +289,8 @@ POOL_STATUS SimpleQuery(POOL_CONNECTION *frontend, if (parse_tree_list != NIL) { - /* - * XXX: Currently we only process the first element of the parse tree. - * rest of multiple statements are silently discarded. - */ - node = (Node *) lfirst(list_head(parse_tree_list)); + node = raw_parser2(parse_tree_list); + /* * Start query context */ @@ -435,7 +432,7 @@ POOL_STATUS SimpleQuery(POOL_CONNECTION *frontend, /* * If the table is to be cached, set is_cache_safe TRUE and register table oids. - */ + */ if (pool_config->memory_cache_enabled && query_context->is_multi_statement == false) { bool is_select_query = false; @@ -760,7 +757,7 @@ POOL_STATUS Execute(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend, search_query = MemoryContextStrdup(query_context->memory_context,query); ereport(DEBUG1,(errmsg("Execute: checkig cache fetch condition"))); - + /* * Add bind message's info to query to search. */ @@ -799,7 +796,7 @@ POOL_STATUS Execute(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend, * So overwrite the query text in temp cache to the one with the hex of bind message. * If not, md5 hash will be created by the query text without bind message, and * it will happen to find cache never or to get a wrong result. - * + * * However, It is possible that temp_cache does not exist. * Consider following scenario: * - In the previous execute cache is overflowed, and @@ -830,7 +827,7 @@ POOL_STATUS Execute(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend, #ifdef DEBUG stop_now = true; #endif - + if (!SL_MODE || !pool_is_doing_extended_query_message()) { pool_set_skip_reading_from_backends(); @@ -887,7 +884,7 @@ POOL_STATUS Execute(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend, { pool_extended_send_and_wait(query_context, "E", len, contents, -1, MASTER_NODE_ID, false); } - + /* send "COMMIT" or "ROLLBACK" to only master node if query is "COMMIT" or "ROLLBACK" */ if (commit) { @@ -1018,7 +1015,7 @@ POOL_STATUS Parse(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend, /* Save last query string for logging purpose */ snprintf(query_string_buffer, sizeof(query_string_buffer), "Parse: %s", stmt); - node = (Node *) lfirst(list_head(parse_tree_list)); + node = raw_parser2(parse_tree_list); /* If replication mode, check to see what kind of insert lock is * neccessary. @@ -1200,7 +1197,7 @@ POOL_STATUS Parse(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend, ereport(ERROR, (errmsg("unable to parse the query"), errdetail("unable to get insert lock"))); - + } } @@ -1239,15 +1236,15 @@ POOL_STATUS Parse(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend, pool_start_query(error_qc, POOL_ERROR_QUERY, strlen(POOL_ERROR_QUERY) + 1, node); pool_copy_prep_where(query_context->where_to_send, error_qc->where_to_send); - + ereport(LOG, (errmsg("Parse: received deadlock error message from master node"))); pool_send_and_wait(error_qc, -1, MASTER_NODE_ID); pool_query_context_destroy(error_qc); - - + + pool_set_query_in_progress(); session_context->query_context = query_context; } @@ -1428,7 +1425,7 @@ POOL_STATUS Bind(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend, pool_pending_message_add(pmsg); pool_pending_message_free_pending_message(pmsg); } - + if(rewrite_msg) pfree(rewrite_msg); return POOL_CONTINUE; @@ -1538,7 +1535,7 @@ POOL_STATUS Close(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend, ereport(FATAL, (return_code(2), errmsg("unable to execute close, invalid message"))); - /* + /* * As per the postgresql, calling close on non existing portals or * statements is not an error. So on the same footings we will ignore all * such calls and return the close complete message to clients with out @@ -1610,7 +1607,7 @@ POOL_STATUS Close(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend, if (session_context->load_balance_node_id != PRIMARY_NODE_ID) { /* Restore where_to_send map */ - memcpy(query_context->where_to_send, where_to_send_save, sizeof(where_to_send_save)); + memcpy(query_context->where_to_send, where_to_send_save, sizeof(where_to_send_save)); } #ifdef NOT_USED @@ -1952,7 +1949,7 @@ static POOL_STATUS close_standby_transactions(POOL_CONNECTION *frontend, (MASTER_SLAVE ? PRIMARY_NODE_ID : REAL_MASTER_NODE_ID) != i) { per_node_statement_log(backend, i, "COMMIT"); - if (do_command(frontend, CONNECTION(backend, i), "COMMIT", MAJOR(backend), + if (do_command(frontend, CONNECTION(backend, i), "COMMIT", MAJOR(backend), MASTER_CONNECTION(backend)->pid, MASTER_CONNECTION(backend)->key, 0) != POOL_CONTINUE) ereport(ERROR, @@ -2060,7 +2057,7 @@ POOL_STATUS CloseComplete(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backe (errmsg("processing CloseComplete, uncompleted message not found"))); } } - + if (kind != ' ') { pool_remove_sent_message(kind, name); @@ -2346,7 +2343,7 @@ POOL_STATUS ProcessFrontendResponse(POOL_CONNECTION *frontend, contents = palloc(1); memcpy(contents, "", 1); } - + switch (fkind) { POOL_QUERY_CONTEXT *query_context; @@ -2433,7 +2430,7 @@ POOL_STATUS ProcessFrontendResponse(POOL_CONNECTION *frontend, MemoryContext old_context = MemoryContextSwitchTo(query_context->memory_context); parse_tree_list = raw_parser(query, &error); - node = (Node *) lfirst(list_head(parse_tree_list)); + node = raw_parser2(parse_tree_list); pool_start_query(query_context, query, strlen(query) + 1, node); MemoryContextSwitchTo(old_context); @@ -2602,7 +2599,7 @@ POOL_STATUS ProcessBackendResponse(POOL_CONNECTION *frontend, (errmsg("processing backend response"), errdetail("do not forward close complete message to frontend"))); pool_discard_packet_contents(backend); - + /* Remove pending message here because * read_kind_from_backend() did not do it. */ @@ -2636,7 +2633,7 @@ POOL_STATUS ProcessBackendResponse(POOL_CONNECTION *frontend, } break; - case 'C': /* CommandComplete */ + case 'C': /* CommandComplete */ status = CommandComplete(frontend, backend, true); pool_set_command_success(); if (pool_is_doing_extended_query_message()) @@ -2937,7 +2934,7 @@ POOL_STATUS CopyDataRows(POOL_CONNECTION *frontend, } /* - * This function raises intentional error to make backends the same + * This function raises intentional error to make backends the same * transaction state. */ void raise_intentional_error_if_need(POOL_CONNECTION_POOL *backend) @@ -3013,10 +3010,10 @@ void raise_intentional_error_if_need(POOL_CONNECTION_POOL *backend) } /* - * Check various errors from backend. return values: - * 0: no error - * 1: deadlock detected - * 2: serialization error detected + * Check various errors from backend. return values: + * 0: no error + * 1: deadlock detected + * 2: serialization error detected * 3: query cancel * detected: 4 */ @@ -3263,7 +3260,7 @@ static POOL_STATUS parse_before_bind(POOL_CONNECTION *frontend, break; } } - + if (!SL_MODE && parse_was_sent) { while (kind != '1') @@ -3438,17 +3435,17 @@ flatten_set_variable_args(const char *name, List *args) if (l != list_head(args)) appendStringInfoString(&buf, ", "); - + if (IsA(arg, TypeCast)) { TypeCast *tc = (TypeCast *) arg; arg = tc->arg; } - + if (!IsA(arg, A_Const)) elog(ERROR, "unrecognized node type: %d", (int) nodeTag(arg)); con = (A_Const *) arg; - + switch (nodeTag(&con->val)) { case T_Integer: @@ -3468,7 +3465,7 @@ flatten_set_variable_args(const char *name, List *args) break; } } - + return buf.data; } @@ -3541,7 +3538,7 @@ static void pool_discard_except_sync_and_ready_for_query(POOL_CONNECTION *fronte char kind; int len; POOL_PENDING_MESSAGE *msg; - char *contents; + char *contents = NULL; for(;;) { @@ -3659,7 +3656,7 @@ void pool_at_command_success(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *ba } query = pool_get_query_string(); - + if (query == NULL) { ereport(ERROR, diff --git a/src/rewrite/pool_timestamp.c b/src/rewrite/pool_timestamp.c index 2913b4eb4..cf975a656 100644 --- a/src/rewrite/pool_timestamp.c +++ b/src/rewrite/pool_timestamp.c @@ -65,6 +65,7 @@ static bool rewrite_timestamp_insert(InsertStmt *i_stmt, TSRewriteContext *ctx); static bool rewrite_timestamp_update(UpdateStmt *u_stmt, TSRewriteContext *ctx); static char *get_current_timestamp(POOL_CONNECTION_POOL *backend); static Node *makeTsExpr(TSRewriteContext *ctx); +static TypeCast *makeTypeCastFromSvfOp(SQLValueFunctionOp op); static A_Const *makeStringConstFromQuery(POOL_CONNECTION_POOL *backend, char *expression); bool raw_expression_tree_walker(Node *node, bool (*walker) (), void *context); @@ -291,7 +292,7 @@ rewrite_timestamp_walker(Node *node, void *context) rewrite_timestamp_insert(i_stmt, ctx); ctx->relname = relname_old; } - /* tree walker is called in rewrite_timestamp_insert() */ + /* tree walker is called in rewrite_timestamp_insert() */ return false; case T_UpdateStmt: { @@ -304,7 +305,7 @@ rewrite_timestamp_walker(Node *node, void *context) rewrite_timestamp_update(u_stmt, ctx); ctx->relname = relname_old; } - /* tree walker is called in rewrite_timestamp_update() */ + /* tree walker is called in rewrite_timestamp_update() */ return false; case T_FuncCall: { @@ -320,17 +321,61 @@ rewrite_timestamp_walker(Node *node, void *context) TypeCast *tc = makeNode(TypeCast); tc->arg = makeTsExpr(ctx); tc->typeName = SystemTypeName("text"); - + fcall->funcname = SystemFuncName("timestamptz"); fcall->args = list_make1(tc); ctx->rewrite = true; } } break; + case T_SQLValueFunction: + { + + /* CURRENT_DATE, CURRENT_TIME, LOCALTIMESTAMP, LOCALTIME etc. + * From PostgreSQL 10, timestamp conversion is changed and + * SQLValueFunction is added. But Pgpool-II should use + * the old timestamp translate like "'now'::text::date". + * So we have to cast the node to TypeCast first. + */ + SQLValueFunction *svf = (SQLValueFunction *) node; + + if (svf->op == SVFOP_CURRENT_DATE || + svf->op == SVFOP_CURRENT_TIME || + svf->op == SVFOP_CURRENT_TIME_N || + svf->op == SVFOP_CURRENT_TIMESTAMP || + svf->op == SVFOP_CURRENT_TIMESTAMP_N || + svf->op == SVFOP_LOCALTIME || + svf->op == SVFOP_LOCALTIME_N || + svf->op == SVFOP_LOCALTIMESTAMP || + svf->op == SVFOP_LOCALTIMESTAMP_N) + { + + TypeCast *tc, *tc1; + + tc1 = makeTypeCastFromSvfOp(svf->op); + + tc = (TypeCast *) node; + tc->arg = tc1->arg; + tc->typeName = (TypeName *)copyObject(tc1->typeName); + tc->location = -1; + + node->type = T_TypeCast; + + /* rewrite `'now'::timestamp' and `'now'::text::timestamp' both */ + if (isSystemTypeCast(tc->arg, "text")) + tc = (TypeCast *) tc->arg; + + if (isStringConst(tc->arg, "now")) + { + tc->arg = (Node *) makeTsExpr(ctx); + ctx->rewrite = true; + } + } + } + break; case T_TypeCast: { - /* CURRENT_DATE, CURRENT_TIME, LOCALTIMESTAMP, LOCALTIME etc.*/ - TypeCast *tc = (TypeCast *) node; + TypeCast *tc = (TypeCast *) node; if ((isSystemType((Node *) tc->typeName, "date") || isSystemType((Node *) tc->typeName, "timestamp") || @@ -1006,6 +1051,69 @@ static A_Const *makeStringConstFromQuery(POOL_CONNECTION_POOL *backend, char *ex return con; } +static TypeCast * +makeTypeCastFromSvfOp(SQLValueFunctionOp op) +{ + TypeName *typename; + Node *n; + int location; + + switch (op) + { + case SVFOP_CURRENT_DATE: + typename = SystemTypeName("date"); + location = 0; + break; + case SVFOP_CURRENT_TIME: + typename = SystemTypeName("timetz"); + location = 0; + break; + case SVFOP_CURRENT_TIME_N: + typename = SystemTypeName("timetz"); + typename->typmods = lcons(makeIntConst(0, 0), NIL); + location = -3; + break; + case SVFOP_CURRENT_TIMESTAMP: + typename = SystemTypeName("timestamptz"); + location = 0; + break; + case SVFOP_CURRENT_TIMESTAMP_N: + typename = SystemTypeName("timestamptz"); + typename->typmods = lcons(makeIntConst(0, 0), NIL); + location = -3; + break; + case SVFOP_LOCALTIME: + typename = SystemTypeName("time"); + location = 0; + break; + case SVFOP_LOCALTIME_N: + typename = SystemTypeName("time"); + typename->typmods = lcons(makeIntConst(0, 0), NIL); + location = -3; + break; + case SVFOP_LOCALTIMESTAMP: + typename = SystemTypeName("timestamp"); + location = 0; + break; + case SVFOP_LOCALTIMESTAMP_N: + typename = SystemTypeName("timestamp");; + typename->typmods = lcons(makeIntConst(0, 0), NIL); + location = -3; + break; + case SVFOP_CURRENT_ROLE: + case SVFOP_CURRENT_USER: + case SVFOP_USER: + case SVFOP_SESSION_USER: + case SVFOP_CURRENT_CATALOG: + case SVFOP_CURRENT_SCHEMA: + break; + } + + n = makeStringConstCast("now", -1, SystemTypeName("text")); + + return (TypeCast *) makeTypeCast(n, typename, location); +} + /* from nodeFuncs.c start */ /* diff --git a/src/test/regression/tests/010.rewrite_timestamp/timestamp/expected/insert.out b/src/test/regression/tests/010.rewrite_timestamp/timestamp/expected/insert.out index f666a5f30..161315fcf 100644 --- a/src/test/regression/tests/010.rewrite_timestamp/timestamp/expected/insert.out +++ b/src/test/regression/tests/010.rewrite_timestamp/timestamp/expected/insert.out @@ -2,7 +2,7 @@ INSERT INTO "rel1" VALUES (DEFAULT,'2009-01-01 23:59:59.123456+09',DEFAULT,'2009 INSERT INTO rel2 DEFAULT VALUES INSERT INTO rel2(c1) VALUES(1) INSERT INTO "rel1" VALUES (1,"pg_catalog"."timestamptz"('2009-01-01 23:59:59.123456+09'::text),2,'2009-01-01 23:59:59.123456+09'::text::date) -INSERT INTO "rel1" VALUES (3,"pg_catalog"."timestamptz"('2009-01-01 23:59:59.123456+09'::text),4,'2009-01-01 23:59:59.123456+09'::text::timetz) +INSERT INTO "rel1" VALUES (3,'2009-01-01 23:59:59.123456+09'::text::timestamptz,4,'2009-01-01 23:59:59.123456+09'::text::timetz) INSERT INTO "rel1" VALUES (5,'2009-01-01 23:59:59.123456+09'::text::timestamptz(0),6,'2009-01-01 23:59:59.123456+09'::text::timetz(0)) INSERT INTO "rel1" VALUES (7,'2009-01-01 23:59:59.123456+09'::text::timestamp,8,'2009-01-01 23:59:59.123456+09'::text::time) INSERT INTO "rel1" VALUES (9,'2009-01-01 23:59:59.123456+09'::text::timestamp(0),10,'2009-01-01 23:59:59.123456+09'::text::time(0)) diff --git a/src/test/regression/tests/010.rewrite_timestamp/timestamp/expected/update.out b/src/test/regression/tests/010.rewrite_timestamp/timestamp/expected/update.out index d14c8cef9..f1d68fa4c 100644 --- a/src/test/regression/tests/010.rewrite_timestamp/timestamp/expected/update.out +++ b/src/test/regression/tests/010.rewrite_timestamp/timestamp/expected/update.out @@ -1,6 +1,6 @@ UPDATE "rel1" SET "c1" = DEFAULT, "c2" = '2009-01-01 23:59:59.123456+09' UPDATE rel2 SET c1 = DEFAULT, c2 = DEFAULT UPDATE "rel1" SET "c1" = "pg_catalog"."timestamptz"('2009-01-01 23:59:59.123456+09'::text), "c2" = '2009-01-01 23:59:59.123456+09'::text::date -UPDATE "rel1" SET "c3" = "pg_catalog"."timestamptz"('2009-01-01 23:59:59.123456+09'::text), "c4" = '2009-01-01 23:59:59.123456+09'::text::timetz +UPDATE "rel1" SET ("c3", "c4") = ('2009-01-01 23:59:59.123456+09'::text::timestamptz,'2009-01-01 23:59:59.123456+09'::text::timetz) UPDATE "rel1" SET "c1" = '2009-01-01 23:59:59.123456+09'::text::timestamp, "c2" = '2009-01-01 23:59:59.123456+09'::text::time PREPARE "q" (int4,timestamptz) AS UPDATE "rel1" SET "c1" = $1, "c2" = $2::text::date diff --git a/src/test/regression/tests/010.rewrite_timestamp/timestamp/main.c b/src/test/regression/tests/010.rewrite_timestamp/timestamp/main.c index e62060fc9..a990db777 100644 --- a/src/test/regression/tests/010.rewrite_timestamp/timestamp/main.c +++ b/src/test/regression/tests/010.rewrite_timestamp/timestamp/main.c @@ -138,7 +138,7 @@ main(int argc, char **argv) msg.num_tsparams = 0; msg.query_context = &ctx; Node *node = (Node *) lfirst(l); - query = rewrite_timestamp(&backend, node, false, &msg); + query = rewrite_timestamp(&backend, ((RawStmt *) node)->stmt, false, &msg); if (query) printf("%s\n", query); else diff --git a/src/test/regression/tests/010.rewrite_timestamp/timestamp/run-test b/src/test/regression/tests/010.rewrite_timestamp/timestamp/run-test index 215195901..9b1a6e293 100755 --- a/src/test/regression/tests/010.rewrite_timestamp/timestamp/run-test +++ b/src/test/regression/tests/010.rewrite_timestamp/timestamp/run-test @@ -51,7 +51,7 @@ begin test_sql.chomp! system("#{TEST_PROGRAM} \"#{escape_string(test_sql)}\" >> #{RESULT_DIRECTORY}/#{testcase}.out\n") end - + system("diff -c #{EXPECTED_DIRECTORY}/#{testcase}.out #{RESULT_DIRECTORY}/#{testcase}.out >> #{DIFF_FILE}") if ($? == 0) @@ -66,4 +66,4 @@ begin rescue STDERR.puts "NG" -end +end -- 2.39.5